{"openapi":"3.1.0","info":{"title":"Evoduce API","summary":"Hosted Z3-backed neurosymbolic evaluator","version":"1.0.0"},"paths":{"/v1/verify":{"post":{"summary":"Strict check: is this extension provably safe to add?","operationId":"verify_v1_verify_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/verify/graded":{"post":{"summary":"Hard rules gate, weighted soft rules score","operationId":"verify_graded_v1_verify_graded_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/accept":{"post":{"summary":"Verify and, if SAT, return the grown vocabulary","operationId":"accept_v1_accept_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/optimize":{"post":{"summary":"MaxSMT: admit the max-weight consistent subset","operationId":"optimize_v1_optimize_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OptimizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/prove":{"post":{"summary":"Z3 consistency proof over the whole vocabulary","operationId":"prove_v1_prove_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VocabRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audit":{"post":{"summary":"Re-verify every predicate; returns failures","operationId":"audit_v1_audit_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VocabRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rules":{"get":{"summary":"Rule types a submitted vocabulary may declare","operationId":"rules_v1_rules_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs":{"post":{"tags":["jobs"],"summary":"Run prove / audit / optimize / evolve in the background","operationId":"submit_v1_jobs_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/jobs/{job_id}":{"get":{"tags":["jobs"],"summary":"Job status, and the result once it has succeeded","operationId":"status_v1_jobs__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/evolve/tiers":{"get":{"tags":["evolve"],"summary":"Which model tiers this server can use","operationId":"tiers_v1_evolve_tiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/evolve":{"post":{"tags":["evolve"],"summary":"Grow a vocabulary from prose or candidate terms; every addition is proven first","operationId":"evolve_v1_evolve_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvolveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/systemone":{"post":{"tags":["gateway"],"summary":"Jev-compatible: rules first, then cache, then the model","operationId":"systemone_v1_systemone_post","parameters":[{"name":"x-upstream-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Upstream-Key"}},{"name":"x-evoduce-upstream","in":"header","required":false,"schema":{"type":"string","default":"auto","title":"X-Evoduce-Upstream"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemOneRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["gateway"],"summary":"Jev-compatible: the models this server can answer with","description":"The shape Jev's SDKs read from GET /v1/models: {models: [{name, description, release_date}]}.","operationId":"models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/policies":{"get":{"tags":["gateway"],"summary":"Every question id this account has rules or observations for","operationId":"list_policies_v1_policies_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/policies/{question_id}":{"get":{"tags":["gateway"],"summary":"A question's rules, learned rules and learning mode","operationId":"get_policy_v1_policies__question_id__get","parameters":[{"name":"question_id","in":"path","required":true,"schema":{"type":"string","title":"Question Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["gateway"],"summary":"Set a question's rules and/or learning mode","operationId":"put_policy_v1_policies__question_id__put","parameters":[{"name":"question_id","in":"path","required":true,"schema":{"type":"string","title":"Question Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolicyUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/policies/{question_id}/approve":{"post":{"tags":["gateway"],"summary":"Promote learned rules into the question's rules","operationId":"approve_policy_v1_policies__question_id__approve_post","parameters":[{"name":"question_id","in":"path","required":true,"schema":{"type":"string","title":"Question Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Approve"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signup":{"post":{"tags":["account"],"summary":"Create an account and its first API key (shown once)","operationId":"signup_v1_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account":{"get":{"tags":["account"],"summary":"Account, keys and the last 30 days of usage","operationId":"account_v1_account_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account/keys":{"post":{"tags":["account"],"summary":"Create another API key (shown once)","operationId":"create_key_v1_account_keys_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewKeyRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account/keys/{key_id}":{"delete":{"tags":["account"],"summary":"Revoke an API key","operationId":"revoke_key_v1_account_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"integer","title":"Key Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usecases/types":{"get":{"tags":["use cases"],"summary":"The use case types, their default configuration and where their data lives","operationId":"types_v1_usecases_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/usecases":{"post":{"tags":["use cases"],"summary":"Sign up for a new use case; its type sets its configuration","operationId":"create_v1_usecases_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewUseCase"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["use cases"],"summary":"This account's use cases","operationId":"list_usecases_v1_usecases_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usecases/{name}":{"get":{"tags":["use cases"],"summary":"A use case's type, configuration and storage","operationId":"get_usecase_v1_usecases__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["use cases"],"summary":"Override settings of a use case; null restores the type's default","operationId":"update_usecase_v1_usecases__name__put","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/usecases/{name}/aliases":{"get":{"tags":["use cases"],"summary":"What the service has remembered about shared names","operationId":"get_aliases_v1_usecases__name__aliases_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"vocabulary","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vocabulary"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["use cases"],"summary":"Say which term a shared name belongs to","operationId":"put_alias_v1_usecases__name__aliases_put","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AliasOwner"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AliasOwner":{"properties":{"vocabulary":{"type":"string","maxLength":200,"minLength":1,"title":"Vocabulary"},"alias":{"type":"string","maxLength":200,"minLength":1,"title":"Alias"},"term":{"type":"string","maxLength":200,"minLength":1,"title":"Term"}},"type":"object","required":["vocabulary","alias","term"],"title":"AliasOwner"},"Approve":{"properties":{"indexes":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Indexes"}},"type":"object","title":"Approve"},"ConfigUpdate":{"properties":{"config":{"additionalProperties":true,"type":"object","title":"Config"}},"type":"object","required":["config"],"title":"ConfigUpdate"},"EvolveRequest":{"properties":{"vocabulary":{"additionalProperties":true,"type":"object","title":"Vocabulary"},"text":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Text","description":"Prose to read for new terms (needs the Claude tier)"},"terms":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":25},{"type":"null"}],"title":"Terms","description":"Candidate terms to place; tier 0 can settle these alone"},"auto_accept":{"type":"boolean","title":"Auto Accept","default":true},"max_repair_attempts":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Max Repair Attempts","default":3},"min_confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.5},{"type":"null"}],"title":"Min Confidence","description":"Tier-0 confidence required to act without escalating"}},"type":"object","required":["vocabulary"],"title":"EvolveRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JobRequest":{"properties":{"op":{"type":"string","enum":["prove","audit","optimize","evolve"],"title":"Op"},"vocabulary":{"additionalProperties":true,"type":"object","title":"Vocabulary"},"text":{"anyOf":[{"type":"string","maxLength":20000},{"type":"null"}],"title":"Text"},"terms":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":25},{"type":"null"}],"title":"Terms"},"auto_accept":{"type":"boolean","title":"Auto Accept","default":true},"max_repair_attempts":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Max Repair Attempts","default":3},"min_confidence":{"anyOf":[{"type":"number","maximum":1.0,"minimum":0.5},{"type":"null"}],"title":"Min Confidence"},"proposals":{"anyOf":[{"items":{"$ref":"#/components/schemas/Proposal"},"type":"array","maxItems":200},{"type":"null"}],"title":"Proposals"},"content_value":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Content Value"}},"type":"object","required":["op","vocabulary"],"title":"JobRequest"},"NewKeyRequest":{"properties":{"name":{"type":"string","maxLength":80,"minLength":1,"title":"Name","default":"key"}},"type":"object","title":"NewKeyRequest"},"NewUseCase":{"properties":{"name":{"type":"string","maxLength":63,"minLength":1,"title":"Name"},"type":{"type":"string","title":"Type"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"},"key":{"type":"string","enum":["new","current","none"],"title":"Key","description":"new: mint a key bound to this use case (shown once). current: bind the calling key. none: bind nothing; name it in X-Evoduce-Use-Case instead.","default":"new"}},"type":"object","required":["name","type"],"title":"NewUseCase"},"OptimizeRequest":{"properties":{"vocabulary":{"additionalProperties":true,"type":"object","title":"Vocabulary","description":"Vocabulary definition, as read by Vocabulary.from_dict"},"proposals":{"items":{"$ref":"#/components/schemas/Proposal"},"type":"array","maxItems":200,"minItems":1,"title":"Proposals"},"content_value":{"anyOf":[{"additionalProperties":{"type":"integer"},"type":"object"},{"type":"null"}],"title":"Content Value"}},"type":"object","required":["vocabulary","proposals"],"title":"OptimizeRequest"},"PolicyUpdate":{"properties":{"rules":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Rules"},"learning":{"anyOf":[{"type":"string","enum":["off","propose","auto"]},{"type":"null"}],"title":"Learning"},"min_support":{"anyOf":[{"type":"integer","maximum":1000.0,"minimum":2.0},{"type":"null"}],"title":"Min Support"}},"type":"object","title":"PolicyUpdate"},"Proposal":{"properties":{"name":{"type":"string","maxLength":200,"minLength":1,"title":"Name"},"symmetric":{"type":"boolean","title":"Symmetric","default":false},"inverse":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Inverse"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata"},"aliases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Aliases"}},"additionalProperties":true,"type":"object","required":["name"],"title":"Proposal","description":"A candidate predicate. Any key besides the reserved ones is an axis value.","example":{"duration":"temporary","name":"sliding_on","symmetric":true,"type":"contact"}},"SignupRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"turnstile_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Turnstile Token"},"use_cases":{"anyOf":[{"items":{"$ref":"#/components/schemas/SignupUseCase"},"type":"array","maxItems":5},{"type":"null"}],"title":"Use Cases","description":"What you are signing up to do: one entry per thing you are building. Each becomes its own subproject (a use case) with its own key, settings and data. See GET /v1/usecases/types."},"use_case":{"anyOf":[{"$ref":"#/components/schemas/SignupUseCase"},{"type":"null"}],"description":"A single use case; the same as a one-item `use_cases`."}},"type":"object","required":["email"],"title":"SignupRequest"},"SignupUseCase":{"properties":{"type":{"type":"string","title":"Type"},"name":{"anyOf":[{"type":"string","maxLength":63},{"type":"null"}],"title":"Name"},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config"}},"type":"object","required":["type"],"title":"SignupUseCase"},"SystemOneRequest":{"properties":{"state":{"title":"State"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"questions":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","maxProperties":50,"minProperties":1,"title":"Questions"},"facts":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Facts","description":"Structured facts, if `state` is prose"}},"type":"object","required":["state","questions"],"title":"SystemOneRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyRequest":{"properties":{"vocabulary":{"additionalProperties":true,"type":"object","title":"Vocabulary","description":"Vocabulary definition, as read by Vocabulary.from_dict"},"proposal":{"$ref":"#/components/schemas/Proposal"}},"type":"object","required":["vocabulary","proposal"],"title":"VerifyRequest"},"VocabRequest":{"properties":{"vocabulary":{"additionalProperties":true,"type":"object","title":"Vocabulary","description":"Vocabulary definition, as read by Vocabulary.from_dict"}},"type":"object","required":["vocabulary"],"title":"VocabRequest"}}}}