openapi: 3.1.0 info: title: Codesignal Learn Public Organization API version: v1.0.0 description: Public API for Codesignal Learn security: - oauth2: - openid tags: - name: Organization 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' components: schemas: Unauthorized: description: Unauthorized BadRequest: description: Bad request securitySchemes: oauth2: type: oauth2 flows: clientCredentials: tokenUrl: https://codesignal.com/learn/api/v1/oauth/token scopes: openid: basic scope