{"openapi":"3.1.0","info":{"title":"ParaCrux Solidworks Agent agent API","version":"v1","description":"Read the ParaCrux docs and feature index without a key. With a customer's support-only token, open and follow that customer's support tickets and send feedback. A support token cannot read licences, seats or billing and the customer can revoke it at any time.","contact":{"name":"CueCrux Limited","email":"support@paracrux.com","url":"https://paracrux.com/agents"}},"servers":[{"url":"https://paracrux.com/api/agent/v1"}],"externalDocs":{"description":"How to connect","url":"https://paracrux.com/agents"},"tags":[{"name":"docs","description":"Public documentation. No authentication."},{"name":"support","description":"The token owner's support tickets."}],"paths":{"/docs":{"get":{"tags":["docs"],"operationId":"listLessons","summary":"List tracks and lessons","parameters":[{"name":"track","in":"query","schema":{"type":"string"}},{"name":"level","in":"query","schema":{"type":"string","enum":["Start here","Everyday","Deeper"]}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Every term must appear."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"reviewed":{"type":"string"},"tracks":{"type":"array","items":{"$ref":"#/components/schemas/Track"}},"lessons":{"type":"array","items":{"$ref":"#/components/schemas/LessonCard"}},"fixes":{"type":"object","properties":{"markdown":{"type":"string"},"items":{"type":"array","items":{"$ref":"#/components/schemas/FixCard"}}}},"lab":{"type":"array","items":{"$ref":"#/components/schemas/LabCard"}}}}}}}}}},"/docs/{slug}":{"get":{"tags":["docs"],"operationId":"getLesson","summary":"One lesson as JSON or Markdown","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","schema":{"type":"string","enum":["json","markdown"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Lesson"}},"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/features":{"get":{"tags":["docs"],"operationId":"listFeatures","summary":"Every published feature with its status","parameters":[{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/Status"}},{"name":"track","in":"query","schema":{"type":"string"}},{"name":"q","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"reviewed":{"type":"string"},"features":{"type":"array","items":{"$ref":"#/components/schemas/Feature"}}}}}}}}}},"/search":{"get":{"tags":["docs"],"operationId":"searchDocs","summary":"Search lessons, troubleshooting and features","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":10}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"results":{"type":"array","items":{"$ref":"#/components/schemas/SearchHit"}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/me":{"get":{"tags":["support"],"operationId":"checkToken","summary":"Check a support token","security":[{"supportToken":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"connected":{"type":"boolean"},"via":{"type":"string"},"licence":{"type":"object"}}}}}},"401":{"description":"Missing, expired or revoked support token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tickets":{"get":{"tags":["support"],"operationId":"listTickets","summary":"List the customer's tickets","security":[{"supportToken":[]}],"parameters":[{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/TicketStatus"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"tickets":{"type":"array","items":{"$ref":"#/components/schemas/TicketSummary"}},"page":{"type":"integer"}}}}}},"401":{"description":"Missing, expired or revoked support token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["support"],"operationId":"createTicket","summary":"Open a ticket","security":[{"supportToken":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"16–100 letters, digits, - or _. A retry with the same key and body returns the first result with replayed: true. If omitted, a key is derived from the token, body and UTC date.","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewTicket"}}}},"responses":{"200":{"description":"Replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResult"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, expired or revoked support token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Idempotency key reused for different content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tickets/{id}":{"get":{"tags":["support"],"operationId":"getTicket","summary":"One ticket with its public messages","security":[{"supportToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Ticket id (tkt_…)."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ticket":{"$ref":"#/components/schemas/Ticket"}}}}}},"401":{"description":"Missing, expired or revoked support token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tickets/{id}/reply":{"post":{"tags":["support"],"operationId":"replyToTicket","summary":"Add a message","security":[{"supportToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Ticket id (tkt_…)."},{"name":"Idempotency-Key","in":"header","required":false,"description":"16–100 letters, digits, - or _. A retry with the same key and body returns the first result with replayed: true. If omitted, a key is derived from the token, body and UTC date.","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","minLength":1,"maxLength":12000}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ticket":{"$ref":"#/components/schemas/Ticket"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, expired or revoked support token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Idempotency key reused for different content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/tickets/{id}/{action}":{"post":{"tags":["support"],"operationId":"ticketAction","summary":"Reopen, resolve or ask for a person","security":[{"supportToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Ticket id (tkt_…)."},{"name":"action","in":"path","required":true,"schema":{"type":"string","enum":["reopen","resolve","human"]}},{"name":"Idempotency-Key","in":"header","required":false,"description":"16–100 letters, digits, - or _. A retry with the same key and body returns the first result with replayed: true. If omitted, a key is derived from the token, body and UTC date.","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"ticket":{"$ref":"#/components/schemas/Ticket"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, expired or revoked support token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Idempotency key reused for different content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/feedback":{"post":{"tags":["support"],"operationId":"sendFeedback","summary":"Send a suggestion or docs correction","security":[{"supportToken":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"16–100 letters, digits, - or _. A retry with the same key and body returns the first result with replayed: true. If omitted, a key is derived from the token, body and UTC date.","schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","minLength":10,"maxLength":12000},"kind":{"type":"string","enum":["suggestion","docs","other"],"default":"suggestion"},"page":{"type":"string","format":"uri","description":"A https://paracrux.com URL the feedback is about."},"subject":{"type":"string","maxLength":140},"product":{"$ref":"#/components/schemas/SupportProduct"}}}}}},"responses":{"200":{"description":"Replayed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResult"}}}},"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, expired or revoked support token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Refused","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Idempotency key reused for different content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"supportToken":{"type":"http","scheme":"bearer","bearerFormat":"PCXS1","description":"A support-only token the customer creates in their dashboard (Support → Connect a computer or agent). It must be used within 15 minutes, then stays valid until revoked."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"Status":{"type":"string","enum":["available","next","lab"],"description":"available: in the paid Agent today; next: in review for the next release; lab: shown in demos, not for sale."},"TicketStatus":{"type":"string","enum":["open","awaiting_customer","awaiting_support","resolved","closed"]},"Category":{"type":"string","enum":["activation","billing","licensing","installation","account","bug","how_to","performance","feature_request","security_privacy","data_loss","other"]},"Track":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"}}},"LessonCard":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"track":{"type":"string"},"level":{"type":"string"},"minutes":{"type":"integer"},"status":{"$ref":"#/components/schemas/Status"},"statusLabel":{"type":"string"},"url":{"type":"string"},"markdown":{"type":"string"}}},"Lesson":{"allOf":[{"$ref":"#/components/schemas/LessonCard"}],"type":"object","properties":{"youNeed":{"type":"array","items":{"type":"string"}},"outcomes":{"type":"array","items":{"type":"string"}},"steps":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string"},"body":{"type":"string"},"try":{"type":"string"}}}},"limits":{"type":"array","items":{"type":"string"},"description":"What it will not do."},"next":{"type":"array","items":{"type":"string"}},"covers":{"type":"array","items":{"$ref":"#/components/schemas/Feature"}}}},"Feature":{"type":"object","properties":{"id":{"type":"string"},"track":{"type":"string"},"name":{"type":"string"},"summary":{"type":"string"},"status":{"$ref":"#/components/schemas/Status"},"statusLabel":{"type":"string"},"where":{"type":"string"},"lessons":{"type":"array","items":{"type":"string"}}}},"LabCard":{"type":"object","description":"A Lab explainer: what we are building, shown in demos and case studies. Not for sale.","properties":{"slug":{"type":"string"},"title":{"type":"string"},"summary":{"type":"string"},"status":{"$ref":"#/components/schemas/Status"},"statusLabel":{"type":"string"},"url":{"type":"string"},"markdown":{"type":"string"}}},"FixCard":{"type":"object","description":"A troubleshooting entry: a message the app or website shows, quoted exactly (\"…\" marks a part the app fills in), and a link to what it means and what to do.","properties":{"slug":{"type":"string"},"message":{"type":"string"},"group":{"type":"string"},"groupTitle":{"type":"string"},"where":{"type":"string"},"url":{"type":"string"}}},"SearchHit":{"type":"object","properties":{"kind":{"type":"string","enum":["lesson","fix","lab","feature"]},"title":{"type":"string"},"summary":{"type":"string"},"status":{"$ref":"#/components/schemas/Status"},"url":{"type":"string"}}},"SupportProduct":{"type":"string","enum":["solidworks-connector","paracrux","scene-agent","website","other"],"default":"solidworks-connector","description":"What the request is about. \"scene-agent\" is the Blender Agent; docs feedback is always filed against \"website\"."},"NewTicket":{"type":"object","required":["subject","message"],"properties":{"subject":{"type":"string","maxLength":180},"message":{"type":"string","minLength":10,"maxLength":12000,"description":"Credentials and secrets are removed automatically; do not send them."},"category":{"$ref":"#/components/schemas/Category"},"product":{"$ref":"#/components/schemas/SupportProduct"},"appVersion":{"type":"string","maxLength":60},"platform":{"type":"string","maxLength":60,"default":"AI agent (agent API)"},"linkedFrom":{"type":"string","description":"An earlier ticket id this follows on from."}}},"TicketSummary":{"type":"object","properties":{"id":{"type":"string"},"reference":{"type":"string"},"subject":{"type":"string"},"status":{"$ref":"#/components/schemas/TicketStatus"},"category":{"$ref":"#/components/schemas/Category"},"priority":{"type":"string"},"updatedAt":{"type":"integer"}}},"Ticket":{"allOf":[{"$ref":"#/components/schemas/TicketSummary"}],"type":"object","properties":{"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"from":{"type":"string","enum":["you","assistant","support"]},"body":{"type":"string"},"automated":{"type":"boolean"},"label":{"type":["string","null"]},"createdAt":{"type":"integer"}}}},"canReply":{"type":"boolean"},"canReopen":{"type":"boolean"},"canResolve":{"type":"boolean"},"humanRequested":{"type":"boolean"}}},"TicketResult":{"type":"object","properties":{"ticket":{"$ref":"#/components/schemas/Ticket"},"redactions":{"type":"integer"},"replayed":{"type":"boolean"}}}}}}