{"openapi":"3.1.0","info":{"title":"API Reference","version":"1.0.0"},"paths":{"/brand-terms/":{"post":{"operationId":"brandTerms_importTerminology","summary":"Import terminology from CSV or ACTIF XML","description":"Uploads a CSV or ACTIF XML file and imports terminology.\n\n**CSV Format Requirements:**\n- CSV must include columns: Prohibited, Preferred, Context, Context Polarity, Domains\n- The first row must contain the column headers in the exact same order as shown above\n- Context Polarity accepts 'include', 'exclude', or an empty value. 'include' means the context describes when the term rule applies; 'exclude' means the context describes when the term rule does NOT apply; an empty value means no polarity is set.\n- Multiple values within a single cell should be separated by semicolons with a space (e.g., term1; term2; term3)\n- Empty cells are allowed\n- The CSV import format is the same as the CSV export format.","tags":["brandTerms"],"parameters":[{"name":"delete_existing","in":"query","description":"Delete all existing terms, term sets and domains before importing","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportSummary"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"CSV or ACTIF XML file containing terminology data"}},"required":["file"]}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/csv":{"get":{"operationId":"brandTerms_exportTerminologyCsv","summary":"Export terminology to CSV","description":"Exports all term sets, terms and domains to CSV. The exported CSV follows the same format as the CSV import.","tags":["brandTerms"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/actif":{"get":{"operationId":"brandTerms_exportTerminologyActif","summary":"Export terminology to ACTIF","description":"Exports all term sets, terms and domains to ACTIF. The exported ACTIF follows the same format as the ACTIF import.","tags":["brandTerms"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/search":{"get":{"operationId":"brandTerms_searchTerminology","summary":"Search Terminology","description":"Searches the text for relevant terminology and returns matched term sets.\n\nTerm sets are matched if any word sequence (up to 5 words) in the text is similar to one of the terms of the term set.\nThe similarity measure used is a trigram similarity of 0.5 or higher between the word sequence and the term.","tags":["brandTerms"],"parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string"}},{"name":"domain_ids","in":"query","description":"Optional domain filter","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminologySearchResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/term-sets":{"get":{"operationId":"brandTerms_listTermSets","summary":"List Term Sets","description":"Get a pageable list of term sets with all their associated terms and domains.\n\nThe search filter searches the term set context and term text fields.","tags":["brandTerms"],"parameters":[{"name":"page","in":"query","description":"Page number (1-based)","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"page_size","in":"query","description":"Number of items per page","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"search_term","in":"query","description":"Optional search term to filter term sets","required":false,"schema":{"type":["string","null"]}},{"name":"domain_ids","in":"query","description":"Optional domain filter (any of these domains)","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"has_context","in":"query","description":"Filter by whether the term set has non-empty context. True returns only rules with conditional/contextual context; False returns only rules that apply universally.","required":false,"schema":{"type":["boolean","null"]}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedTermSetsResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"operationId":"brandTerms_createTermSet","summary":"Create Term Set","description":"Create a new term set. Terms and domains are linked to term sets.\nThe term set context text will be used to determine whether a term should be flagged in the text and what the term replacement should be.","tags":["brandTerms"],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermSetResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermSetCreateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/term-sets/{term_set_id}":{"get":{"operationId":"brandTerms_getTermSet","summary":"Get Term Set","tags":["brandTerms"],"parameters":[{"name":"term_set_id","in":"path","description":"UUID of the term set","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermSetWithTerms"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"brandTerms_deleteTermSet","summary":"Delete Term Set","tags":["brandTerms"],"parameters":[{"name":"term_set_id","in":"path","description":"UUID of the term set","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"operationId":"brandTerms_updateTermSet","summary":"Update Term Set","tags":["brandTerms"],"parameters":[{"name":"term_set_id","in":"path","description":"UUID of the term set","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermSetResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermSetUpdateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/term-sets/{term_set_id}/terms":{"post":{"operationId":"brandTerms_createTerm","summary":"Create Term","description":"Create terms that should be matched in the text. The term types are:\n\n* **preferred**: this is the preferred term for the associated term set\n* **prohibited**: this term should not be used to talk about the term set","tags":["brandTerms"],"parameters":[{"name":"term_set_id","in":"path","description":"UUID of the term set","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermCreateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/term-sets/{term_set_id}/terms/{term_id}":{"get":{"operationId":"brandTerms_getTerm","summary":"Get Term","tags":["brandTerms"],"parameters":[{"name":"term_set_id","in":"path","description":"UUID of the term set","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"term_id","in":"path","description":"UUID of the term","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"operationId":"brandTerms_updateTerm","summary":"Update Term","tags":["brandTerms"],"parameters":[{"name":"term_set_id","in":"path","description":"UUID of the term set","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"term_id","in":"path","description":"UUID of the term","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermUpdateRequest"}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"brandTerms_deleteTerm","summary":"Delete Term","tags":["brandTerms"],"parameters":[{"name":"term_set_id","in":"path","description":"UUID of the term set","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"term_id","in":"path","description":"UUID of the term","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/domains":{"get":{"operationId":"brandTerms_listDomains","summary":"List Domains","tags":["brandTerms"],"parameters":[{"name":"page","in":"query","description":"Page number (1-based)","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"page_size","in":"query","description":"Number of items per page","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"search","in":"query","description":"Optional name filter","required":false,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedDomainsResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"operationId":"brandTerms_createDomain","summary":"Create Domain","tags":["brandTerms"],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainCreateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/brand-terms/domains/{domain_id}":{"get":{"operationId":"brandTerms_getDomain","summary":"Get Domain","tags":["brandTerms"],"parameters":[{"name":"domain_id","in":"path","description":"UUID of the domain","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"brandTerms_deleteDomain","summary":"Delete Domain","tags":["brandTerms"],"parameters":[{"name":"domain_id","in":"path","description":"UUID of the domain","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"operationId":"brandTerms_updateDomain","summary":"Update Domain","tags":["brandTerms"],"parameters":[{"name":"domain_id","in":"path","description":"UUID of the domain","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainUpdateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/config":{"get":{"operationId":"styleAgent_getStyleAgentConfig","summary":"Get Style Agent Config","tags":["styleAgent"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationConfigResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/targets":{"get":{"operationId":"styleAgent_listStyleAgentTargets","summary":"List Style Agent Targets","description":"Deprecated alias of ``GET /style-agent/style-guides``.\n\n\"Target\" is the legacy name for a style guide; this route stays for\nexisting integrations. Use the style-guides route for new work.","tags":["styleAgent"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TargetResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"deprecated":true,"security":[{"HTTPBearer":[]}]}},"/style-agent/targets/{target_id}":{"get":{"operationId":"styleAgent_getStyleAgentTarget","summary":"Get Style Agent Target","description":"Deprecated alias of ``GET /style-agent/style-guides/{style_guide_id}``.\n\n\"Target\" is the legacy name for a style guide; this route stays for\nexisting integrations. Use the style-guides route for new work.","tags":["styleAgent"],"parameters":[{"name":"target_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TargetDetailResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"deprecated":true,"security":[{"HTTPBearer":[]}]}},"/style-agent/style-guides":{"get":{"operationId":"styleAgent_listStyleGuides","summary":"List Style Guides","description":"List the style guides available to your organization.","tags":["styleAgent"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StyleGuideSummaryResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/style-guides/{style_guide_id}":{"get":{"operationId":"styleAgent_getStyleGuide","summary":"Get Style Guide","description":"Get a style guide's full configuration (goals, groups, guidelines).","tags":["styleAgent"],"parameters":[{"name":"style_guide_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleGuideDetailResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/content-profiles":{"get":{"operationId":"styleAgent_listStyleAgentContentProfiles","summary":"List Style Agent Content Profiles","tags":["styleAgent"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ContentProfileResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/run":{"post":{"operationId":"styleAgent_runStyleAgent","summary":"Run Style Agent","description":"Run a Style Agent content check.\n\nSubmit document text to analyze it against your organization's style\nconfiguration. Set ``wait=true`` to block until the check completes and\nreturn the result (201 Created); the default (``wait=false``) returns\n202 Accepted immediately with a workflow id to poll via\n``GET /style-agent/workflows/{workflow_id}``.\n\nTo check a PDF, Word, HTML, XML (including DITA), Markdown, or plain-text\n*file*, use ``POST /style-agent/run-file`` instead.","tags":["styleAgent"],"parameters":[{"name":"wait","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentRunResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Invalid input for agent","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Workflow execution failed (wait=true)","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentRunRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/run-file":{"post":{"operationId":"styleAgent_runStyleAgentFile","summary":"Run Style Agent File","description":"Run a Style Agent check on an uploaded document.\n\nAccepts PDF, Word (.docx), HTML, XML (including DITA), Markdown, and\nplain-text files. The file is uploaded unchanged and checked in the format\nits content is detected as, so the check runs against the document as\nsubmitted. The extension doesn't change how content is analyzed: a\n``.txt`` file that contains an HTML document is checked as HTML.\n\n``.txt`` uploads are accepted whatever markup they contain. An ``.html``\nor ``.htm`` upload must begin with ``<!DOCTYPE html>`` or an ``<html>``\nroot element. (Binary content in a ``.txt`` is typed by its bytes as\nusual.)\n\nBehaves like ``POST /style-agent/run`` otherwise: ``wait=true`` blocks for\nthe result (201 Created), the default returns 202 Accepted with a workflow\nid to poll via ``GET /style-agent/workflows/{workflow_id}``. A large file\ncan take longer than the synchronous request window, so prefer polling for\nthose.\n\nFor plain-text, HTML, and XML files, issue positions are offsets into the\ntext of the file you uploaded, counted in UTF-16 code units (JavaScript\nstring indices). For PDF and Word files, positions index the text\nextracted from the document; use each issue's ``context_surface`` to\nlocate it in the original.","tags":["styleAgent"],"parameters":[{"name":"wait","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentRunResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"413":{"description":"File exceeds the maximum allowed size","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Invalid input for agent","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Workflow execution failed (wait=true)","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"style_guide_id":{"type":["string","null"],"minLength":1,"description":"Style guide ID to check the document against. ``target_id`` is a deprecated alias for this field; send exactly one of the two names."},"content_profile_id":{"type":["string","null"],"minLength":1,"description":"Language-service content profile ID for style checking."},"domain_ids":{"type":["array","null"],"items":{"type":"string","minLength":1},"description":"Terminology domain IDs."},"document_ref":{"type":["string","null"],"minLength":1,"maxLength":512,"description":"Caller-provided document identifier for tracking across scans."},"url":{"type":["string","null"],"minLength":1,"description":"Document URL."},"document_name":{"type":["string","null"],"minLength":1,"description":"Document name or title."},"webhook_url":{"type":["string","null"],"format":"uri","minLength":1,"maxLength":2083,"description":"Optional webhook URL for async result delivery."},"file_upload":{"type":"string","format":"binary","description":"The document to analyze. Text (.txt), Markdown (.md), HTML (.html, .htm), XML including DITA (.xml, .dita), Word (.docx), and PDF (.pdf) files are accepted. The max file size is 7 MB. Content is analyzed in the format it is detected as, whatever the extension: a .txt file that contains HTML is checked as HTML. For plain-text, HTML, and XML files, issue positions are offsets into the text of the file you uploaded, counted in UTF-16 code units."}},"required":["file_upload"]}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/workflows/{workflow_id}":{"get":{"operationId":"styleAgent_getStyleAgentWorkflow","summary":"Get Style Agent Workflow","description":"Get the status and result of a Style Agent content-check run.\n\nPoll with the workflow id returned by ``POST /style-agent/run``. While the\nrun is in progress the status reflects its state; once it completes the\nresponse includes the result.","tags":["styleAgent"],"parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentWorkflowStatusResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Workflow not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Failed to retrieve workflow status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/batch":{"post":{"operationId":"styleAgent_createStyleAgentBatch","summary":"Create Style Agent Batch","description":"Create a style-agent batch of up to 20 documents and start checking them.\n\nReturns 202 with a ``batch_id`` to poll at ``GET /style-agent/batch/{id}``.\nAppend more documents (up to 1000 total) while the batch is still processing\nvia ``POST /style-agent/batch/{id}/items``. Send an ``Idempotency-Key``\nheader to make retries safe: the same key + payload replays the original\n202 instead of creating a second batch.\n\nPolling that report is the authoritative way to learn a batch finished. An\noptional ``webhook_url`` is a bounded best-effort notification on top of it\n— it can fire zero times or more than once, so receivers must deduplicate\non ``batch_id``.","tags":["styleAgent"],"parameters":[{"name":"Idempotency-Key","in":"header","description":"Optional client-generated key making this submission idempotent: a retry with the same key and payload returns the original accepted response instead of submitting the documents again. Reusing a key with a different payload returns 409.","required":false,"schema":{"type":["string","null"],"minLength":1,"maxLength":255}}],"responses":{"202":{"description":"Batch accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAcceptedResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Idempotency-Key reused with a different payload","content":{"application/json":{"schema":{"description":"Any type"}}}},"413":{"description":"Request payload exceeds the per-request size limit","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Invalid input for one or more items","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBatchRequest"}}}},"security":[{"HTTPBearer":[]}]},"get":{"operationId":"styleAgent_listStyleAgentBatches","summary":"List Style Agent Batches","description":"List your organization's batches, newest first.","tags":["styleAgent"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchListResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/batch-files":{"post":{"operationId":"styleAgent_createStyleAgentBatchFiles","summary":"Create Style Agent Batch Files","description":"Create a style-agent batch from up to 20 uploaded documents.\n\nAccepts PDF, Word (.docx), HTML, XML (including DITA), Markdown, and\nplain-text files. Each file is forwarded to the language service\nunchanged — it extracts the text — so every check runs against the\ndocument as submitted, exactly as ``POST /style-agent/run-file`` does for\na single document.\n\nPer-item metadata is optional: send an ``items`` JSON array positionally\naligned with the files to set ``document_ref``, ``author`` or a per-item\nstyle guide. Omit it and every file is checked using the batch ``defaults``,\nwith its filename used as the document name.\n\nBehaves like ``POST /style-agent/batch`` otherwise: returns 202 with a\n``batch_id`` to poll at ``GET /style-agent/batch/{id}``, and more documents\ncan be appended while it runs — as files via\n``POST /style-agent/batch/{id}/items-files`` or as text via\n``POST /style-agent/batch/{id}/items``.\n\nIssue positions index the text the language service extracted, not the bytes\nyou uploaded; use each issue's ``context_surface`` to locate it in the\noriginal document.","tags":["styleAgent"],"parameters":[{"name":"Idempotency-Key","in":"header","description":"Optional client-generated key making this submission idempotent: a retry with the same key and payload returns the original accepted response instead of submitting the documents again. Reusing a key with a different payload returns 409.","required":false,"schema":{"type":["string","null"],"minLength":1,"maxLength":255}}],"responses":{"202":{"description":"Batch accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAcceptedResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Style guide not found, or agent unavailable","content":{"application/json":{"schema":{"description":"Any type"}}}},"409":{"description":"Idempotency-Key reused with a different payload","content":{"application/json":{"schema":{"description":"Any type"}}}},"413":{"description":"Uploads exceed the per-file or per-request size limit","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Invalid input for one or more items","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file_uploads":{"type":"array","items":{"type":"string","format":"binary"},"description":"The documents to check, one file per batch item. Text (.txt), Markdown (.md), HTML (.html, .htm), XML including DITA (.xml, .dita), Word (.docx), and PDF (.pdf) files are accepted. Content is analyzed in the format it is detected as, whatever the extension: a .txt file that contains HTML is checked as HTML. For plain-text, HTML, and XML files, issue positions are offsets into the text of the file you uploaded, counted in UTF-16 code units. Size limits apply per file and to the request as a whole; exceeding either returns 413 naming the limit."},"items":{"type":["string","null"],"description":"Optional JSON array of per-item metadata, positionally aligned with the uploaded files: entry i describes file i. Each entry accepts the same fields as a text batch item minus 'text'. Omit it (or send it empty) to check every file using only the batch defaults. When present, its length must equal the number of uploaded files."},"defaults":{"type":["string","null"],"description":"Optional JSON object of per-batch defaults applied to any item that omits the field."},"webhook_url":{"type":["string","null"],"format":"uri","minLength":1,"maxLength":2083,"description":"Notified when the batch reaches a terminal state (D5). Delivery is bounded best-effort, not guaranteed: a failed POST is retried with backoff for roughly two hours and then abandoned, so this endpoint may be called zero times or more than once. GET /style-agent/batch/{batch_id} is authoritative — poll it if the notification has not arrived. Deduplicate on the payload's batch_id: a batch has exactly one completion event, so batch_id is its stable event id."}},"required":["file_uploads"]}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/batch/{batch_id}/items":{"post":{"operationId":"styleAgent_appendStyleAgentBatchItems","summary":"Append Style Agent Batch Items","description":"Append up to 20 more documents to a batch that is still processing.\n\nRejected with 409 once the batch is sealed (1000 documents reached, or every\ndocument has finished) — create a new batch instead. Send an\n``Idempotency-Key`` header to make retries safe: the same key + payload\nreplays the original 202 instead of appending the documents again.","tags":["styleAgent"],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","description":"Optional client-generated key making this submission idempotent: a retry with the same key and payload returns the original accepted response instead of submitting the documents again. Reusing a key with a different payload returns 409.","required":false,"schema":{"type":["string","null"],"minLength":1,"maxLength":255}}],"responses":{"202":{"description":"Documents appended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAcceptedResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Batch not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"409":{"description":"Batch sealed or over the 1000-document limit, or Idempotency-Key reused with a different payload","content":{"application/json":{"schema":{"description":"Any type"}}}},"413":{"description":"Request payload exceeds the per-request size limit","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Invalid input for one or more items","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppendItemsRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/batch/{batch_id}/items-files":{"post":{"operationId":"styleAgent_appendStyleAgentBatchFiles","summary":"Append Style Agent Batch Files","description":"Append up to 20 more uploaded documents to a batch that is still processing.\n\nThe file-upload form of ``POST /style-agent/batch/{batch_id}/items``; a\nbatch may mix the two freely. Rejected with 409 once the batch is sealed\n(1000 documents reached, or every document has finished) — create a new\nbatch instead. Send an ``Idempotency-Key`` header to make retries safe.","tags":["styleAgent"],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","description":"Optional client-generated key making this submission idempotent: a retry with the same key and payload returns the original accepted response instead of submitting the documents again. Reusing a key with a different payload returns 409.","required":false,"schema":{"type":["string","null"],"minLength":1,"maxLength":255}}],"responses":{"202":{"description":"Documents appended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAcceptedResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Batch not found, style guide not found, or agent unavailable","content":{"application/json":{"schema":{"description":"Any type"}}}},"409":{"description":"Batch sealed or over the 1000-document limit, or Idempotency-Key reused with a different payload","content":{"application/json":{"schema":{"description":"Any type"}}}},"413":{"description":"Uploads exceed the per-file or per-request size limit","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Invalid input for one or more items","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file_uploads":{"type":"array","items":{"type":"string","format":"binary"},"description":"The documents to check, one file per batch item. Text (.txt), Markdown (.md), HTML (.html, .htm), XML including DITA (.xml, .dita), Word (.docx), and PDF (.pdf) files are accepted. Content is analyzed in the format it is detected as, whatever the extension: a .txt file that contains HTML is checked as HTML. For plain-text, HTML, and XML files, issue positions are offsets into the text of the file you uploaded, counted in UTF-16 code units. Size limits apply per file and to the request as a whole; exceeding either returns 413 naming the limit."},"items":{"type":["string","null"],"description":"Optional JSON array of per-item metadata, positionally aligned with the uploaded files: entry i describes file i. Each entry accepts the same fields as a text batch item minus 'text'. Omit it (or send it empty) to check every file using only the batch defaults. When present, its length must equal the number of uploaded files."},"defaults":{"type":["string","null"],"description":"Optional JSON object of per-batch defaults applied to any item that omits the field."}},"required":["file_uploads"]}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/batch/{batch_id}":{"get":{"operationId":"styleAgent_getStyleAgentBatch","summary":"Get Style Agent Batch","description":"Live report for a batch: status, per-status counts, and per-document\nworkflow ids + status. Fetch a document's full result by its ``workflow_id``\nfrom ``GET /style-agent/workflows/{workflow_id}``.\n\nThis report is the authoritative view of a batch's progress and completion;\nthe optional completion webhook is a best-effort notification on top of it.","tags":["styleAgent"],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"item_limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":100}},{"name":"item_offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchReportResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Batch not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/schema":{"get":{"operationId":"styleAgentTerminology_getSchema","summary":"Get Schema","description":"The organization's terminology schema as an ACTIF 1.0 document.\n\nLists every category type with its categories (languages, statuses,\ndomains, and any others), and every entry-level and term-level field with\nits type and default. Categories and fields are named here exactly as an\nentry document must name them. The document contains no entries.","tags":["styleAgentTerminology"],"parameters":[{"name":"accept","in":"header","required":false,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"406":{"description":"The `Accept` header allows none of `application/vnd.acrolinx.actif+xml`, `application/xml`, `text/xml`.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/entries/{entry}":{"get":{"operationId":"styleAgentTerminology_getEntries","summary":"Get Entries","description":"One or more entries as a single ACTIF 1.0 document.\n\nEach entry comes back once, in the order requested, with all of its terms\nin every language and the schema they refer to. Values come back as\nstored: a field left empty on a term stays absent rather than showing its\ndefault, so a document can be edited and sent back with\n`POST /entries` without changing anything else.\n\nIds that match no entry are skipped. Returns `404` only if none match.","tags":["styleAgentTerminology"],"parameters":[{"name":"entry","in":"path","description":"Comma-separated entry uuids or entry ids, up to 100. A value that is an entry's uuid selects that entry; otherwise it selects every entry with that id.","required":true,"schema":{"type":"string"}},{"name":"accept","in":"header","required":false,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"More ids than one request allows.","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"None of the ids matches an entry.","content":{"application/json":{"schema":{"description":"Any type"}}}},"406":{"description":"The `Accept` header allows none of `application/vnd.acrolinx.actif+xml`, `application/xml`, `text/xml`.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"styleAgentTerminology_deleteEntry","summary":"Delete Entry","description":"Delete an entry and every term in it.","tags":["styleAgentTerminology"],"parameters":[{"name":"entry","in":"path","description":"The entry's uuid.","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"No entry has this uuid.","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/entries":{"post":{"operationId":"styleAgentTerminology_writeEntries","summary":"Create or Replace Entries","description":"Create entries, or replace stored ones, from an ACTIF 1.0 document.\n\nSend the document as the request body, with `Content-Type` set to\n`application/vnd.acrolinx.actif+xml`, `application/xml` or `text/xml`. It\nmay hold up to 500 entries and 10 MB.\n\nEach entry is the entry's complete new state:\n\n- An entry whose `entry/uuid` matches a stored entry replaces it. Any other\n  entry is created, keeping the `entry/uuid` and `term/uuid` values it\n  carries, or getting new ones.\n- Terms are matched by `term/uuid`. A stored term the entry leaves out is\n  deleted, and a field the entry leaves empty is cleared.\n- The term in `<head>` becomes the entry's head term. Without one, the\n  current head stays if it is still in the entry, otherwise the first term\n  becomes head.\n- Languages, statuses, domains, morphosyntactic categories, and fields and\n  their list values are given by name, as `GET /schema` lists them. A term\n  without a status gets the default status.\n- Dates, users, frequency and history events in the document are ignored:\n  the server records them.\n\nThe document is stored entirely or not at all. A `400` lists every problem\nin `errors`, and nothing is stored. A `409` means an import is running or\nanother request is writing the same entries; retry later.\n\nReturns `201` if any entry was new, otherwise `200`, with the stored\nentries in document order and a `Location` header for the first.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryWriteResponse"}}}},"400":{"description":"The document is not valid ACTIF, or names something the organization does not have. `errors` lists every problem.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryWriteErrorResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"An import is running, or another request is writing the same entries. Retry later.","content":{"application/json":{"schema":{"description":"Any type"}}}},"413":{"description":"The document is larger than 10 MB.","content":{"application/json":{"schema":{"description":"Any type"}}}},"415":{"description":"The body is not sent as ACTIF XML.","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"binary"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/terms":{"get":{"operationId":"styleAgentTerminology_searchTerms","summary":"Search Terms","description":"Search terms.\n\nEvery filter is optional and filters combine with AND; repeating a filter,\nor giving both a name and an ID for the same kind, matches any of the\nvalues. Results are ordered by surface, case-insensitively.\n\nCategories can be given by name (`language`, `status`, `domain`) or by ID\n(`*_ids`); the `*_ids_exclude` variants drop terms carrying the category.\nReturns `400` naming every language, status or domain name that does not\nexist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"query","in":"query","description":"Text to match against term surfaces; see `match`.","required":false,"schema":{"type":["string","null"]}},{"name":"match","in":"query","description":"How `query` matches, case-insensitively: `contains` a substring, `exact` the whole surface, or `wildcard` the whole surface with `%` matching any run of characters and `_` one character (escape either with `\\`).","required":false,"schema":{"$ref":"#/components/schemas/StyleAgentTerminologyTermsGetParametersMatch","default":"contains"}},{"name":"language","in":"query","description":"Language name, such as `en`. Repeatable.","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}},{"name":"status","in":"query","description":"Status name, such as `preferred`. Repeatable.","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}},{"name":"domain","in":"query","description":"Domain name. Repeatable. Also matches terms in the domain's sub-domains.","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}},{"name":"entry_uuid","in":"query","description":"Entry (concept) uuid. Repeatable.","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}},{"name":"term_uuid","in":"query","description":"Term uuid. Repeatable.","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}},{"name":"language_ids","in":"query","description":"Language category ID.","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"language_ids_exclude","in":"query","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"status_ids","in":"query","description":"Status category ID.","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"status_ids_exclude","in":"query","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"domain_ids","in":"query","description":"Domain category ID; includes sub-domains.","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"domain_ids_exclude","in":"query","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"msr_ids","in":"query","description":"Morphosyntactic restriction category ID.","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"msr_ids_exclude","in":"query","required":false,"schema":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},{"name":"creator","in":"query","description":"Filter by creator username","required":false,"schema":{"type":["string","null"]}},{"name":"created_after","in":"query","description":"ISO datetime: terms created on or after","required":false,"schema":{"type":["string","null"]}},{"name":"created_before","in":"query","description":"ISO datetime: terms created on or before","required":false,"schema":{"type":["string","null"]}},{"name":"modified_after","in":"query","description":"ISO datetime: terms modified on or after","required":false,"schema":{"type":["string","null"]}},{"name":"modified_before","in":"query","description":"ISO datetime: terms modified on or before","required":false,"schema":{"type":["string","null"]}},{"name":"custom_cat","in":"query","description":"Custom category-field filter token, repeatable: '<field_id>:<is|is_not>:<category_id>'","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}},{"name":"custom_text","in":"query","description":"Custom text-field filter token, repeatable: '<field_id>:<text>'","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}},{"name":"include_custom_field_values","in":"query","description":"Include each term's custom field values.","required":false,"schema":{"type":"boolean","default":false}},{"name":"head_terms_only","in":"query","description":"Only return each entry's head (primary) term.","required":false,"schema":{"type":"boolean","default":false}},{"name":"group_by_concept","in":"query","description":"Return whole entries: an entry matches when any of its terms does, every term of a matching entry is returned, and pagination counts entries instead of terms.","required":false,"schema":{"type":"boolean","default":false}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedTermsResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"operationId":"styleAgentTerminology_createTerm","summary":"Create Term","description":"Create a term.\n\nWithout `masterterm_id` the term starts a new entry (concept) and becomes\nits head term. With `masterterm_id` set to an entry's head term, the term\njoins that entry: as a synonym in the same language, or as a translation\nin another.\n\nLanguage, status and the other categories are given by ID; list them with\n`GET /categories`. Returns `400` if a category or the master term does not\nexist in this organization.","tags":["styleAgentTerminology"],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentTermResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentTermCreateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/terms/suggest":{"get":{"operationId":"styleAgentTerminology_suggestTerms","summary":"Suggest Terms","description":"Suggest terms as the user types.\n\nSurfaces starting with `q` come first, then those containing it.","tags":["styleAgentTerminology"],"parameters":[{"name":"q","in":"query","description":"Search prefix/substring","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":25,"default":10}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TermSuggestionResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/terms/{term_id}":{"get":{"operationId":"styleAgentTerminology_getTerm","summary":"Get Term","description":"Get a term, with the other terms of its entry in `member_terms`.\n\nReturns `404` if the term does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermDetailResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"operationId":"styleAgentTerminology_updateTerm","summary":"Update Term","description":"Update a term. Omitted fields are left unchanged.\n\n`category_ids` replaces the term's whole set of domains and other\ncategories, so send every category the term should keep. Custom field\nvalues are replaced only for the fields included. To move an entry to\nanother domain, update each of its terms.\n\nReturns `404` if the term does not exist, and `400` if a referenced\ncategory does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentTermResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentTermUpdateRequest"}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"styleAgentTerminology_deleteTerm","summary":"Delete Term","description":"Delete a term.\n\nDeleting an entry's head term deletes the whole entry, including all of\nits synonyms and translations. To keep the entry, make another of its\nterms the head first. Returns `404` if the term does not exist.","tags":["styleAgentTerminology"],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/terms/{term_id}/set-head":{"post":{"operationId":"styleAgentTerminology_setHeadTerm","summary":"Set Head Term","description":"Make a term the head (primary) term of its entry.\n\nEntry-level field values, such as the definition, move to the new head.\nReturns `404` if the term does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentTermResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/terms/{term_id}/linked":{"get":{"operationId":"styleAgentTerminology_getLinkedTerms","summary":"Get Linked Terms","description":"The other terms of this term's entry: its synonyms and translations.\n\nReturns an empty list if the term does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LinkedTermSummary"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/term-sets/{term_id}":{"get":{"operationId":"styleAgentTerminology_getTermSet","summary":"Get Term Set","description":"Get the whole entry (concept) a term belongs to, with all its terms.\n\nReturns `404` if the term does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermSetDetailResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/terms/{term_id}/history":{"get":{"operationId":"styleAgentTerminology_getTermHistory","summary":"Get Term History","description":"A term's history: when it was created and changed, and its comments.\n\nReturns `404` if the term does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"event_type","in":"query","description":"Only events of these types (repeatable), e.g. COMMENT.","required":false,"schema":{"type":["array","null"],"items":{"type":"string"}}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TermHistoryResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/terms/{term_id}/comments":{"post":{"operationId":"styleAgentTerminology_addTermComment","summary":"Add Term Comment","description":"Add a comment to a term.\n\nComments are recorded as ``COMMENT`` events in the term's history, so\nthey are returned by ``GET /terms/{term_id}/history``.\n\nRequires ``terminology.term-browser:contribute``. Returns 403 without that\npermission, and also when the organization has term comments turned off —\nboth conditions must hold.","tags":["styleAgentTerminology"],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermHistoryResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermCommentCreateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/terms/contribute":{"post":{"operationId":"styleAgentTerminology_contributeTerm","summary":"Contribute Term","description":"Propose a new term.\n\nAlways creates a new entry with `proposed` status, for a terminologist to\nreview; the optional comment is recorded in the term's history. Status,\nmaster term and morphosyntactic restriction cannot be set here.\n\nRequires ``terminology.term-browser:contribute``. Returns 403 without that\npermission, and also when the organization has term contribution turned\noff — both conditions must hold.","tags":["styleAgentTerminology"],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleAgentTermResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermContributionRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/publish":{"post":{"operationId":"styleAgentTerminology_publishTerminology","summary":"Publish Terminology","description":"Publish this organization's terminology so checks start using it.\n\nReturns immediately with a job to poll via `GET /jobs/{job_id}` or\n`GET /jobs/current`; publishing continues in the background and typically\ntakes from a few seconds to several minutes depending on how many terms\nthere are.\n\nPublishing an organization with no terminology succeeds and does nothing.\n\nReturns `409` if a publish or import is already in progress — only one runs\nper organization at a time, so wait for the current one to finish.","tags":["styleAgentTerminology"],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminologyJobResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/publish-state":{"get":{"operationId":"styleAgentTerminology_getPublishState","summary":"Get Publish State","description":"Whether this organization's live terminology is up to date.\n\nReports when terminology was last published and by whom, when it was last\nedited, and a `drift` verdict comparing the two. Also carries the job for a\npublish or import in progress, if there is one.\n\nEvery kind of edit counts toward `drift` — terms, categories, custom\nfields, their ordering, variant settings, and deletions — so anything that\nchanges what would be published marks the terminology out of date.\n\nFor an organization publishing more than one language, `languages` carries\neach one separately and `drift` summarises the worst of them, so it never\nreports up to date while one language is behind.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishStateResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/jobs/current":{"get":{"operationId":"styleAgentTerminology_getCurrentTerminologyJob","summary":"Get Current Terminology Job","description":"The publish or import currently running, or the last one that ran.\n\nPoll this to follow a job's progress. Because it reports the organization's\njob rather than the caller's, it also shows work started by someone else:\nwhile `active` is true, starting a publish or import returns `409`.\n\n`job` is null only when this organization has never published or imported.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrentTerminologyJobResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/jobs/{job_id}":{"get":{"operationId":"styleAgentTerminology_getTerminologyJob","summary":"Get Terminology Job","description":"A single publish or import job.\n\nReturns `404` if no job with this identifier belongs to the organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"job_id","in":"path","description":"Identifier returned when the job started.","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminologyJobResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/export/actif":{"get":{"operationId":"styleAgentTerminology_exportActifEndpoint","summary":"Export ACTIF","description":"Export all terminology as an ACTIF 1.0 XML document.\n\nThis is the document that publishing makes live. Returns `404` if the\norganization has no terminology.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/export/xml-dump":{"get":{"operationId":"styleAgentTerminology_exportXmlDumpEndpoint","summary":"Export XML Dump","description":"Export all terminology as an Acrolinx-compatible XML database dump.\n\nThe file can be imported again with `POST /import/xml-dump`.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/import/xml-dump":{"post":{"operationId":"styleAgentTerminology_importXmlDumpEndpoint","summary":"Import XML Dump","description":"Import an Acrolinx terminology XML database dump. Maximum file size: 100MB.\n\n**This replaces all existing terminology in the organization.** Every term,\ncategory, and custom field is removed and rebuilt from the file.\n\nReturns immediately with a job to poll via `GET /jobs/{job_id}` or\n`GET /jobs/current`; the import continues in the background and can take\nseveral minutes for a large dump. A file that fails validation is reported\non the job as a failure, not on this response.\n\nReturns `413` if the file exceeds the size limit, and `409` if a publish or\nimport is already in progress — only one runs per organization at a time.","tags":["styleAgentTerminology"],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerminologyJobResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/category-types":{"get":{"operationId":"styleAgentTerminology_listCategoryTypes","summary":"List Category Types","description":"List the organization's category types, with how many categories each has.\n\nLanguages, statuses, domains and parts of speech are each a category type;\nan organization can add its own types, such as gender or product line.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryTypeResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"operationId":"styleAgentTerminology_createCategoryType","summary":"Create Category Type","description":"Create a category type.\n\nReturns `409` if a type with the same `name` already exists.","tags":["styleAgentTerminology"],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryTypeResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryTypeCreateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/category-types/{category_type_id}":{"put":{"operationId":"styleAgentTerminology_updateCategoryType","summary":"Update Category Type","description":"Update a category type. Omitted fields are left unchanged.\n\nReturns `404` if the type does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"category_type_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryTypeResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryTypeUpdateRequest"}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"styleAgentTerminology_deleteCategoryType","summary":"Delete Category Type","description":"Delete a category type and its categories.\n\nReturns `409` while a custom field takes its options from this type, and\n`404` if the type does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"category_type_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/categories":{"get":{"operationId":"styleAgentTerminology_listCategories","summary":"List Categories","description":"List categories, optionally only those of one type.\n\nWithout `category_type_id` every category in the organization is returned\nand `parent_id` / `root_only` are ignored. List the category types first\nto find the type of languages, statuses or domains.","tags":["styleAgentTerminology"],"parameters":[{"name":"category_type_id","in":"query","description":"Filter by category type","required":false,"schema":{"type":["string","null"],"format":"uuid"}},{"name":"parent_id","in":"query","description":"Filter by parent","required":false,"schema":{"type":["string","null"],"format":"uuid"}},{"name":"root_only","in":"query","description":"Only categories without a parent","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"operationId":"styleAgentTerminology_createCategory","summary":"Create Category","description":"Create a category, such as a new domain or language.","tags":["styleAgentTerminology"],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryCreateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/categories/reorder":{"put":{"operationId":"styleAgentTerminology_reorderCategories","summary":"Reorder Categories","description":"Set the display order of all categories of one type in a single call.\n\nReturns `422` unless `ordered_ids` lists exactly the type's categories.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryReorderRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/categories/{category_id}":{"put":{"operationId":"styleAgentTerminology_updateCategory","summary":"Update Category","description":"Update a category. Omitted fields are left unchanged.\n\nRenaming a category changes how terms, searches and ACTIF documents refer\nto it; publish afterwards for checks to pick up the change. Returns `404`\nif the category does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryUpdateRequest"}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"styleAgentTerminology_deleteCategory","summary":"Delete Category","description":"Delete a category.\n\nReturns `404` if the category does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/custom-fields":{"get":{"operationId":"styleAgentTerminology_listCustomFields","summary":"List Custom Fields","description":"List the organization's custom field definitions.\n\nFor category fields, `value_range_type_id` is the category type whose\ncategories are the field's options.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldDefinitionResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"operationId":"styleAgentTerminology_createCustomField","summary":"Create Custom Field","description":"Create a custom field.\n\nCategory fields (`CATEGORY`, `CATEGORIES`) need `value_range_type_id`, the\ncategory type whose categories become the field's options.","tags":["styleAgentTerminology"],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldDefinitionResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldCreateRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/custom-fields/reorder":{"put":{"operationId":"styleAgentTerminology_reorderCustomFields","summary":"Reorder Custom Fields","description":"Set the display order of all custom fields in a single call.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldDefinitionResponse"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldReorderRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/custom-fields/{field_id}":{"put":{"operationId":"styleAgentTerminology_updateCustomField","summary":"Update Custom Field","description":"Update a custom field. Omitted fields are left unchanged.\n\nReturns `404` if the field does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldDefinitionResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomFieldUpdateRequest"}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"styleAgentTerminology_deleteCustomField","summary":"Delete Custom Field","description":"Delete a custom field and every term's value for it.\n\nReturns `404` if the field does not exist in this organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"field_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/images":{"post":{"operationId":"styleAgentTerminology_uploadTermImage","summary":"Upload Term Image","description":"Upload an image to attach to a term.\n\nSend the file as multipart form data in the `file` field. PNG, JPEG, GIF,\nWebP and PDF are accepted, up to 10 MB; the type is detected from the\nfile's content, not its name or declared type.\n\nTo attach the image, write the returned `filename` as the value of an\n`IMAGE_URL` custom field on the term. Fetch it again with\n`GET /images/{filename}`.\n\nReturns `413` if the file is larger than 10 MB, `415` for any other file\ntype, and `422` for an empty file.","tags":["styleAgentTerminology"],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TermImageUploadResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/images/{filename}":{"get":{"operationId":"styleAgentTerminology_getTermImage","summary":"Get Term Image","description":"Download an image uploaded with `POST /images`.\n\n`filename` is the value stored in the term's `IMAGE_URL` custom field.\nImages belong to the organization that uploaded them; returns `404` if no\nimage with this filename exists in the caller's organization.","tags":["styleAgentTerminology"],"parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The image (or PDF) bytes.","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Image not found","content":{"application/json":{"schema":{"description":"Any type"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/style-agent/terminology/settings/variant-rules":{"get":{"operationId":"styleAgentTerminology_getVariantRules","summary":"Get Variant Rules","description":"The organization-wide rules for which variants of a term are accepted.\n\nReturns all eight rules: `allowTitleAnywhere`, `allowHyphen`,\n`flagVariants`, `allowUpperCase`, `requireBOSFormAtBOS`,\n`upperCaseTitleAfterHyphen`, `allowBOS` and `applyMcatRestriction`. Rules\nthe organization has not set report their default. A term's own variant\nsettings override these.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"put":{"operationId":"styleAgentTerminology_updateVariantRules","summary":"Update Variant Rules","description":"Set one or more variant rules and return all eight.\n\nRules not included keep their current value. Returns `422` for an unknown\nrule name. Publish afterwards for checks to use the new rules.","tags":["styleAgentTerminology"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"}}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{"type":"boolean"}}}}},"security":[{"HTTPBearer":[]}]}},"/agents/workflows":{"get":{"operationId":"agentWorkflows_listWorkflows","summary":"List Workflows","description":"List agent workflow executions with optional filters and cursor-based pagination.","tags":["agentWorkflows"],"parameters":[{"name":"status","in":"query","description":"Filter by workflow status","required":false,"schema":{"oneOf":[{"$ref":"#/components/schemas/AgentsWorkflowsGetParametersStatusSchema"},{"type":"null"}]}},{"name":"agent_id","in":"query","description":"Filter by agent ID","required":false,"schema":{"type":["string","null"]}},{"name":"created_after","in":"query","description":"Only return workflows created after this timestamp (ISO 8601)","required":false,"schema":{"type":["string","null"],"format":"date-time"}},{"name":"limit","in":"query","description":"Maximum number of results per page","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"cursor","in":"query","description":"Opaque cursor from a previous response to fetch the next page","required":false,"schema":{"type":["string","null"]}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowListResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Agent not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Failed to list workflows","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/agents/workflows/{workflow_id}":{"get":{"operationId":"agentWorkflows_getWorkflowStatus","summary":"Get Workflow Status","description":"Get workflow status and result.","tags":["agentWorkflows"],"parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowStatusResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Workflow not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Failed to retrieve workflow status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"operationId":"agentWorkflows_cancelWorkflow","summary":"Cancel Workflow","description":"Cancel a running workflow.","tags":["agentWorkflows"],"parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowCancelResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Workflow not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Workflow cannot be cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Failed to cancel workflow","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/agents/workflows/{workflow_id}/stream":{"get":{"operationId":"agentWorkflows_streamWorkflowEvents","summary":"Stream Workflow Events","description":"Stream workflow execution events via Server-Sent Events (SSE).","tags":["agentWorkflows"],"parameters":[{"name":"workflow_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"description":"Any type"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Workflow not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Failed to retrieve workflow status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Streaming not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/agents":{"get":{"operationId":"agents_listAgents","summary":"List Agents","description":"List the agents the organization may run, or the full catalog.\n\nThe single authoritative source of agent availability for clients (extension,\nConsole, integrations). By default the returned list already reflects every\nper-org gate — style-agent mode, per-agent on/off, and the no-LLM flag — so\nclients must not re-derive availability; the `no_llm` flag is returned\nalongside so they can render the Style-Agent-only state directly. Pass\n`include_unavailable=true` for the full catalog (per-org gates skipped),\ne.g. an internal tool resolving an agent id regardless of org config.","tags":["agents"],"parameters":[{"name":"page","in":"query","description":"Page number (1-based)","required":false,"schema":{"type":"integer","minimum":1,"default":1}},{"name":"page_size","in":"query","description":"Items per page (max 100)","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"category","in":"query","description":"Filter agents by category name (case-insensitive substring match)","required":false,"schema":{"type":["string","null"]}},{"name":"include_unavailable","in":"query","description":"Return the full agent catalog instead of only the agents this organization may run. When false (default) the list is filtered by style-agent mode, per-agent on/off, and the no-LLM flag; when true those per-org gates are skipped.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentListResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/agents/categories":{"get":{"operationId":"agents_listCategories","summary":"List Categories","description":"List all available agent categories.","tags":["agents"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryListResult"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/agents/{agent_id}":{"get":{"operationId":"agents_getAgent","summary":"Get Agent","description":"Get agent metadata.","tags":["agents"],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentMetadata"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/agents/{agent_id}/run":{"post":{"operationId":"agents_runAgent","summary":"Run Agent","description":"Run an agent.\n\nUse `wait=true` to block until the workflow completes (201 Created).\nDefault (`wait=false`) returns immediately with 202 Accepted.","tags":["agents"],"parameters":[{"name":"agent_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Invalid input for agent","content":{"application/json":{"schema":{"description":"Any type"}}}},"500":{"description":"Workflow execution failed (wait=true)","content":{"application/json":{"schema":{"description":"Any type"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentRunRequest"}}}},"security":[{"HTTPBearer":[]}]}},"/personas":{"get":{"operationId":"personas_listPersonas","summary":"List Personas","tags":["personas"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaListResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/personas/{persona_id}":{"get":{"operationId":"personas_getPersona","summary":"Get Persona","tags":["personas"],"parameters":[{"name":"persona_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Persona not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/brand-voice-profiles":{"get":{"operationId":"brandVoiceProfiles_listProfiles","summary":"List Profiles","tags":["brandVoiceProfiles"],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandVoiceProfileListResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/brand-voice-profiles/{profile_id}":{"get":{"operationId":"brandVoiceProfiles_getProfile","summary":"Get Profile","tags":["brandVoiceProfiles"],"parameters":[{"name":"profile_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandVoiceProfileResponse"}}}},"401":{"description":"Authentication failed or no valid API key provided.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Brand voice profile not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"HTTPBearer":[]}]}}},"tags":[{"name":"brandTerms"},{"name":"styleAgent"},{"name":"styleAgentTerminology"},{"name":"agentWorkflows"},{"name":"agents"},{"name":"personas"},{"name":"brandVoiceProfiles"}],"servers":[{"url":"https://api.markup.ai","description":"https://api.markup.ai"}],"components":{"schemas":{"ImportSummary":{"type":"object","properties":{"entries_processed":{"type":"integer","default":0},"term_sets_created":{"type":"integer","default":0},"term_sets_deleted":{"type":"integer","default":0},"terms_created_or_updated":{"type":"integer","default":0},"domains_created":{"type":"integer","default":0},"domains_deleted":{"type":"integer","default":0},"errors":{"type":"array","items":{"type":"string"}}},"title":"ImportSummary"},"ErrorResponse":{"type":"object","properties":{"detail":{"type":"string","description":"A description of the error that occurred."},"status":{"type":"integer","description":"The HTTP status code generated by the server for this issue"},"request_id":{"type":"string","description":"A unique ID associated with the HTTP request."}},"required":["detail","status","request_id"],"title":"ErrorResponse"},"ValidationErrorLocItems":{"oneOf":[{"type":"string"},{"type":"integer"}],"title":"ValidationErrorLocItems"},"ValidationErrorCtx":{"type":"object","properties":{},"title":"ValidationErrorCtx"},"ValidationError":{"type":"object","properties":{"loc":{"type":"array","items":{"$ref":"#/components/schemas/ValidationErrorLocItems"}},"msg":{"type":"string"},"type":{"type":"string"},"input":{"description":"Any type"},"ctx":{"$ref":"#/components/schemas/ValidationErrorCtx"}},"required":["loc","msg","type"],"title":"ValidationError"},"HTTPValidationError":{"type":"object","properties":{"detail":{"type":"array","items":{"$ref":"#/components/schemas/ValidationError"}}},"title":"HTTPValidationError"},"TermItem":{"type":"object","properties":{"term":{"type":"string"},"type":{"type":"string"},"case_sensitive":{"type":"boolean","default":false}},"required":["term","type"],"title":"TermItem"},"MatchedTerm":{"type":"object","properties":{"term":{"type":"string"},"matched_ngram":{"type":"string"}},"required":["term","matched_ngram"],"title":"MatchedTerm"},"TermSetResult":{"type":"object","properties":{"context":{"type":"string"},"context_polarity":{"type":["string","null"]},"terms":{"type":"array","items":{"$ref":"#/components/schemas/TermItem"}},"matched_terms":{"type":"array","items":{"$ref":"#/components/schemas/MatchedTerm"}}},"required":["context","terms","matched_terms"],"title":"TermSetResult"},"TerminologySearchResponse":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/TermSetResult"}}},"required":["results"],"title":"TerminologySearchResponse"},"TermType":{"type":"string","enum":["preferred","prohibited"],"title":"TermType"},"ContextPolarity":{"type":"string","enum":["include","exclude"],"title":"ContextPolarity"},"TermDetail":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"term":{"type":"string"},"type":{"$ref":"#/components/schemas/TermType"},"case_sensitive":{"type":"boolean","default":false},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_by":{"type":["string","null"]},"updated_by":{"type":["string","null"]}},"required":["id","term","type","created_at","updated_at"],"description":"Detailed term information for term management UI","title":"TermDetail"},"DomainSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"],"title":"DomainSummary"},"TermSetWithTerms":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"context":{"type":"string"},"term_type":{"oneOf":[{"$ref":"#/components/schemas/TermType"},{"type":"null"}]},"context_polarity":{"oneOf":[{"$ref":"#/components/schemas/ContextPolarity"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_by":{"type":["string","null"]},"updated_by":{"type":["string","null"]},"terms":{"type":"array","items":{"$ref":"#/components/schemas/TermDetail"}},"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainSummary"},"default":[]}},"required":["id","context","created_at","updated_at","terms"],"description":"Term set with all associated terms for term management UI","title":"TermSetWithTerms"},"PaginatedTermSetsResponse":{"type":"object","properties":{"term_sets":{"type":"array","items":{"$ref":"#/components/schemas/TermSetWithTerms"}},"total_count":{"type":"integer"},"total_unfiltered_term_sets":{"type":"integer"},"page":{"type":"integer"},"page_size":{"type":"integer"},"total_pages":{"type":"integer"}},"required":["term_sets","total_count","total_unfiltered_term_sets","page","page_size","total_pages"],"description":"Pageable response for term sets in term management UI","title":"PaginatedTermSetsResponse"},"TermCreateRequest":{"type":"object","properties":{"term":{"type":"string"},"type":{"$ref":"#/components/schemas/TermType"},"case_sensitive":{"type":"boolean","default":false}},"required":["term","type"],"description":"Payload to create a new term for a term set.","title":"TermCreateRequest"},"TermSetCreateRequest":{"type":"object","properties":{"context":{"type":"string"},"term_type":{"oneOf":[{"$ref":"#/components/schemas/TermType"},{"type":"null"}]},"context_polarity":{"oneOf":[{"$ref":"#/components/schemas/ContextPolarity"},{"type":"null"}]},"terms":{"type":["array","null"],"items":{"$ref":"#/components/schemas/TermCreateRequest"}},"domain_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},"required":["context"],"description":"Payload to create a new term set.","title":"TermSetCreateRequest"},"TermSetResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"context":{"type":"string"},"term_type":{"oneOf":[{"$ref":"#/components/schemas/TermType"},{"type":"null"}]},"context_polarity":{"oneOf":[{"$ref":"#/components/schemas/ContextPolarity"},{"type":"null"}]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_by":{"type":["string","null"]},"updated_by":{"type":["string","null"]}},"required":["id","context","created_at","updated_at"],"description":"DB-mapped representation of a term set (no terms).","title":"TermSetResponse"},"TermSetUpdateRequest":{"type":"object","properties":{"context":{"type":["string","null"]},"term_type":{"oneOf":[{"$ref":"#/components/schemas/TermType"},{"type":"null"}]},"context_polarity":{"oneOf":[{"$ref":"#/components/schemas/ContextPolarity"},{"type":"null"}]},"domain_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"}}},"description":"Payload to update an existing term set","title":"TermSetUpdateRequest"},"TermResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"term":{"type":"string"},"type":{"$ref":"#/components/schemas/TermType"},"case_sensitive":{"type":"boolean","default":false},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_by":{"type":["string","null"]},"updated_by":{"type":["string","null"]}},"required":["id","term","type","created_at","updated_at"],"description":"DB-mapped representation of a term.","title":"TermResponse"},"TermUpdateRequest":{"type":"object","properties":{"term":{"type":"string"},"type":{"$ref":"#/components/schemas/TermType"},"case_sensitive":{"type":["boolean","null"]}},"required":["term","type"],"description":"Payload to update an existing term","title":"TermUpdateRequest"},"DomainResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"created_by":{"type":["string","null"]},"updated_by":{"type":["string","null"]},"term_set_count":{"type":"integer","default":0}},"required":["id","name","created_at","updated_at"],"title":"DomainResponse"},"PaginatedDomainsResponse":{"type":"object","properties":{"domains":{"type":"array","items":{"$ref":"#/components/schemas/DomainResponse"}},"total_count":{"type":"integer"},"page":{"type":"integer"},"page_size":{"type":"integer"},"total_pages":{"type":"integer"}},"required":["domains","total_count","page","page_size","total_pages"],"title":"PaginatedDomainsResponse"},"DomainCreateRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"description":{"type":["string","null"]}},"required":["name"],"title":"DomainCreateRequest"},"DomainUpdateRequest":{"type":"object","properties":{"name":{"type":["string","null"]},"description":{"type":["string","null"]}},"title":"DomainUpdateRequest"},"StyleAgentMode":{"type":"string","enum":["disabled","enabled","enabled_terminology"],"title":"StyleAgentMode"},"OrganizationConfigResponse":{"type":"object","properties":{"is_acrolinx_classic":{"type":"boolean"},"style_agent":{"$ref":"#/components/schemas/StyleAgentMode"},"style_agent_numeric_scoring":{"type":"boolean"},"allow_user_tracking":{"type":"boolean"}},"required":["is_acrolinx_classic","style_agent","style_agent_numeric_scoring","allow_user_tracking"],"description":"Org-level configuration slice that drives client-side behaviour.\n\nReturned by ``GET /account/config`` for both JWT and API-key auth. The\norganization is identified by the auth credential — no request-side org\nid is needed (the API key already carries one). This intentionally omits\nuser_profile / user fields that don't make sense for API-key callers.","title":"OrganizationConfigResponse"},"TargetResponse":{"type":"object","properties":{"id":{"type":"string"},"display_name":{"type":"string"},"is_default":{"type":"boolean"},"inherited":{"type":"boolean","default":false},"enabled":{"type":"boolean"},"description":{"type":["string","null"]},"language":{"type":["string","null"]},"language_name":{"type":["string","null"]},"language_variant":{"type":["string","null"]},"language_variant_name":{"type":["string","null"]}},"required":["id","display_name","is_default","enabled"],"description":"Flattened style guide (target) summary returned by list endpoints.\n\nMirrors the Scalable Language Server ``TargetListResponse`` shape; the\nlanguage fields are flattened (``language`` is an abbreviation here, not a\nnested object as in the detail response).","title":"TargetResponse"},"StyleGuideLanguage":{"type":"object","properties":{"display_name":{"type":"string"},"abbreviation":{"type":"string"}},"required":["display_name","abbreviation"],"title":"StyleGuideLanguage"},"StyleGuideLanguageVariant":{"type":"object","properties":{"identifier":{"type":"string"},"display_name":{"type":"string"}},"required":["identifier","display_name"],"title":"StyleGuideLanguageVariant"},"StyleGuideParameter":{"type":"object","properties":{"name":{"type":["string","null"]},"id":{"type":["string","null"]},"label":{"type":["string","null"]},"display_name":{"type":["string","null"]},"type":{"type":["string","null"]},"minimum":{"type":["number","null"],"format":"double"},"maximum":{"type":["number","null"],"format":"double"}},"description":"A parameter definition for a guideline: its key, label, value type, and\nnumeric bounds.","title":"StyleGuideParameter"},"StyleGuideCompoundOption":{"type":"object","properties":{"id":{"type":["string","null"]},"display_name":{"type":["string","null"]}},"description":"One selectable option for a multi-option (\"compound\") guideline.","title":"StyleGuideCompoundOption"},"StyleGuideGuideline":{"type":"object","properties":{"id":{"type":"string"},"identifier":{"type":"string"},"display_name":{"type":"string"},"guideline_type":{"type":"string"},"context_configurable":{"type":"boolean","default":false},"active":{"type":"boolean","default":false},"parameters":{"type":["array","null"],"items":{"$ref":"#/components/schemas/StyleGuideParameter"}},"parameter_value":{"type":["object","null"],"additionalProperties":{"description":"Any type"}},"contexts":{"type":["array","null"],"items":{"type":"string"}},"contexts_filter_type":{"type":["string","null"]},"contexts_active":{"type":"boolean","default":false},"compound_selected_value":{"type":["string","null"]},"compound_available_values":{"type":"array","items":{"$ref":"#/components/schemas/StyleGuideCompoundOption"}}},"required":["id","identifier","display_name","guideline_type"],"description":"A single guideline (rule) within a style guide goal group.\n\n``presets`` and other SLS-internal metadata are intentionally omitted: the\ncustomer-facing view renders only the resolved state for the selected\npreset. Nested ``parameters`` / ``compound_available_values`` use narrow\nmodels (not opaque dicts) so internal fields can't leak through either.","title":"StyleGuideGuideline"},"StyleGuideGoalGroup":{"type":"object","properties":{"id":{"type":"string"},"display_name":{"type":["string","null"]},"sort_key":{"type":["integer","null"]},"guidelines":{"type":"array","items":{"$ref":"#/components/schemas/StyleGuideGuideline"}}},"required":["id"],"title":"StyleGuideGoalGroup"},"StyleGuideGoal":{"type":"object","properties":{"id":{"type":"string"},"identifier":{"type":"string"},"display_name":{"type":["string","null"]},"color":{"type":["string","null"]},"sort_key":{"type":["integer","null"]},"severity":{"type":["string","null"]},"goal_groups":{"type":"array","items":{"$ref":"#/components/schemas/StyleGuideGoalGroup"}}},"required":["id","identifier"],"title":"StyleGuideGoal"},"TargetDetailResponse":{"type":"object","properties":{"id":{"type":"string"},"display_name":{"type":"string"},"description":{"type":["string","null"]},"enabled":{"type":"boolean","default":true},"language":{"$ref":"#/components/schemas/StyleGuideLanguage"},"language_variant":{"oneOf":[{"$ref":"#/components/schemas/StyleGuideLanguageVariant"},{"type":"null"}]},"goals":{"type":"array","items":{"$ref":"#/components/schemas/StyleGuideGoal"}}},"required":["id","display_name","language"],"description":"Full style guide configuration: goals -> groups -> guidelines.\n\nTrimmed from the SLS ``TargetResponse``: presets and internal source\nmetadata are dropped so the customer-facing console renders only what the\nread-only view needs.","title":"TargetDetailResponse"},"StyleGuideSummaryResponse":{"type":"object","properties":{"id":{"type":"string"},"display_name":{"type":"string"},"is_default":{"type":"boolean"},"inherited":{"type":"boolean","default":false},"enabled":{"type":"boolean"},"description":{"type":["string","null"]},"language":{"type":["string","null"]},"language_name":{"type":["string","null"]},"language_variant":{"type":["string","null"]},"language_variant_name":{"type":["string","null"]}},"required":["id","display_name","is_default","enabled"],"description":"Style guide summary, as returned by ``GET /style-agent/style-guides``.","title":"StyleGuideSummaryResponse"},"StyleGuideDetailResponse":{"type":"object","properties":{"id":{"type":"string"},"display_name":{"type":"string"},"description":{"type":["string","null"]},"enabled":{"type":"boolean","default":true},"language":{"$ref":"#/components/schemas/StyleGuideLanguage"},"language_variant":{"oneOf":[{"$ref":"#/components/schemas/StyleGuideLanguageVariant"},{"type":"null"}]},"goals":{"type":"array","items":{"$ref":"#/components/schemas/StyleGuideGoal"}}},"required":["id","display_name","language"],"description":"Full style guide configuration (goals, groups, and guidelines), as\nreturned by ``GET /style-agent/style-guides/{style_guide_id}``.","title":"StyleGuideDetailResponse"},"ContentProfileResponse":{"type":"object","properties":{"id":{"type":"string"},"profile_id":{"type":"string"},"organization_name":{"type":"string"},"display_name":{"type":"string"},"description":{"type":["string","null"]},"enabled":{"type":["boolean","null"]},"inherited":{"type":["boolean","null"]},"source_organization":{"type":["string","null"]}},"required":["id","profile_id","organization_name","display_name"],"title":"ContentProfileResponse"},"StyleAgentRunRequest":{"type":"object","properties":{"style_guide_id":{"type":["string","null"],"minLength":1,"description":"Style guide ID to check the document against. ``target_id`` is a deprecated alias for this field; send exactly one of the two names."},"content_profile_id":{"type":["string","null"],"minLength":1,"description":"Language-service content profile ID for style checking."},"domain_ids":{"type":["array","null"],"items":{"type":"string","minLength":1},"description":"Terminology domain IDs."},"document_ref":{"type":["string","null"],"minLength":1,"maxLength":512,"description":"Caller-provided document identifier for tracking across scans."},"url":{"type":["string","null"],"minLength":1,"description":"Document URL."},"document_name":{"type":["string","null"],"minLength":1,"description":"Document name or title."},"webhook_url":{"type":["string","null"],"format":"uri","minLength":1,"maxLength":2083,"description":"Optional webhook URL for async result delivery."},"text":{"type":"string","minLength":1,"maxLength":100000,"description":"Document text to analyze."}},"required":["text"],"description":"Request body for a Style Agent content check.","title":"StyleAgentRunRequest"},"helios_shared__cortex__models__response__WorkflowStatus":{"type":"string","enum":["running","completed","failed","timed_out","cancelled"],"description":"Status of a workflow execution.","title":"helios_shared__cortex__models__response__WorkflowStatus"},"CheckType":{"type":"string","enum":["interactive","automated","batch","baseline"],"description":"How a content check should be counted.\n\nThe type fixes two things about a result: its priority (is someone waiting?)\nand its attribution (does it count as authoring activity for a person?).\n\n- INTERACTIVE: a writer checking content as they work — high priority, assigned.\n- AUTOMATED: a save/update check credited to the last editor — assigned.\n- BATCH: a bulk check of content you own — assigned to the content's author.\n- BASELINE: a check of content you do NOT own — a measurement, not authoring,\n  so it is not assigned to anyone.","title":"CheckType"},"StyleAgentAnalysis":{"type":"object","properties":{"styleGuideId":{"type":["string","null"]},"styleGuideDisplayName":{"type":["string","null"]},"targetId":{"type":["string","null"],"deprecated":true},"targetDisplayName":{"type":["string","null"],"deprecated":true},"contentProfileId":{"type":["string","null"]},"contentProfileDisplayName":{"type":["string","null"]},"words":{"type":["integer","null"]},"sentences":{"type":["integer","null"]},"clarityIndex":{"type":["number","null"],"format":"double"},"informalityIndex":{"type":["number","null"],"format":"double"},"livelinessIndex":{"type":["number","null"],"format":"double"},"fleschReadingEase":{"type":["number","null"],"format":"double"},"fleschKincaid":{"type":["number","null"],"format":"double","description":"Flesch-Kincaid grade level: the approximate US school grade needed to read the text. Lower is easier to read. It has no fixed range."}},"description":"Style guide, content profile, and readability metadata forwarded from SLS.\n\nCortex populates this from the language-service ``data.analysis`` block\n(legacy ``targetId`` naming) and helios_one republishes it on the\nstyle-agent API surface. ``styleGuideId`` / ``styleGuideDisplayName`` are\nthe canonical public keys; the legacy ``targetId`` / ``targetDisplayName``\nkeys carry the same values (and are marked deprecated in the schema) until\nremoved in a future API version. The mirror runs on validation, so results\npersisted before the rename gain the canonical keys when re-validated.","title":"StyleAgentAnalysis"},"StyleAgentResult":{"type":"object","properties":{"analysis":{"oneOf":[{"$ref":"#/components/schemas/StyleAgentAnalysis"},{"type":"null"}],"description":"Style guide, content profile, and readability metadata for the checked document. Omitted while the run is in progress and for organizations without numeric scoring."}},"description":"Result of a Style Agent content check.\n\nOnly the ``analysis`` block is typed here — issues, quality scores, and\nany agent-specific keys flow through unchanged (``extra=\"allow\"``).\nValidating ``analysis`` at this edge also mirrors the legacy\n``targetId`` naming onto the canonical ``styleGuideId`` keys for results\npersisted before the rename.","title":"StyleAgentResult"},"StyleAgentRunResponse":{"type":"object","properties":{"workflow_id":{"type":"string","description":"Workflow ID for tracking"},"request_id":{"type":["string","null"],"description":"Request tracking ID"},"status":{"$ref":"#/components/schemas/helios_shared__cortex__models__response__WorkflowStatus","description":"Workflow status"},"document_ref":{"type":["string","null"],"description":"Caller-provided document identifier."},"check_type":{"$ref":"#/components/schemas/CheckType","description":"How this check is counted: 'batch' for a document checked as part of a batch, 'interactive' for a direct /run check."},"assigned":{"type":"boolean","default":true,"description":"Whether the check counts as authoring activity for an author."},"batch_id":{"type":["string","null"],"description":"Owning batch id (agbw_<nanoid>); null unless this is a batch check."},"result":{"oneOf":[{"$ref":"#/components/schemas/StyleAgentResult"},{"type":"null"}],"description":"Execution result (if completed)"},"started_at":{"type":"string","format":"date-time","description":"Workflow start time"},"completed_at":{"type":["string","null"],"format":"date-time","description":"Workflow completion time"},"duration_seconds":{"type":["number","null"],"format":"double","description":"Execution duration"}},"required":["workflow_id","status","started_at"],"description":"Response for a Style Agent content-check run, with the result envelope\ntyped so the ``analysis`` naming contract is part of the published\nschema. The generic ``/agents`` endpoints keep the untyped result.","title":"StyleAgentRunResponse"},"StyleAgentWorkflowStatusResponse":{"type":"object","properties":{"workflow_id":{"type":"string","description":"Workflow ID"},"agent_id":{"type":"string","default":"","description":"Agent that ran this workflow"},"document_ref":{"type":["string","null"],"description":"Caller-provided document identifier."},"check_type":{"$ref":"#/components/schemas/CheckType","description":"How this check is counted: 'batch' for a document checked as part of a batch, 'interactive' for a direct /run check."},"assigned":{"type":"boolean","default":true,"description":"Whether the check counts as authoring activity for an author."},"batch_id":{"type":["string","null"],"description":"Owning batch id (agbw_<nanoid>); null unless this is a batch check."},"status":{"$ref":"#/components/schemas/helios_shared__cortex__models__response__WorkflowStatus","description":"Current status"},"result":{"oneOf":[{"$ref":"#/components/schemas/StyleAgentResult"},{"type":"null"}],"description":"Result (if completed)"},"started_at":{"type":"string","format":"date-time","description":"Start time"},"completed_at":{"type":["string","null"],"format":"date-time","description":"Workflow completion time"}},"required":["workflow_id","status","started_at"],"description":"Status of a Style Agent content-check run, with the result envelope\ntyped so the ``analysis`` naming contract is part of the published\nschema.","title":"StyleAgentWorkflowStatusResponse"},"BatchItemRequest":{"type":"object","properties":{"document_ref":{"type":["string","null"],"minLength":1,"maxLength":512,"description":"Caller-provided document identifier."},"style_guide_id":{"type":["string","null"],"minLength":1,"description":"Style guide to check against (overrides defaults)."},"content_profile_id":{"type":["string","null"],"minLength":1},"domain_ids":{"type":["array","null"],"items":{"type":"string","minLength":1}},"url":{"type":["string","null"],"minLength":1},"document_name":{"type":["string","null"],"minLength":1},"author":{"type":["string","null"],"minLength":1,"maxLength":255,"description":"Who this document's check is credited to (D16). A batch check counts as authoring activity for its content's author; supply that identity here. When omitted, the check is credited to the batch's runner."},"text":{"type":"string","minLength":1,"maxLength":100000}},"required":["text"],"description":"One document to check. Style-agent fields only (D4/D13).","title":"BatchItemRequest"},"BatchDefaults":{"type":"object","properties":{"style_guide_id":{"type":["string","null"],"minLength":1},"content_profile_id":{"type":["string","null"],"minLength":1},"domain_ids":{"type":["array","null"],"items":{"type":"string","minLength":1}}},"description":"Optional per-batch defaults applied to any item that omits the field.","title":"BatchDefaults"},"CreateBatchRequest":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BatchItemRequest"}},"defaults":{"oneOf":[{"$ref":"#/components/schemas/BatchDefaults"},{"type":"null"}]},"webhook_url":{"type":["string","null"],"format":"uri","minLength":1,"maxLength":2083,"description":"Notified when the batch reaches a terminal state (D5). Delivery is bounded best-effort, not guaranteed: a failed POST is retried with backoff for roughly two hours and then abandoned, so this endpoint may be called zero times or more than once. GET /style-agent/batch/{batch_id} is authoritative — poll it if the notification has not arrived. Deduplicate on the payload's batch_id: a batch has exactly one completion event, so batch_id is its stable event id."}},"required":["items"],"title":"CreateBatchRequest"},"BatchStatus":{"type":"string","enum":["running","completed"],"description":"Lifecycle of a style-agent batch (see design-docs/style-agent-batch-checking.md).\n\nA batch is ``running`` while any item is non-terminal; it becomes\n``completed`` (and ``sealed``) once every item reaches a terminal state.","title":"BatchStatus"},"BatchItemStatus":{"type":"string","enum":["pending","running","completed","failed"],"description":"Per-document status within a batch, cached from the child workflow.","title":"BatchItemStatus"},"BatchItemErrorCategory":{"type":"string","enum":["input","processing"],"description":"Why a batch item failed (D7): a bad request vs. a processing/system fault.","title":"BatchItemErrorCategory"},"BatchItemResponse":{"type":"object","properties":{"item_id":{"type":"string"},"document_ref":{"type":["string","null"]},"workflow_id":{"type":"string"},"status":{"$ref":"#/components/schemas/BatchItemStatus"},"error_category":{"oneOf":[{"$ref":"#/components/schemas/BatchItemErrorCategory"},{"type":"null"}]}},"required":["item_id","workflow_id","status"],"description":"Per-item entry in a batch response (no full result — fetch by workflow_id, D5).","title":"BatchItemResponse"},"BatchAcceptedResponse":{"type":"object","properties":{"batch_id":{"type":"string"},"segment_workflow_id":{"type":"string"},"status":{"$ref":"#/components/schemas/BatchStatus"},"item_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"$ref":"#/components/schemas/BatchItemResponse"}}},"required":["batch_id","segment_workflow_id","status","item_count","created_at","items"],"description":"202 body for create/append.","title":"BatchAcceptedResponse"},"BatchSummary":{"type":"object","properties":{"batch_id":{"type":"string"},"status":{"$ref":"#/components/schemas/BatchStatus"},"sealed":{"type":"boolean"},"item_count":{"type":"integer"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["batch_id","status","sealed","item_count","created_at","updated_at"],"description":"Row in GET /style-agent/batch (list).","title":"BatchSummary"},"BatchListResponse":{"type":"object","properties":{"batches":{"type":"array","items":{"$ref":"#/components/schemas/BatchSummary"}}},"required":["batches"],"title":"BatchListResponse"},"AppendItemsRequest":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/BatchItemRequest"}},"defaults":{"oneOf":[{"$ref":"#/components/schemas/BatchDefaults"},{"type":"null"}]}},"required":["items"],"title":"AppendItemsRequest"},"BatchCounts":{"type":"object","properties":{"total":{"type":"integer","default":0},"pending":{"type":"integer","default":0},"running":{"type":"integer","default":0},"completed":{"type":"integer","default":0},"failed":{"type":"integer","default":0}},"title":"BatchCounts"},"BatchReportResponse":{"type":"object","properties":{"batch_id":{"type":"string"},"status":{"$ref":"#/components/schemas/BatchStatus"},"sealed":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"},"item_count":{"type":"integer"},"counts":{"$ref":"#/components/schemas/BatchCounts"},"items":{"type":"array","items":{"$ref":"#/components/schemas/BatchItemResponse"}}},"required":["batch_id","status","sealed","created_at","updated_at","item_count","counts","items"],"description":"Live report for GET /style-agent/batch/{id} (D5/D12).","title":"BatchReportResponse"},"EntryWriteResult":{"type":"object","properties":{"uuid":{"type":"string","description":"The entry's uuid, as in ACTIF `entry/uuid`."},"id":{"type":"string","description":"The entry's ID, as in ACTIF `entry/id`."},"created":{"type":"boolean","description":"True if the entry was new; false if it replaced a stored one."}},"required":["uuid","id","created"],"description":"One entry from the posted document, as stored.","title":"EntryWriteResult"},"EntryWriteResponse":{"type":"object","properties":{"entries":{"type":"array","items":{"$ref":"#/components/schemas/EntryWriteResult"}}},"required":["entries"],"description":"The entries a `POST /entries` request stored, in document order.","title":"EntryWriteResponse"},"EntryWriteErrorResponse":{"type":"object","properties":{"detail":{"type":"string","description":"A description of the error that occurred."},"status":{"type":"integer","description":"The HTTP status code generated by the server for this issue"},"request_id":{"type":"string","description":"A unique ID associated with the HTTP request."},"errors":{"type":"array","items":{"type":"string"},"description":"Every problem found, each naming the entry (by position in the document) and term it is in."}},"required":["detail","status","request_id","errors"],"description":"Why the posted entries were not stored.","title":"EntryWriteErrorResponse"},"StyleAgentTerminologyTermsGetParametersMatch":{"type":"string","enum":["contains","exact","wildcard"],"default":"contains","description":"How `query` matches, case-insensitively: `contains` a substring, `exact` the whole surface, or `wildcard` the whole surface with `%` matching any run of characters and `_` one character (escape either with `\\`).","title":"StyleAgentTerminologyTermsGetParametersMatch"},"SurfaceResponse":{"type":"object","properties":{"surface":{"type":"string"},"lowercasesurface":{"type":["string","null"]},"lemmastart":{"type":"integer"},"lemmalength":{"type":"integer"}},"required":["surface","lemmastart","lemmalength"],"title":"SurfaceResponse"},"CategoryResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Identifier used by this API."},"type":{"type":"string","format":"uuid","description":"Category type ID"},"parent":{"type":["string","null"],"format":"uuid"},"name":{"type":"string","description":"Name, unique within the type; for languages, the language code such as `en`."},"displayname":{"type":"string"},"priority":{"type":["integer","null"]},"issystem":{"type":"boolean"},"uuid":{"type":"string","description":"Stable identifier carried over from Acrolinx terminology."},"external_id":{"type":"string"}},"required":["id","type","name","displayname","issystem","uuid","external_id"],"description":"One category: a language, status, domain, part of speech, or a value of\na custom category type.","title":"CategoryResponse"},"TermVariantRuleOverrides":{"type":"object","properties":{"flagVariants":{"type":["boolean","null"]},"allowHyphen":{"type":["boolean","null"]},"allowTitleAnywhere":{"type":["boolean","null"]},"allowUpperCase":{"type":["boolean","null"]},"allowBOS":{"type":["boolean","null"]},"requireBOSFormAtBOS":{"type":["boolean","null"]},"upperCaseTitleAfterHyphen":{"type":["boolean","null"]},"applyMcatRestriction":{"type":["boolean","null"]}},"description":"Per-term overrides of the account-wide variant rules. Null uses the account-wide value.","title":"TermVariantRuleOverrides"},"TermVariantSettings":{"type":"object","properties":{"rules":{"$ref":"#/components/schemas/TermVariantRuleOverrides"},"bosForms":{"type":"array","items":{"type":"string"},"description":"Forms accepted at the beginning of a sentence."},"titleForms":{"type":"array","items":{"type":"string"},"description":"Forms accepted as the title form."},"alwaysFlag":{"type":"array","items":{"type":"string"},"description":"Variants that are always flagged."},"neverFlag":{"type":"array","items":{"type":"string"},"description":"Variants that are never flagged."}},"description":"How variants of one term are matched during checking.","title":"TermVariantSettings"},"CustomFieldValueResponse":{"type":"object","properties":{"field_id":{"type":"string","format":"uuid"},"field_uuid":{"type":"string"},"name":{"type":"string"},"displayname":{"type":"string"},"type":{"type":"string"},"isconceptlevel":{"type":"boolean"},"ismultiline":{"type":"boolean"},"location":{"type":"integer"},"string_value":{"type":["string","null"]},"category_values":{"type":"array","items":{"$ref":"#/components/schemas/CategoryResponse"},"default":[]}},"required":["field_id","field_uuid","name","displayname","type","isconceptlevel","ismultiline","location"],"description":"One custom field's value for a term.\n\nText fields carry `string_value`; category fields carry `category_values`,\nwith every selected category of a multi-select field in one entry.\n`field_uuid` is the field's stable identifier carried over from Acrolinx\nterminology and kept across import and export.","title":"CustomFieldValueResponse"},"StyleAgentTermResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Identifier used by this API."},"uuid":{"type":"string","description":"The term's stable uuid, as in ACTIF `term/uuid`; searchable with `term_uuid`."},"external_id":{"type":"string","description":"The term's ID, as in ACTIF `term/id`."},"conceptid":{"type":"string","description":"The entry's ID, as in ACTIF `entry/id`."},"conceptuuid":{"type":"string","description":"The entry's uuid, as in ACTIF `entry/uuid`; searchable with `entry_uuid`."},"isconcept":{"type":"string","description":"`t` for the entry's head (primary) term, `f` otherwise."},"surface":{"oneOf":[{"$ref":"#/components/schemas/SurfaceResponse"},{"type":"null"}]},"language":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]},"status":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]},"msr":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]},"categories":{"type":"array","items":{"$ref":"#/components/schemas/CategoryResponse"},"default":[]},"variantsconfigurations":{"type":["string","null"]},"variant_settings":{"$ref":"#/components/schemas/TermVariantSettings"},"frequency":{"type":"integer","default":0},"creationdate":{"type":["string","null"],"format":"date-time"},"creator":{"type":["string","null"]},"lastmodificationdate":{"type":["string","null"],"format":"date-time"},"lastmodifier":{"type":["string","null"]},"linked_term_count":{"type":"integer","default":0},"member_count":{"type":"integer","default":0},"custom_fields":{"type":"object","additionalProperties":{"type":["string","null"]},"default":{}},"custom_field_values":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueResponse"},"default":[]}},"required":["id","uuid","external_id","conceptid","conceptuuid","isconcept"],"description":"A term: one designation of an entry (concept) in one language.","title":"StyleAgentTermResponse"},"PaginatedTermsResponse":{"type":"object","properties":{"terms":{"type":"array","items":{"$ref":"#/components/schemas/StyleAgentTermResponse"}},"total_count":{"type":"integer"},"page":{"type":"integer"},"page_size":{"type":"integer"},"total_pages":{"type":"integer"}},"required":["terms","total_count","page","page_size","total_pages"],"title":"PaginatedTermsResponse"},"TermSuggestionResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"surface":{"type":"string"},"status":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]},"language":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]}},"required":["id","surface"],"description":"A term suggestion: enough to show the match and fetch the term.","title":"TermSuggestionResponse"},"CustomFieldValueInput":{"type":"object","properties":{"field_id":{"type":"string","format":"uuid"},"string_value":{"type":["string","null"]},"category_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["field_id"],"description":"One custom field's value(s) to persist for a term.\n\n`string_value` carries TEXT/HTML/IMAGE_URL fields; `category_ids` carries\nCATEGORY (one id) and CATEGORIES (many ids) fields. They are mutually\nexclusive per field — the field's type decides which applies. An empty\n`category_ids` with no `string_value` clears the field for that term.","title":"CustomFieldValueInput"},"StyleAgentTermCreateRequest":{"type":"object","properties":{"surface":{"type":"string","maxLength":255},"language_id":{"type":"string","format":"uuid"},"status_id":{"type":"string","format":"uuid"},"msr_id":{"type":["string","null"],"format":"uuid"},"masterterm_id":{"type":["string","null"],"format":"uuid","description":"Link to existing head term. If null, creates a new head term."},"variantsconfigurations":{"type":["string","null"],"description":"Raw variant configuration (newline-separated key=value). Prefer `variant_settings`; send one or the other."},"variant_settings":{"oneOf":[{"$ref":"#/components/schemas/TermVariantSettings"},{"type":"null"}]},"category_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"}},"concept_id":{"type":["string","null"],"description":"Human-readable concept ID. Defaults to surface text."},"custom_field_values":{"type":["array","null"],"items":{"$ref":"#/components/schemas/CustomFieldValueInput"}},"lemma_start":{"type":["integer","null"],"minimum":0,"description":"Character offset in `surface` of the word whose grammatical forms are checked. Send with `lemma_length`."},"lemma_length":{"type":["integer","null"],"minimum":0,"description":"Length of that word; 0 turns off checking of grammatical forms."}},"required":["surface","language_id","status_id"],"title":"StyleAgentTermCreateRequest"},"LinkedTermSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"surface":{"type":"string"},"status":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]},"language":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]}},"required":["id","surface"],"title":"LinkedTermSummary"},"TermDetailResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Identifier used by this API."},"uuid":{"type":"string","description":"The term's stable uuid, as in ACTIF `term/uuid`; searchable with `term_uuid`."},"external_id":{"type":"string","description":"The term's ID, as in ACTIF `term/id`."},"conceptid":{"type":"string","description":"The entry's ID, as in ACTIF `entry/id`."},"conceptuuid":{"type":"string","description":"The entry's uuid, as in ACTIF `entry/uuid`; searchable with `entry_uuid`."},"isconcept":{"type":"string","description":"`t` for the entry's head (primary) term, `f` otherwise."},"surface":{"oneOf":[{"$ref":"#/components/schemas/SurfaceResponse"},{"type":"null"}]},"language":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]},"status":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]},"msr":{"oneOf":[{"$ref":"#/components/schemas/CategoryResponse"},{"type":"null"}]},"categories":{"type":"array","items":{"$ref":"#/components/schemas/CategoryResponse"},"default":[]},"variantsconfigurations":{"type":["string","null"]},"variant_settings":{"$ref":"#/components/schemas/TermVariantSettings"},"frequency":{"type":"integer","default":0},"creationdate":{"type":["string","null"],"format":"date-time"},"creator":{"type":["string","null"]},"lastmodificationdate":{"type":["string","null"],"format":"date-time"},"lastmodifier":{"type":["string","null"]},"linked_term_count":{"type":"integer","default":0},"member_count":{"type":"integer","default":0},"custom_fields":{"type":"object","additionalProperties":{"type":["string","null"]},"default":{}},"custom_field_values":{"type":"array","items":{"$ref":"#/components/schemas/CustomFieldValueResponse"},"default":[]},"member_terms":{"type":"array","items":{"$ref":"#/components/schemas/LinkedTermSummary"},"default":[]}},"required":["id","uuid","external_id","conceptid","conceptuuid","isconcept"],"description":"A term, with the other terms of its entry.","title":"TermDetailResponse"},"StyleAgentTermUpdateRequest":{"type":"object","properties":{"surface":{"type":["string","null"],"maxLength":255},"language_id":{"type":["string","null"],"format":"uuid"},"status_id":{"type":["string","null"],"format":"uuid"},"msr_id":{"type":["string","null"],"format":"uuid"},"variantsconfigurations":{"type":["string","null"],"description":"Raw variant configuration (newline-separated key=value). Prefer `variant_settings`; send one or the other."},"variant_settings":{"oneOf":[{"$ref":"#/components/schemas/TermVariantSettings"},{"type":"null"}]},"category_ids":{"type":["array","null"],"items":{"type":"string","format":"uuid"}},"custom_field_values":{"type":["array","null"],"items":{"$ref":"#/components/schemas/CustomFieldValueInput"}},"lemma_start":{"type":["integer","null"],"minimum":0,"description":"Character offset in `surface` of the word whose grammatical forms are checked. Send with `lemma_length`."},"lemma_length":{"type":["integer","null"],"minimum":0,"description":"Length of that word; 0 turns off checking of grammatical forms."}},"title":"StyleAgentTermUpdateRequest"},"TermSetDetailResponse":{"type":"object","properties":{"concept_id":{"type":"string"},"concept_uuid":{"type":"string"},"terms":{"type":"array","items":{"$ref":"#/components/schemas/StyleAgentTermResponse"}}},"required":["concept_id","concept_uuid","terms"],"description":"An entry (concept) and all of its terms.","title":"TermSetDetailResponse"},"TermHistoryResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"eventtype":{"type":"string"},"eventtext":{"type":["string","null"]},"username":{"type":["string","null"]},"eventdate":{"type":"string","format":"date-time"}},"required":["id","eventtype","eventdate"],"title":"TermHistoryResponse"},"TermCommentCreateRequest":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":3000}},"required":["text"],"description":"A comment on a term. It is recorded as a `COMMENT` event in the term's\nhistory.","title":"TermCommentCreateRequest"},"TermContributionRequest":{"type":"object","properties":{"surface":{"type":"string","minLength":1,"maxLength":255},"language_id":{"type":"string","format":"uuid"},"category_ids":{"type":"array","items":{"type":"string","format":"uuid"}},"custom_field_values":{"type":["array","null"],"items":{"$ref":"#/components/schemas/CustomFieldValueInput"}},"comment":{"type":["string","null"],"maxLength":3000}},"required":["surface","language_id","category_ids"],"description":"A proposed term.\n\nIt always becomes a new entry with `proposed` status. `category_ids` must\nname at least one domain.","title":"TermContributionRequest"},"TerminologyJobLanguage":{"type":"object","properties":{"language":{"type":"string"},"status":{"type":"string","description":"`succeeded`, `stored`, `failed`, or `empty`. `empty` means the organization has no terminology at all — a language with none of its own is published as a document with no entries and reports `succeeded`. `stored` means it was published but is not being served, because no language variant is configured for this language; publishing again once one is will serve it."},"term_count":{"type":"integer","default":0},"error":{"type":["string","null"]}},"required":["language","status"],"description":"How one language's build ended, on a finished publish.","title":"TerminologyJobLanguage"},"ImportTermFilterOutcomeOutcome":{"type":"string","enum":["imported","personal_view","skipped"],"description":"`imported`: a filter targets used, saved here and used for checking, replacing any filter of the same name. `personal_view`: someone's own Term Browser view, not brought over. `skipped`: a filter targets used that was not brought over; `reason` says why.","title":"ImportTermFilterOutcomeOutcome"},"ImportTermFilterOutcome":{"type":"object","properties":{"name":{"type":"string"},"outcome":{"$ref":"#/components/schemas/ImportTermFilterOutcomeOutcome","description":"`imported`: a filter targets used, saved here and used for checking, replacing any filter of the same name. `personal_view`: someone's own Term Browser view, not brought over. `skipped`: a filter targets used that was not brought over; `reason` says why."},"owner":{"type":["string","null"],"description":"The legacy user the filter belonged to."},"reason":{"type":["string","null"]},"replaced":{"type":"boolean","default":false,"description":"Imported over a filter of the same name made or edited here."}},"required":["name","outcome"],"description":"What an import did with one of the legacy terminology's saved term filters.","title":"ImportTermFilterOutcome"},"PublishTermFilterOutcomeOutcome":{"type":"string","enum":["published","skipped"],"description":"`published`: sent with the terminology as a term set of its name. `skipped`: not sent; `reason` says why.","title":"PublishTermFilterOutcomeOutcome"},"PublishTermFilterOutcome":{"type":"object","properties":{"name":{"type":"string"},"outcome":{"$ref":"#/components/schemas/PublishTermFilterOutcomeOutcome","description":"`published`: sent with the terminology as a term set of its name. `skipped`: not sent; `reason` says why."},"reason":{"type":["string","null"]},"term_counts":{"type":"object","additionalProperties":{"type":"integer"},"description":"For a published filter: the terms it was sent with, by language."}},"required":["name","outcome"],"description":"What a publish did with one filter used for checking.","title":"PublishTermFilterOutcome"},"TerminologyJobResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"job_type":{"type":"string","description":"Either `publish` or `import`."},"status":{"type":"string","description":"One of `queued`, `running`, `succeeded`, `failed`, or `canceled`. The first two mean the job is still holding the lock."},"stage":{"type":["string","null"],"description":"Coarse progress label while running; null once finished."},"started_by":{"type":["string","null"],"description":"Who started the job, for display."},"started_at":{"type":"string","format":"date-time"},"finished_at":{"type":["string","null"],"format":"date-time"},"error":{"type":["string","null"],"description":"Why the job failed; null unless status is `failed`."},"term_count":{"type":["integer","null"],"description":"Terms published, for a successful publish."},"stats":{"type":["object","null"],"additionalProperties":{"type":"integer"},"description":"Per-record-type counts, for a successful import."},"languages":{"type":"array","items":{"$ref":"#/components/schemas/TerminologyJobLanguage"},"description":"How each language fared, for a publish. Empty for an import, and for publishes that ran before per-language reporting existed."},"import_term_filters":{"type":"array","items":{"$ref":"#/components/schemas/ImportTermFilterOutcome"},"description":"What an import did with each of the legacy terminology's saved term filters. Empty for a publish, and for imports that ran before this was reported."},"publish_term_filters":{"type":"array","items":{"$ref":"#/components/schemas/PublishTermFilterOutcome"},"description":"What a publish did with each filter used for checking. Empty for an import, and for publishes that ran before this was reported."}},"required":["id","job_type","status","started_at"],"description":"A publish or import running in the background, or the last one that ran.","title":"TerminologyJobResponse"},"PublishLanguageState":{"type":"object","properties":{"language":{"type":"string"},"drift":{"type":"string","description":"How this language's live terminology compares to what is stored here. Same values, and the same caveat, as the top-level `drift`."},"last_published_at":{"type":["string","null"],"format":"date-time"},"last_compiled_at":{"type":["string","null"],"format":"date-time"}},"required":["language","drift"],"description":"Publish state for one of the languages an organization publishes.","title":"PublishLanguageState"},"PublishStateResponse":{"type":"object","properties":{"drift":{"type":"string","description":"`in_sync` (no change recorded since the last publish), `out_of_sync` (changed since the last publish), `never_published`, `publishing` (a publish is running, so the comparison is not meaningful yet), `incomplete` (published but the last build did not finish), or `unknown` (the live state is unavailable). `in_sync` reports that nothing was observed to change, which is not a guarantee that every edit reached the live copy — publish again if in doubt; doing so when already up to date is harmless."},"last_published_at":{"type":["string","null"],"format":"date-time"},"last_published_by":{"type":["string","null"]},"last_compiled_at":{"type":["string","null"],"format":"date-time"},"last_changed_at":{"type":["string","null"],"format":"date-time","description":"When this organization's terminology was last edited. Covers every change that affects what gets published — terms, categories, custom fields, ordering, variant settings and deletions. Null if nothing has been edited."},"language":{"type":"string","description":"The language the top-level fields describe. Organizations with terminology in more than one language should read `languages`."},"languages":{"type":"array","items":{"$ref":"#/components/schemas/PublishLanguageState"},"description":"Publish state for every language this organization has terminology in. Terminology tagged as language-independent is published with each of them."},"active_job":{"oneOf":[{"$ref":"#/components/schemas/TerminologyJobResponse"},{"type":"null"}],"description":"Set while a publish or import is in progress."},"error":{"type":["string","null"],"description":"Set when the live state could not be read; drift is then `unknown`."}},"required":["drift","language"],"description":"How the organization's terminology compares to what is live.","title":"PublishStateResponse"},"CurrentTerminologyJobResponse":{"type":"object","properties":{"active":{"type":"boolean","description":"Whether a job is in progress. While true, publishing and importing are unavailable to everyone in the organization."},"job":{"oneOf":[{"$ref":"#/components/schemas/TerminologyJobResponse"},{"type":"null"}],"description":"The in-progress job, or the most recent finished one. Null if this organization has never run either."}},"required":["active"],"description":"The job the terminology screens should be reflecting right now.","title":"CurrentTerminologyJobResponse"},"CategoryTypeResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Identifier used by this API."},"name":{"type":"string","description":"Unique name; ACTIF documents refer to it."},"displayname":{"type":"string"},"hierarchical":{"type":"boolean"},"system":{"type":"boolean","description":"Built-in types cannot be renamed or deleted."},"closed":{"type":"boolean"},"relationtype":{"type":"integer","description":"How many categories of this type one term may carry: `0` at least one, `1` zero or more, `2` exactly one, `3` at most one."},"membershaveseparatedisplayname":{"type":"boolean"},"uuid":{"type":"string","description":"Stable identifier carried over from Acrolinx terminology."},"external_id":{"type":"string","description":"External identifier; built-in types use the Acrolinx system identifier, for example `com.acrolinx.api.category.SystemCategoryTypeIdentifier.DOMAIN`."},"category_count":{"type":"integer","default":0,"description":"Number of categories of this type."}},"required":["id","name","displayname","hierarchical","system","closed","relationtype","membershaveseparatedisplayname","uuid","external_id"],"description":"A kind of category, such as language, status or domain.","title":"CategoryTypeResponse"},"CategoryTypeCreateRequest":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Unique name of the type within the organization."},"displayname":{"type":"string","maxLength":255,"description":"Name shown to users."},"hierarchical":{"type":"boolean","default":true,"description":"Whether categories of this type can be nested under a parent."},"system":{"type":"boolean","default":false,"description":"Marks a built-in type, which cannot be renamed or deleted."},"closed":{"type":"boolean","default":false,"description":"Whether new top-level categories are blocked for this type."},"relationtype":{"type":"integer","default":0,"description":"How many categories of this type one term may carry: `0` at least one, `1` zero or more, `2` exactly one, `3` at most one."},"membershaveseparatedisplayname":{"type":"boolean","default":true,"description":"Whether this type's categories may have a display name that differs from their name."}},"required":["name","displayname"],"title":"CategoryTypeCreateRequest"},"CategoryTypeUpdateRequest":{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":255},"displayname":{"type":["string","null"],"maxLength":255},"hierarchical":{"type":["boolean","null"]},"closed":{"type":["boolean","null"]},"relationtype":{"type":["integer","null"],"description":"How many categories of this type one term may carry: `0` at least one, `1` zero or more, `2` exactly one, `3` at most one."},"membershaveseparatedisplayname":{"type":["boolean","null"]}},"description":"Partial update; omitted fields are left unchanged.","title":"CategoryTypeUpdateRequest"},"CategoryCreateRequest":{"type":"object","properties":{"type":{"type":"string","format":"uuid","description":"Category type ID"},"name":{"type":"string","maxLength":255,"description":"Name, unique within the type. Terms, searches and ACTIF documents refer to the category by this name."},"displayname":{"type":"string","maxLength":255,"description":"Name shown to users."},"parent":{"type":["string","null"],"format":"uuid","description":"Parent category of the same type, for hierarchical types."},"priority":{"type":"integer","default":0,"description":"Sort position among its siblings; lower first."},"issystem":{"type":"boolean","default":false,"description":"Marks a built-in category, which cannot be deleted."}},"required":["type","name","displayname"],"title":"CategoryCreateRequest"},"CategoryReorderRequest":{"type":"object","properties":{"type":{"type":"string","format":"uuid","description":"Category type ID"},"ordered_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["type","ordered_ids"],"description":"A new display order for all categories of one type.\n\n`ordered_ids` must list every category of the type, in the desired order;\neach category's `priority` becomes its position in the list.","title":"CategoryReorderRequest"},"CategoryUpdateRequest":{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":255},"displayname":{"type":["string","null"],"maxLength":255},"parent":{"type":["string","null"],"format":"uuid"},"priority":{"type":["integer","null"]}},"description":"Partial update; omitted fields are left unchanged.","title":"CategoryUpdateRequest"},"CustomFieldDefinitionResponse":{"type":"object","properties":{"field_id":{"type":"string","format":"uuid"},"field_uuid":{"type":"string"},"name":{"type":"string"},"displayname":{"type":"string"},"type":{"type":"string"},"isconceptlevel":{"type":"boolean"},"ismultiline":{"type":"boolean"},"isnullable":{"type":"boolean"},"location":{"type":"integer"},"value_range_type_id":{"type":["string","null"],"format":"uuid"}},"required":["field_id","field_uuid","name","displayname","type","isconceptlevel","ismultiline","isnullable","location"],"description":"A custom field's definition.\n\n`isconceptlevel` fields belong to the entry as a whole and are stored on\nits head term. For `CATEGORY` and `CATEGORIES` fields,\n`value_range_type_id` is the category type whose categories are the\nfield's options; it is null for text fields. `isnullable` is false for\nrequired fields.","title":"CustomFieldDefinitionResponse"},"CustomFieldCreateRequest":{"type":"object","properties":{"name":{"type":"string","maxLength":255},"displayname":{"type":"string","maxLength":255},"type":{"type":"string"},"location":{"type":"integer","default":0},"isconceptlevel":{"type":"boolean","default":false},"ismultiline":{"type":"boolean","default":false},"isnullable":{"type":"boolean","default":true},"value_range_type_id":{"type":["string","null"],"format":"uuid"}},"required":["name","displayname","type"],"description":"A new custom field.\n\n`type` is one of `TEXT`, `HTML`, `IMAGE_URL`, `CATEGORY` (one category)\nor `CATEGORIES` (several). `value_range_type_id` is required for the two\ncategory types, naming the category type whose categories become the\noptions, and ignored otherwise.","title":"CustomFieldCreateRequest"},"CustomFieldReorderRequest":{"type":"object","properties":{"ordered_ids":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["ordered_ids"],"description":"A new display order for all custom fields.\n\n`ordered_ids` must list every custom field, in the desired order; each\nfield's `location` becomes its position in the list.","title":"CustomFieldReorderRequest"},"CustomFieldUpdateRequest":{"type":"object","properties":{"name":{"type":["string","null"],"maxLength":255},"displayname":{"type":["string","null"],"maxLength":255},"type":{"type":["string","null"]},"location":{"type":["integer","null"]},"isconceptlevel":{"type":["boolean","null"]},"ismultiline":{"type":["boolean","null"]},"isnullable":{"type":["boolean","null"]},"value_range_type_id":{"type":["string","null"],"format":"uuid"}},"description":"Partial update; omitted fields are left unchanged.","title":"CustomFieldUpdateRequest"},"TermImageUploadResponse":{"type":"object","properties":{"filename":{"type":"string","description":"Name of the stored image. Write it as the value of an `IMAGE_URL` custom field, and pass it to `GET /images/{filename}` to download the image."}},"required":["filename"],"description":"An uploaded term image.","title":"TermImageUploadResponse"},"AgentsWorkflowsGetParametersStatusSchema":{"type":"string","enum":["running","completed","failed","cancelled","timed_out","terminated"],"description":"Filter by workflow status","title":"AgentsWorkflowsGetParametersStatusSchema"},"WorkflowStatusResponse":{"type":"object","properties":{"workflow_id":{"type":"string","description":"Workflow ID"},"agent_id":{"type":"string","default":"","description":"Agent that ran this workflow"},"document_ref":{"type":["string","null"],"description":"Caller-provided document identifier."},"check_type":{"$ref":"#/components/schemas/CheckType","description":"How this check is counted: 'batch' for a document checked as part of a batch, 'interactive' for a direct /run check."},"assigned":{"type":"boolean","default":true,"description":"Whether the check counts as authoring activity for an author."},"batch_id":{"type":["string","null"],"description":"Owning batch id (agbw_<nanoid>); null unless this is a batch check."},"status":{"$ref":"#/components/schemas/helios_shared__cortex__models__response__WorkflowStatus","description":"Current status"},"result":{"type":["object","null"],"additionalProperties":{"description":"Any type"},"description":"Result (if completed)"},"started_at":{"type":"string","format":"date-time","description":"Start time"},"completed_at":{"type":["string","null"],"format":"date-time","description":"Workflow completion time"}},"required":["workflow_id","status","started_at"],"description":"Status response for a workflow.","title":"WorkflowStatusResponse"},"PaginationInfo":{"type":"object","properties":{"next_cursor":{"type":["string","null"],"description":"Opaque cursor for fetching the next page"},"has_more":{"type":"boolean","description":"Whether more results are available"}},"required":["has_more"],"description":"Cursor-based pagination metadata.","title":"PaginationInfo"},"WorkflowListResponse":{"type":"object","properties":{"workflows":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowStatusResponse"},"description":"Workflow executions"},"pagination":{"$ref":"#/components/schemas/PaginationInfo","description":"Pagination metadata"}},"required":["workflows","pagination"],"description":"Paginated list of workflow executions.","title":"WorkflowListResponse"},"WorkflowCancelResponse":{"type":"object","properties":{"workflow_id":{"type":"string","description":"Workflow ID"},"cancelled_at":{"type":"string","format":"date-time","description":"Timestamp when cancellation was requested"}},"required":["workflow_id","cancelled_at"],"description":"Response from cancelling a workflow.","title":"WorkflowCancelResponse"},"AgentMetadataCadence":{"type":"string","enum":["per_chunk","per_fragment","doc_wide","on_demand"],"default":"on_demand","description":"§2.4 session routing cadence (configured in agents.yaml)","title":"AgentMetadataCadence"},"AgentUIMetadata":{"type":"object","properties":{"title":{"type":["string","null"],"description":"Display name override"},"description":{"type":["string","null"],"description":"Description override for UI"},"icon":{"type":"string","default":"bot","description":"Lucide icon key (e.g. 'spell-check')"}},"description":"UI presentation metadata for an agent.","title":"AgentUIMetadata"},"AgentMetadata":{"type":"object","properties":{"id":{"type":"string","description":"Stable agent ID (ag_<nanoid>) used for API routing"},"description":{"type":["string","null"],"description":"Agent description"},"input_schema":{"type":["object","null"],"additionalProperties":{"description":"Any type"},"description":"Input JSON schema"},"name":{"type":"string","description":"Agent name"},"output_schema":{"type":["object","null"],"additionalProperties":{"description":"Any type"},"description":"Output JSON schema"},"categories":{"type":"array","items":{"type":"string"},"description":"Category IDs for discovery and filtering"},"cadence":{"$ref":"#/components/schemas/AgentMetadataCadence","default":"on_demand","description":"§2.4 session routing cadence (configured in agents.yaml)"},"ui":{"$ref":"#/components/schemas/AgentUIMetadata","description":"UI metadata"}},"required":["id","name"],"description":"Metadata about a registered agent.","title":"AgentMetadata"},"AgentListResponse":{"type":"object","properties":{"agents":{"type":"array","items":{"$ref":"#/components/schemas/AgentMetadata"},"description":"Agents for the current page"},"total":{"type":"integer","description":"Total number of agents matching filters"},"page":{"type":"integer","description":"Current page number (1-based)"},"page_size":{"type":"integer","description":"Number of items per page"},"total_pages":{"type":"integer","description":"Total number of pages"},"no_llm":{"type":"boolean","description":"When true, the organization has disabled all LLM-powered agents; only the deterministic Style Agent is available and, unless `include_unavailable` is set, `agents` contains it alone (Style-Agent-only)."}},"required":["agents","total","page","page_size","total_pages","no_llm"],"description":"Paginated agent list plus the org-level no-LLM signal.\n\nReturned by ``GET /agents``. Extends the shared :class:`AgentListResult`\n(agents + pagination) with ``no_llm``, which only the HTTP boundary can\ncompute — the shared ``AgentLoader`` that builds ``AgentListResult`` has no\norganization context. By default the returned list already reflects every\nper-org gate (style-agent mode, per-agent on/off, and the no-LLM flag), so\nclients must not re-derive availability; ``no_llm`` lets them render the\nStyle-Agent-only state without doing so. With ``include_unavailable=true``\nthe list is the full catalog while ``no_llm`` still reports the org's flag.","title":"AgentListResponse"},"CategoryDefinition":{"type":"object","properties":{"id":{"type":"string","description":"Stable category ID (e.g. 'cat_r2FOEuqy06OR')"},"name":{"type":"string","description":"Human-readable display name"},"description":{"type":"string","description":"What this category covers"}},"required":["id","name","description"],"description":"A single agent category for API responses.","title":"CategoryDefinition"},"CategoryListResult":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/CategoryDefinition"},"description":"All defined categories"},"total":{"type":"integer","description":"Total number of categories"}},"required":["categories","total"],"description":"Result of listing all available categories.","title":"CategoryListResult"},"LensKey":{"type":"string","enum":["brand_profile","credibility","focus","ai_search"],"description":"Deprecated review-lens keys. Ignored; reviews select agents server-side.","title":"LensKey"},"AgentRunRequest":{"type":"object","properties":{"agents":{"type":["array","null"],"items":{"type":"string","minLength":1},"description":"Agent IDs to execute. Resolved to agent names server-side."},"lenses":{"type":["array","null"],"items":{"$ref":"#/components/schemas/LensKey"},"description":"Deprecated and ignored. A review selects its own agents server-side from the organization's enabled agents.","deprecated":true},"domain_ids":{"type":["array","null"],"items":{"type":"string","minLength":1},"description":"Terminology domain IDs."},"document_ref":{"type":["string","null"],"minLength":1,"maxLength":512,"description":"Caller-provided document identifier for tracking across scans."},"url":{"type":["string","null"],"minLength":1,"description":"Document URL."},"document_name":{"type":["string","null"],"minLength":1,"description":"Document name or title."},"style_guide_id":{"type":["string","null"],"minLength":1,"description":"Style guide ID to check the document against. ``target_id`` is a deprecated alias for this field; send exactly one of the two names."},"content_profile_id":{"type":["string","null"],"minLength":1,"description":"Language-service content profile ID for style checking."},"goal":{"type":["string","null"],"minLength":1,"maxLength":500,"description":"Document goal for agent recommendation."},"persona_id":{"type":["string","null"],"minLength":1,"description":"Agent configuration UUID for persona selection. Used by: persona. Retrieve valid IDs from GET /personas."},"persona_ids":{"type":["array","null"],"items":{"type":"string","minLength":1},"description":"Persona UUIDs to analyze against, max 3. Used by: persona. Send this or persona_id, not both. Retrieve valid IDs from GET /personas."},"no_personas":{"type":"boolean","default":false,"description":"Review the document without any reader's perspective. Set this when no persona was chosen on purpose; leave it unset to let the review pick the readers a document is written for. Cannot be sent with persona_ids."},"voice_profile_id":{"type":["string","null"],"minLength":1,"description":"Agent configuration UUID for brand voice profile selection. Used by: brand_voice. Retrieve valid IDs from GET /brand-voice-profiles."},"webhook_url":{"type":["string","null"],"format":"uri","minLength":1,"maxLength":2083,"description":"Optional webhook URL for async result delivery."},"text":{"type":"string","minLength":1,"maxLength":100000,"description":"Document text to analyze."},"issues":{"type":["array","null"],"items":{"type":"object","additionalProperties":{"description":"Any type"}},"description":"Issues from a previous run to act on, each exactly as returned in that run's result. Supported by agents that apply or rework existing findings; when provided, such an agent works from these instead of re-detecting. Positions must refer to the ``text`` in this request. Other agents ignore this field."},"generate_fixes":{"type":["boolean","null"],"description":"When true, agents that apply existing findings also draft a fix for findings that carry no suggested replacement. Every drafted fix is verified in context before it is applied; a finding whose draft fails that verification is returned unapplied and its text is left unchanged. Off by default. Other agents ignore this field."}},"required":["text"],"description":"Request to run an agent.","title":"AgentRunRequest"},"AgentRunResponse":{"type":"object","properties":{"workflow_id":{"type":"string","description":"Workflow ID for tracking"},"request_id":{"type":["string","null"],"description":"Request tracking ID"},"status":{"$ref":"#/components/schemas/helios_shared__cortex__models__response__WorkflowStatus","description":"Workflow status"},"document_ref":{"type":["string","null"],"description":"Caller-provided document identifier."},"check_type":{"$ref":"#/components/schemas/CheckType","description":"How this check is counted: 'batch' for a document checked as part of a batch, 'interactive' for a direct /run check."},"assigned":{"type":"boolean","default":true,"description":"Whether the check counts as authoring activity for an author."},"batch_id":{"type":["string","null"],"description":"Owning batch id (agbw_<nanoid>); null unless this is a batch check."},"result":{"type":["object","null"],"additionalProperties":{"description":"Any type"},"description":"Execution result (if completed)"},"started_at":{"type":"string","format":"date-time","description":"Workflow start time"},"completed_at":{"type":["string","null"],"format":"date-time","description":"Workflow completion time"},"duration_seconds":{"type":["number","null"],"format":"double","description":"Execution duration"}},"required":["workflow_id","status","started_at"],"description":"Response from agent run.","title":"AgentRunResponse"},"Seniority":{"type":"string","enum":["individual_contributor","manager","senior_manager","director","senior_director","vp","c_suite"],"title":"Seniority"},"Industry":{"type":"string","enum":["qsr","cpg","fintech","cosmetics","beverage","retail","gaming","b2b_saas","healthcare","media"],"title":"Industry"},"TechnicalLevel":{"type":"string","enum":["low","moderate","high","very_high"],"title":"TechnicalLevel"},"SkepticismLevel":{"type":"string","enum":["low","medium","high","very_high"],"title":"SkepticismLevel"},"EffortTolerance":{"type":"string","enum":["low","medium","high"],"title":"EffortTolerance"},"ReadingGoal":{"type":"string","enum":["quick_scan","deep_understanding","decision_making","research","validation"],"title":"ReadingGoal"},"BuyingAuthority":{"type":"string","enum":["decision_maker","recommender","evaluator","influencer","end_user"],"title":"BuyingAuthority"},"TonePreference":{"type":"string","enum":["direct","formal","conversational","technical","inspirational","peer_to_peer"],"title":"TonePreference"},"TrustTrigger":{"type":"string","enum":["data_and_proof","peer_references","technical_depth","executive_endorsement","transparency","innovation_track_record","specificity"],"title":"TrustTrigger"},"PetPeeve":{"type":"string","enum":["fluff","vague_claims","over_explanation","sales_speak","jargon","excessive_hedging","condescending_tone"],"title":"PetPeeve"},"CurrentPriority":{"type":"string","enum":["platform_migration","team_efficiency","exec_pressure","innovation_leadership","revenue_growth","brand_authenticity","loyalty_programs","ai_adoption","channel_expansion","retention"],"title":"CurrentPriority"},"PainPoint":{"type":"string","enum":["overextended","tool_fragmentation","proving_roi","slow_vendor","lack_of_creative_ideas","technical_debt","cross_team_alignment"],"title":"PainPoint"},"PersonaResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"organization_id":{"type":["string","null"],"format":"uuid"},"name":{"type":"string"},"title":{"type":["string","null"]},"seniority":{"oneOf":[{"$ref":"#/components/schemas/Seniority"},{"type":"null"}]},"industry":{"oneOf":[{"$ref":"#/components/schemas/Industry"},{"type":"null"}]},"technical_level":{"$ref":"#/components/schemas/TechnicalLevel"},"skepticism_level":{"$ref":"#/components/schemas/SkepticismLevel"},"effort_tolerance":{"$ref":"#/components/schemas/EffortTolerance"},"reading_goal":{"$ref":"#/components/schemas/ReadingGoal"},"buying_authority":{"oneOf":[{"$ref":"#/components/schemas/BuyingAuthority"},{"type":"null"}]},"tone_preference":{"$ref":"#/components/schemas/TonePreference"},"trust_triggers":{"type":"array","items":{"$ref":"#/components/schemas/TrustTrigger"}},"pet_peeves":{"type":"array","items":{"$ref":"#/components/schemas/PetPeeve"}},"current_priorities":{"type":"array","items":{"$ref":"#/components/schemas/CurrentPriority"}},"pain_points":{"type":"array","items":{"$ref":"#/components/schemas/PainPoint"}},"behavioral_context":{"type":"string"},"created_by_email":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","organization_id","name","title","seniority","industry","technical_level","skepticism_level","effort_tolerance","reading_goal","buying_authority","tone_preference","trust_triggers","pet_peeves","current_priorities","pain_points","behavioral_context","created_at","updated_at"],"title":"PersonaResponse"},"PersonaListResponse":{"type":"object","properties":{"personas":{"type":"array","items":{"$ref":"#/components/schemas/PersonaResponse"}},"total":{"type":"integer"}},"required":["personas","total"],"title":"PersonaListResponse"},"FingerprintPayload":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"source":{"type":"string","default":"defined"}},"required":["name","description"],"title":"FingerprintPayload"},"ExemplarPayload":{"type":"object","properties":{"passage":{"type":"string"},"annotation":{"type":"string","default":""},"fingerprint_names":{"type":"array","items":{"type":"string"}}},"required":["passage"],"title":"ExemplarPayload"},"BrandVoiceProfileResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"identity":{"type":"array","items":{"type":"string"}},"bright_lines":{"type":"array","items":{"type":"string"}},"fingerprints":{"type":"array","items":{"$ref":"#/components/schemas/FingerprintPayload"}},"exemplars":{"type":"array","items":{"$ref":"#/components/schemas/ExemplarPayload"}},"created_by_email":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}},"required":["id","name","identity","bright_lines","fingerprints","exemplars","created_at","updated_at"],"title":"BrandVoiceProfileResponse"},"BrandVoiceProfileListResponse":{"type":"object","properties":{"profiles":{"type":"array","items":{"$ref":"#/components/schemas/BrandVoiceProfileResponse"}},"total":{"type":"integer"}},"required":["profiles","total"],"title":"BrandVoiceProfileListResponse"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}