모두의러닝 API

기본 - 로그인 연동

요청 URL "https://modulearning.kr/sso/sso_v2.php"
요청 방식 POST (form 의 action 속성으로 데이터를 전송과 동시에 페이지 이동)
파라미터 데이터
ssoKey (필수) 별도 전달해 드릴 값
memberID (필수) 회원ID
type (필수) "login"
birth (선택) 생일6자리(ex:940101) - 변경시 업데이트
mobile01 (선택) 휴대폰번호 앞 3자리(ex:010) - 변경시 업데이트
mobile02 (선택) 휴대폰번호 중간 4자리(ex:1234) - 변경시 업데이트
mobile03 (선택) 휴대폰번호 뒤 4자리(ex:5678) - 변경시 업데이트
email01 (선택) 이메일(ex:modu) - 변경시 업데이트
email02 (선택) 이메일(ex:naver.com) - 변경시 업데이트

연동 개발방식 예시 2가지

1) 내강의실 - 입과건 설정방식 내강의실 과정, 기간별 수강목록 연동 설정된 입과 건 과정, 기간별 수강목록 2) 내강의실 - 수강연동 버튼만 생성 내강의실 산업안전 입장 과정, 기간별 수강목록 과정, 기간별 수강목록 과정, 기간별 수강목록

📌 공통

항목설명
Request URLhttps://modulearning.kr
AuthorizationBearer [apikey]
Request Data Typeapplication/json
Response Data Typeapplication/json

📌 오류 메시지

오류 코드설명
UNAUTHORIZED인증 오류
PARAMETER_MISMATCH요청 파라미터 오류
INTERNAL_ERROR내부 오류
DUPLICATED중복 데이터
NOT_VALID_** 해당하는 값이 유효하지 않음

📌 1.1. 사업주 수강 기간 검색

GET /api/ex/lectureDay.php

파라미터설명필수 여부
companyCode사업자번호, 10자리필수
searchYear검색하려는 연도 (YYYY)필수
searchMonth검색하려는 월 (MM)필수

📍 응답 예시 (성공)

{ "status": "SUCCESS", "count": 2, "data": [ { "lectureStart": "2024-01-01", "lectureEnd": "2024-01-31" }, { "lectureStart": "2024-02-01", "lectureEnd": "2024-02-28" } ] }

📍 응답 예시 (실패)

{ "status": "FAIL", "message": "실패 사유" }

📌 1.2 사업주 수강내역

POST /api/ex/study.php

파라미터설명필수 여부
companyCode사업자번호, 10자리필수
contentsName콘텐츠 명선택
searchDate조회년월 (예: 2024-07)필수
page페이징 시 조회할 페이지 (기본값: 1)선택
limit페이지당 데이터 수 (기본값: 10)선택

📍 응답 예시 (성공)

{ "status": "SUCCESS", "totalCount": 10, "data": [ { "serviceType": "온라인", "lectureStart": "2024-01-01", "lectureEnd": "2024-01-31", "companyCode": "1078176324", "companyName": "모두의러닝", "contentsCode": "ML101", "contentsName": "기본 과정", "totalUser": 100, "passUser": 80, "noPassUser": 20 } ] }

📍 응답 예시 (실패)

{ "status": "FAIL", "message": "실패 사유" }

📌 1.3 사업주 수강 내역(세부)

POST /api/ex/studyDetail.php

파라미터설명필수 여부
companyCode사업자번호, 10자리필수
lectureStart조회 시작 날짜 (YYYY-MM-DD)필수
lectureEnd조회 종료 날짜 (YYYY-MM-DD)필수
dateMode 기간 조회 방식 (기본: legacy)
- legacy : (기존/호환) 수강기간이 요청한 시작·종료일과 정확히 동일
- exact : legacy와 동일 (명시적 선택)
- overlap: 조회기간과 1일이라도 겹치면 포함(추천)
- within : 수강기간이 조회기간 안에 완전히 포함
- cover : 수강기간이 조회기간을 완전히 덮음
- start : 수강 시작일이 조회기간 사이에 있음
- end : 수강 종료일이 조회기간 사이에 있음
선택
contentsCode과정코드, 6자리선택
passOK수료 여부 (Y/N)선택
userName수강생 이름선택
page조회 페이지 (기본값: 1)선택
limit페이지당 데이터 수 (기본값: 10)선택

🔶 기간 조회 규칙

dateMode 별 SQL 조건 - legacy : ns.lectureStart = :lectureStart AND ns.lectureEnd = :lectureEnd ← (기존/호환, 기본) - exact : ns.lectureStart = :lectureStart AND ns.lectureEnd = :lectureEnd - overlap: ns.lectureStart <= :lectureEnd AND ns.lectureEnd >= :lectureStart ← (추천) - within : ns.lectureStart >= :lectureStart AND ns.lectureEnd <= :lectureEnd - cover : ns.lectureStart <= :lectureStart AND ns.lectureEnd >= :lectureEnd - start : ns.lectureStart BETWEEN :lectureStart AND :lectureEnd - end : ns.lectureEnd BETWEEN :lectureStart AND :lectureEnd

📍 요청 예시

/* A. 기존 방식 그대로(파라미터 미전달 또는 빈 값) */ POST /api/ex/studyDetail.php { "companyCode": "5988200110", "lectureStart": "2025-01-01", "lectureEnd": "2025-01-31" }
/* B. 겹침 기준(추천) */ POST /api/ex/studyDetail.php { "companyCode": "5988200110", "lectureStart": "2025-01-01", "lectureEnd": "2025-01-31", "dateMode": "overlap", "passOK": "N" // 진행중만 보고 싶을 때 }
/* C. 조회기간 내부에 완전히 포함된 수강건만 */ POST /api/ex/studyDetail.php { "companyCode": "5988200110", "lectureStart": "2025-01-01", "lectureEnd": "2025-01-31", "dateMode": "within", "contentsCode": "AZTIYC" }

📍 응답 예시 (성공)

{ "status": "SUCCESS", "totalCount": 10, "data": [ { "serviceType": "온라인", "userID": "user1", "userName": "홍길동", "contentsCode": "C12345", "contentsName": "고급 과정", "lectureStart": "2024-01-01", "lectureEnd": "2024-01-31", "companyCode": "1078176324", "companyName": "모두의러닝", "progress": 95, "midStatus": "응시 완료", "midScore": 85, "conversionMid": 90, "testStatus": "응시 완료", "testScore": 88, "conversionTest": 92, "reportStatus": "제출 완료", "reportScore": 95, "conversionReport": 97, "totalScore": 93, "passOK": "Y", "passProgress": 80, "passScore": 90 } ] }

📍 응답 예시 (실패)

{ "status": "FAIL", "message": "실패 사유" }

📌 1.4 사업주 등록

POST /api/ex/company.php

파라미터설명필수 여부
companyCode사업주번호필수
companyName사업주명필수
marketerID모두의러닝에 등록된 영업자 아이디필수

📍 응답 예시

{ "status": "SUCCESS", "message": "사업주 등록 완료" }
{ "status": "FAIL", "message": "실패 사유" }

📌 2.1 회원 등록

POST /api/ex/member/register.php

파라미터설명필수 여부
userID아이디필수
pwd비밀번호필수
userName사용자명필수
companyCode사업주번호 (예: 1078176324)필수
sex성별 (1-남, 2-여)필수
resno01주민등록번호 앞자리선택
resno02주민등록번호 뒷자리선택
department부서명선택
mobile01핸드폰 앞자리선택
mobile02핸드폰 중간선택
mobile03핸드폰 뒷자리선택

📍 요청 예시

{ "userData": [ { "userID": "user1", "pwd": "1234", "userName": "홍길동", "companyCode": "0000000000", "sex": "1" }, { "userID": "user2", "pwd": "1234", "userName": "가나다", "companyCode": "0000000000", "sex": "2" } ] }

📌 2.2 회원 퇴사 처리

POST /api/ex/member/leave.php

파라미터설명필수 여부
userID아이디필수
companyCode사업주번호 (예: 2098801773)필수
leave퇴사 여부 (Y-퇴사, N-퇴사처리 제거)필수

📍 응답 예시

{ "status": "SUCCESS", "message": "퇴사 처리 완료" }
{ "status": "FAIL", "message": "실패 사유" }

📌 3. SSO 수료증 출력 (개별, 일괄)

POST /sso/certificate.php

해당 API는 수료증을 출력하는 기능을 제공합니다.
아래의 필수 파라미터를 포함하여 요청하면, 수료증이 팝업 형태로 출력 되도록 처리 하시면 됩니다.

📌 필수 파라미터

파라미터설명필수 여부
ssoKeySSO 인증 키필수
lectureStart수강 시작 날짜 (YYYY-MM-DD)필수
lectureEnd수강 종료 날짜 (YYYY-MM-DD)필수
companyCode사업자번호필수
contentsCode과정 코드필수

📌 선택 파라미터

파라미터설명필수 여부
userID개별 출력시 - 아이디선택
birthDay생년월일 노출 여부(Y,N)선택

📍 요청 예시

POST /sso/certificate.php HTTP/1.1 Host: modulearning.kr Content-Type: application/x-www-form-urlencoded ssoKey=abcd1234&lectureStart=2025-01-07&lectureEnd=2025-01-31&companyCode=6078177202&contentsCode=AZTIYC