CodeSignal Learn Public API
OAuth 2.0-protected REST API (OpenAPI 3.1) for reading organization members, their skill sets, and their learning progress on CodeSignal Learn.
OAuth 2.0-protected REST API (OpenAPI 3.1) for reading organization members, their skill sets, and their learning progress on CodeSignal Learn.
{"openapi":"3.1.0","info":{"title":"Codesignal Learn Public API","version":"v1.0.0","description":"Public API for Codesignal Learn"},"security":[{"oauth2":["openid"]}],"components":{"securitySchemes":{"oauth2":{"type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"https://codesignal.com/learn/api/v1/oauth/token","scopes":{"openid":"basic scope"}}}}},"schemas":{"BadRequest":{"description":"Bad request"},"Unauthorized":{"description":"Unauthorized"}},"parameters":{}},"paths":{"/api/v1/organizations/members":{"get":{"summary":"Get organization members","description":"Returns paginated members for your organization","tags":["Organization"],"security":[{"oauth2":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string","enum":["email"],"default":"email"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"sort_order","in":"query"},{"schema":{"type":"string"},"required":false,"name":"search","in":"query"},{"schema":{"type":"string"},"required":false,"name":"role","in":"query"}],"responses":{"200":{"description":"Paginated organization members.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"codesignalId":{"type":"string","nullable":true},"email":{"type":"string"},"name":{"type":"string"},"role":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"lastActivity":{"type":"string","nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}}},"required":["id","codesignalId","email","name","role","lastActivity","teams"]}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"per_page":{"type":"number"},"total":{"type":"number"},"errors":{"type":"number"}},"required":["page","per_page","total"]},"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"number"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["status","message"]}}},"required":["data","pagination"]}}}},"400":{"$ref":"#/components/schemas/BadRequest"},"401":{"$ref":"#/components/schemas/Unauthorized"}}}},"/api/v1/organizations/members/{memberId}":{"get":{"summary":"Get member by ID","description":"Returns details for a specific organization member.","tags":["Organization"],"security":[{"oauth2":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"}],"responses":{"200":{"description":"Member details.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"codesignalId":{"type":"string","nullable":true},"email":{"type":"string"},"name":{"type":"string"},"role":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"lastActivity":{"type":"string","nullable":true},"teams":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]}}},"required":["id","codesignalId","email","name","role","lastActivity","teams"]}}}},"400":{"$ref":"#/components/schemas/BadRequest"},"401":{"$ref":"#/components/schemas/Unauthorized"}}}},"/api/v1/organizations/members/skill-sets":{"get":{"summary":"Get skill sets for organization members","description":"Returns paginated skill sets for specified organization members.","tags":["Organization"],"security":[{"oauth2":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"default":[]},"required":false,"name":"member_id","in":"query"}],"responses":{"200":{"description":"Paginated skill sets for organization members.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"skillSets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"level":{"type":"string","nullable":true,"enum":["developing","intermediate","advanced","expert"]},"type":{"type":"string","enum":["hard","soft"]},"imageUrl":{"type":"string","nullable":true}},"required":["id","name","level","type","imageUrl"]}}},"required":["id","skillSets"]}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"per_page":{"type":"number"},"total":{"type":"number"},"errors":{"type":"number"}},"required":["page","per_page","total"]},"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"number"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["status","message"]}}},"required":["data","pagination"]}}}},"400":{"$ref":"#/components/schemas/BadRequest"},"401":{"$ref":"#/components/schemas/Unauthorized"}}}},"/api/v1/organizations/members/progress":{"get":{"summary":"Get progress for organization members","description":"Returns paginated progress for specified organization members","tags":["Organization"],"security":[{"oauth2":[]}],"parameters":[{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","minimum":0,"exclusiveMinimum":true,"maximum":100,"default":20},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string","enum":["email"],"default":"email"},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"default":"asc"},"required":false,"name":"sort_order","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"required":false,"name":"id","in":"query"}],"responses":{"200":{"description":"Paginated progress for organization members.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"completionRatio":{"type":"number"},"completed":{"type":"boolean"},"completedAt":{"type":"string","nullable":true},"certificateUrl":{"type":"string","nullable":true},"job":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"courses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"completionRatio":{"type":"number"},"completed":{"type":"boolean"},"completedAt":{"type":"string","nullable":true},"certificateUrl":{"type":"string","nullable":true}},"required":["id","title","completionRatio","completed","completedAt","certificateUrl"]}}},"required":["id","title","completionRatio","completed","completedAt","certificateUrl","job","courses"]}}},"required":["id","email","paths"]}},"pagination":{"type":"object","properties":{"page":{"type":"number"},"per_page":{"type":"number"},"total":{"type":"number"},"errors":{"type":"number"}},"required":["page","per_page","total"]},"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"number"},"message":{"type":"string"},"data":{"type":"object","additionalProperties":{"nullable":true}}},"required":["status","message"]}}},"required":["data","pagination"]}}}},"400":{"$ref":"#/components/schemas/BadRequest"},"401":{"$ref":"#/components/schemas/Unauthorized"}}}},"/api/v1/organizations/members/{memberId}/progress":{"get":{"summary":"Get progress for member by ID","description":"Returns progress for a specific organization member.","tags":["Organization"],"security":[{"oauth2":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"memberId","in":"path"}],"responses":{"200":{"description":"Member progress.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"paths":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"completionRatio":{"type":"number"},"completed":{"type":"boolean"},"completedAt":{"type":"string","nullable":true},"certificateUrl":{"type":"string","nullable":true},"job":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"courses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"number"},"title":{"type":"string"},"completionRatio":{"type":"number"},"completed":{"type":"boolean"},"completedAt":{"type":"string","nullable":true},"certificateUrl":{"type":"string","nullable":true}},"required":["id","title","completionRatio","completed","completedAt","certificateUrl"]}}},"required":["id","title","completionRatio","completed","completedAt","certificateUrl","job","courses"]}}},"required":["id","email","paths"]}}}},"400":{"$ref":"#/components/schemas/BadRequest"},"401":{"$ref":"#/components/schemas/Unauthorized"}}}}}}