{"openapi":"3.1.0","info":{"title":"Summit Networks AI Help Desk API","version":"1.0.0","description":"Open tickets, ask questions and report incidents to the Summit Networks AI help desk, read the AI and engineer replies, and continue the conversation. The AI answers within the request (usually 5 to 30 seconds); when it hands a ticket to an engineer, engineer replies appear in the ticket's messages. Keys are issued by Summit Networks per client company.","contact":{"name":"Summit Networks","email":"support@summitnet.io","url":"https://summitnet.io"}},"servers":[{"url":"https://help.summitnet.io/v1"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Your API key, shd_live_..."}},"parameters":{"TicketId":{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Ticket id or number (SN-T-...)."},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":100},"description":"Retrying with the same key within 24 h returns the first result instead of creating a duplicate."}},"schemas":{"Person":{"type":"object","properties":{"name":{"type":["string","null"]},"email":{"type":["string","null"],"format":"email"}}},"Ticket":{"type":"object","properties":{"id":{"type":"string"},"number":{"type":"string","example":"SN-T-2026-0042"},"subject":{"type":"string"},"status":{"type":"string","enum":["new","triaged","in_progress","waiting_customer","waiting_vendor","scheduled","resolved","closed","cancelled"]},"priority":{"type":"string","enum":["p1","p2","p3","p4"]},"category":{"type":"string"},"type":{"type":"string"},"handledBy":{"type":"string","enum":["ai","engineer"]},"channel":{"type":"string"},"requester":{"$ref":"#/components/schemas/Person"},"assignee":{"type":["string","null"]},"resolution":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"resolvedAt":{"type":["string","null"],"format":"date-time"}}},"Message":{"type":"object","properties":{"id":{"type":"string"},"from":{"type":"string","enum":["customer","ai","engineer","system"]},"author":{"type":"string"},"text":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}},"TicketWithMessages":{"type":"object","properties":{"ticket":{"$ref":"#/components/schemas/Ticket"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}},"responses":{"Error":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"webhooks":{"ticketEvent":{"post":{"summary":"ticket.created, ticket.message or ticket.status_changed","description":"POSTed to your url. Verify X-Summit-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256(secret, `${t}.${raw body}`)>; reject if t is more than 5 minutes old. X-Summit-Delivery is the event id: deliveries are at least once, so de-duplicate on it. Answer 2xx within 10 s.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","enum":["ticket.created","ticket.message","ticket.status_changed","webhook.ping"]},"createdAt":{"type":"string","format":"date-time"},"ticket":{"$ref":"#/components/schemas/Ticket"},"message":{"$ref":"#/components/schemas/Message"},"previousStatus":{"type":"string"}}}}}},"responses":{"200":{"description":"Received"}}}}},"paths":{"/me":{"get":{"summary":"Who this key is","operationId":"getMe","responses":{"200":{"description":"The company and contact the key acts as."},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/tickets":{"get":{"summary":"List tickets","operationId":"listTickets","parameters":[{"name":"status","in":"query","schema":{"type":"string"},"description":"Comma-separated statuses."},{"name":"updated_since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Newest first.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Ticket"}},"hasMore":{"type":"boolean"}}}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"summary":"Open a ticket (question, incident or request); the AI replies in the response","operationId":"createTicket","parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["message"],"properties":{"message":{"type":"string","maxLength":20000,"description":"The question or a description of the problem."},"subject":{"type":"string","maxLength":80},"type":{"type":"string","enum":["incident","question","request"]},"requester":{"$ref":"#/components/schemas/Person","description":"The end user, if the integration is relaying for someone."},"externalId":{"type":"string","maxLength":120,"description":"Your own ticket id, for cross-reference."}}}}}},"responses":{"201":{"description":"Created, with the AI's first reply.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketWithMessages"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/tickets/{id}":{"get":{"summary":"Get a ticket and its public messages","operationId":"getTicket","parameters":[{"$ref":"#/components/parameters/TicketId"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketWithMessages"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/tickets/{id}/messages":{"post":{"summary":"Reply on a ticket; the AI answers in the response while it handles the ticket","operationId":"addMessage","parameters":[{"$ref":"#/components/parameters/TicketId"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["text"],"properties":{"text":{"type":"string","maxLength":20000},"author":{"$ref":"#/components/schemas/Person"}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketWithMessages"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/webhooks":{"get":{"summary":"List this key's webhooks","operationId":"listWebhooks","responses":{"200":{"description":"OK"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}},"post":{"summary":"Register a webhook (the signing secret is returned once)","operationId":"createWebhook","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"https, public host"},"events":{"type":"array","items":{"type":"string","enum":["ticket.created","ticket.message","ticket.status_changed"]}}}}}}},"responses":{"201":{"description":"Created; includes secret (whsec_...), shown once."},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/webhooks/{id}":{"delete":{"summary":"Delete a webhook","operationId":"deleteWebhook","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/webhooks/{id}/ping":{"post":{"summary":"Send a signed webhook.ping now","operationId":"pingWebhook","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"{delivered, status|error}"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}},"/tickets/{id}/resolve":{"post":{"summary":"Confirm the issue is fixed","operationId":"resolveTicket","parameters":[{"$ref":"#/components/parameters/TicketId"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"resolution":{"type":"string","maxLength":2000}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TicketWithMessages"}}}},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"}}}}}}