{"openapi":"3.1.0","info":{"title":"ITA GROUPE public catalog API","version":"1.0.0","description":"Read ITA GROUPE's published company information, services and portfolio. No API key is required. MCP clients can use https://www.itagroupe.com/api/mcp. This API does not submit inquiries, send messages, quote prices or expose private customer data.","contact":{"name":"ITA GROUPE","email":"hello@itagroupe.com","url":"https://www.itagroupe.com/contact"}},"servers":[{"url":"https://www.itagroupe.com"}],"security":[],"paths":{"/api/company":{"get":{"operationId":"getCompany","summary":"Read company information and contact links","description":"Returns public company details. Sharing a contact link does not submit an inquiry.","responses":{"200":{"description":"Published website content.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Company"}},"required":["data"],"additionalProperties":false}}}},"405":{"description":"Only read methods are supported.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/services":{"get":{"operationId":"listServices","summary":"List published services","description":"Returns all matches. The optional q parameter performs a case-insensitive substring search across published catalog fields.","parameters":[{"name":"q","in":"query","description":"Optional text filter, up to 200 characters.","required":false,"schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Published website content.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Service"}},"total":{"type":"integer","minimum":0}},"required":["data","total"],"additionalProperties":false}}}},"400":{"description":"Invalid or unsupported query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"Only read methods are supported.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/services/{slug}":{"get":{"operationId":"getService","summary":"Read one published service","description":"Use a slug from /api/services. The result includes the canonical source URL and its Markdown version.","parameters":[{"name":"slug","in":"path","description":"Exact slug from the list endpoint.","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"Published website content.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Service"}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Invalid slug or unsupported query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No published resource has this slug.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"Only read methods are supported.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/projects":{"get":{"operationId":"listProjects","summary":"List published projects","description":"Returns all matches. The optional q parameter performs a case-insensitive substring search across published catalog fields.","parameters":[{"name":"q","in":"query","description":"Optional text filter, up to 200 characters.","required":false,"schema":{"type":"string","maxLength":200}}],"responses":{"200":{"description":"Published website content.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Project"}},"total":{"type":"integer","minimum":0}},"required":["data","total"],"additionalProperties":false}}}},"400":{"description":"Invalid or unsupported query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"Only read methods are supported.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/api/projects/{slug}":{"get":{"operationId":"getProject","summary":"Read one published project","description":"Use a slug from /api/projects. The result includes the canonical source URL and its Markdown version.","parameters":[{"name":"slug","in":"path","description":"Exact slug from the list endpoint.","required":true,"schema":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}}],"responses":{"200":{"description":"Published website content.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Project"}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Invalid slug or unsupported query parameters.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No published resource has this slug.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"405":{"description":"Only read methods are supported.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"Company":{"type":"object","properties":{"name":{"type":"string","description":"Company name."},"description":{"type":"string","description":"Company description."},"url":{"type":"string","description":"Official website.","format":"uri"},"email":{"type":"string","format":"email"},"contactUrl":{"type":"string","description":"Public contact page.","format":"uri"},"projectBriefUrl":{"type":"string","description":"Project brief for the user to review and submit.","format":"uri"},"social":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Network name."},"url":{"type":"string","description":"Official profile URL.","format":"uri"}},"required":["name","url"],"additionalProperties":false}}},"required":["name","description","url","email","contactUrl","projectBriefUrl","social"],"additionalProperties":false},"Service":{"type":"object","properties":{"slug":{"type":"string","description":"Stable service identifier."},"name":{"type":"string","description":"Published service name."},"description":{"type":"string","description":"Service description."},"category":{"type":"string","description":"Service group slug."},"categoryName":{"type":"string","description":"Service group name."},"url":{"type":"string","description":"Canonical service page.","format":"uri"},"markdownUrl":{"type":"string","description":"Markdown version of the service page.","format":"uri"}},"required":["slug","name","description","category","categoryName","url","markdownUrl"],"additionalProperties":false},"Project":{"type":"object","properties":{"slug":{"type":"string","description":"Stable project identifier."},"name":{"type":"string","description":"Project name."},"summary":{"type":"string","description":"Published summary."},"description":{"type":"string","description":"Published project detail."},"category":{"type":"string","description":"Portfolio category."},"services":{"type":"array","items":{"type":"string"}},"url":{"type":"string","description":"Canonical case-study page.","format":"uri"},"markdownUrl":{"type":"string","description":"Markdown version of the case study.","format":"uri"},"website":{"type":"string","description":"Client's public website, when published.","format":"uri"},"status":{"type":"string","description":"Project status, when published."}},"required":["slug","name","summary","description","category","services","url","markdownUrl"],"additionalProperties":false},"Problem":{"type":"object","properties":{"type":{"type":"string","description":"Problem type.","format":"uri"},"title":{"type":"string","description":"Error title."},"status":{"type":"integer"},"code":{"type":"string","description":"Stable error code."},"detail":{"type":"string","description":"What went wrong."},"resolution":{"type":"string","description":"How to correct the request."}},"required":["type","title","status","code","detail","resolution"],"additionalProperties":false}}}}