NAV Navbar
Language切换
Code
  • Switch API document version
  • Offer API
  • UserAPI
  • CandidateAPI
  • Organizational structureAPI
  • Switch API document version

    Apinew interface

    Switch toApinew interface

    Exam/Assessment、PES(Pre-employment screening)、Video interview interface guidance (platform)

    Switch toExam/Assessment、PES(Pre-employment screening)、Video interview interface guidance

    Offer API

    GetofferCustom field list

    Request example

    $ curl https://api.mokahr.com/api-platform/v1/offers/custom_fields
    

    Response example

    {
      "social": [
        {
            "id": 496,
            "name": "dmj-offer",
            "type": 1,
            "detail": null,
            "hire_mode": 1
        },
        {
            "id": 281,
            "name": "子公司",
            "type": 6,
            "detail": [
                "子公司1",
                "子公司2",
                "子公司3"
            ],
            "hire_mode": 2
        },
        {
            "id": 456,
            "name": "offer-校-年月日",
            "type": 9,
            "detail": null,
            "hire_mode": 2
        }
      ],
      "campus": [
        {
            "id": 273,
            "name": "Time period4",
            "type": 7,
            "detail": null,
            "hire_mode": 2
        },
        {
            "id": 276,
            "name": "Single line text",
            "type": 1,
            "detail": null,
            "hire_mode": 2
        },
        {
            "id": 277,
            "name": "家庭住址",
            "type": 1,
            "detail": null,
            "hire_mode": 2
        }
      ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/offers/custom_fields

    Response

    Response body in JSON

    Field Type Description
    social array Custom field for experienced hires
    social[].id integer Custom fieldid
    social[].name string Custom field name
    social[].type integer Custom field type: 1Single line text,2 Multiple-line text,3Yes-or-No question,4Select year and month,6 Choice question,7Time period,8Offer associated HC,9 Date,10Number
    social[].detail array Options of custom field
    social[].hire_mode integer Recruitment type: 1 experienced hires, 2 Campus recruitment
    campus array Custom field for campus recruitment
    campus[].id integer Custom fieldid
    campus[].name string Custom field name
    campus[].type integer Custom field type: 1Single line text,2 Multiple-line text,3Yes-or-No question,4Select year and month,6 Choice question,7Time period,8Offer associated HC,9 Date,10Number
    campus[].detail array Options of custom field
    campus[].hire_mode integer Recruitment type: 1 experienced hires, 2 Campus recruitment

    UserAPI

    Sync personnel info to Moka system

    The Moka system will synchronize (add, update, mark and delete) the personnel in the current system according to the requested list. Synchronization uses any one of the user's email, employee number, and phone as the primary key, and compares it with any of the user's email, employee number, and phone in the system: 1、The current system does not have it, but it does exist during synchronization: add a new user 2、The current system has it during synchronization: update the existing user's information. If it exists during synchronization, the current system job status is marked as deleted, and after updating, the status changes to normal.

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/users/syncInfo

    Request example (JSON)

    {
        "usersInfo": [{
            "email": "test@mokahr.com",
            "name": "张三",
            "phone": "18710000182",
            "number": "101",
            "role": 10,
            "departmentCode": ["888","999"],
            "superiorEmail": "superior@mokahr.com",
            "deactivated": 0,
            "thirdPartyId": "E12345",
            "updateDepartment": true,
            "updateSuperiorEmail": true,
            "autoActivated": 1,
            "locale":"en-English"
        }]
    }
    

    Operation successful

    { 
      "success": true 
    }
    

    Operation failed

    {
      "success": false,
      "errorMessage": "Error info "
    }
    

    Request body parameter

    Field Required Type Description
    email Yes string Email
    name Yes string Name
    phone Yes string Phone
    number No string Employee number
    role Yes integer Role
    Optional value:
    0:Referrer
    5: Reception
    10:Interviewer
    20:Hiring manager
    25:Senior hiring manager
    30:HR
    40:Administrator
    50:Super-administrator
    It can be used when the current field is created, and does not support data update. If it is updated, it will go to the corresponding v2 interface.。
    roleId No integer Custom roleid:It can be used when the current field is created, and does not support data update. If it is updated, it will go to the corresponding v2 interface.
    departmentCode Yes array Department,Pass an empty array for all departments
    superiorEmail Yes string Upper class email,Pass an empty string will*clear*reporting relationship in moka system,You can update the reporting relationship by setting the updateSuperiorEmail parameter
    deactivated Yes integer Whether be disabled
    Optional value:
    0:Available
    1:Disabled
    thirdPartyId Yes string Functional field,Used to SSO,Not pass empty string
    updateDepartment No boolean !!!Note:The default is true if not pass
    Whether to update the department
    true:Update
    false:Not update
    updateSuperiorEmail No boolean Whether to update the superior reporter
    Optional value:
    true:Update
    false:Not update
    Default istrue
    autoActivated No integer Whether to auto-activate, senior manager, HR, administrator and supervisor roles need to send emails for account activation by default.
    Optional value:
    0:Do not activate automatically, send an email to the user for manual activation
    1:Auto-activation, the system generates a default password for auto-activation
    Passing an empty string defaults to 0
    locale No string User language
    Optional value:
    zh-CN:Chinese
    en-US:English
    Chinese by default

    Handle

    The Moka system will sync (add and update) users in the current system according to the email and employee number of each user in the requested list.

    Possible error info

    errorMessage Description
    The personnel information synchronization switch is not turned on
    Parameter format is incorrect such as:Department must be array
    Sync up to 100 users at a time
    Email and employee number cannot be empty
    Role is an integer or an empty string The empty string default interviewer
    Missing required parameter All are required parameters No pass
    No corresponding department information found When organization structure synchronization is enabled No matching departments were found
    The phone number has been used by another account of the company,Please try other phone
    This email has been used by other user
    This employee number has been used by other user
    At least one administrator
    Insufficient of available senior manager accounts
    Insufficient of available accounts
    System error
    ...

    Precautions

    For debugging, please contact the relevant IC to open。 Please confirm that the organizational structure synchronization is enabled, and the organizational structure data has been synchronized, otherwise the personnel department information will be processed as the whole department Email and employee number cannot be empty。 Only built-in roles are supported,Role information is empty or 0 default interviewer。 The user information for each synchronization cannot exceed 100. When a user makes an error during synchronization, the synchronization will stop and an error will be reported. The prefix of (email or employee number) will be added before the error message. And the data from before the error is reported has been successfully synchronized.

    CandidateAPI

    Get candidate info

    Request example

    curl --location --request GET 'https://api.mokahr.com/api-platform/v1/data/ehrApplications?stage=all&applicationId=333333333' \
    --header 'Authorization: Basic TW4xY**********ckpDdnk6' \
    --data-raw ''
    

    Response example

    {
      "data": [{
        "applicationId": 47151744,
        "candidateId": 28739723,
        "name": "张三",
        "phone": null,
        "email": "yang111@163.com",
        "gender": null,
        "birthYear": null,
        "birthDate": "2020-03-17T00:00:00.000Z",
        "nationality": null,
        "experience": null,
        "ethnic": null,
        "certificateType": null,
        "citizenId": null,
        "nativePlace": "",
        "source": "Other source",
        "sourceType": 2,
        "sourceList": [
          {
            "name": "Other source", 
            "isBuiltin": true
          }, {
            "id": 4, 
            "name": "Historical source", 
            "isBuiltin": true
          }
        ],
        "academicDegree": null,
        "lastSpeciality": "Human resources management",
        "married": null,
        "jobCommitment": " Full-time",
        "hireMode": 1,
        "departmentCode": null,
        "parentDepartmentCode": null,
        "resumeKey": null,
        "stageName": "沟通offer",
        "nativePlaceCode": null,
        "nationalityCode": null,
        "genderCode": null,
        "academicDegreeCode": null,
        "ethnicCode": null,
        "lastCompany": "郑州***限公司",
        "campus_site_id": 1,
        "campus_site_name": "哈尔冰佛学院",
        "job": {
          "title": "test",
          "department": "xinjan2",
          "departmentCode": null,
          "parentDepartmentCode": null,
          "departmentPath": "华北Region/二级财务部/产品部/产研部/xinjan2",
          "jobId": "39d3d5c9-949e-40d4-8d4b-5cb247d327a8",
          "customFields": [
            {
              "name": "职位-年月",
              "value": "2019-01"
            }
          ]
        },
        "jobManager": {
          "name": "test",
          "email": "11q1@qq.com",
          "phone": "17611232222",
          "employeeId": "01"
        },
        "officeweb365Url": null,
        "officeweb365PrintUrl": null,
        "resumePdfMeta": null,
        "portraitUrl": null,
        "resumeUrl": "",
        "educationInfo": [{
          "id": 34263162,
          "startDate": "",
          "endDate": "",
          "school": null,
          "speciality": null,
          "academicDegree": null,
          "startTime": null,
          "endTime": null,
          "now": false
        }],
        "experienceInfo": [{
          "id": 76685202,
          "startDate": "",
          "endDate": "",
          "company": null,
          "title": null,
          "startTime": null,
          "endTime": null,
          "now": false,
          "underlingNumber": "5"
        }],
        "awardInfo": [{
          "awardDate": null,
          "awardName": null
        }],
        "customFields": [{
          "name": "Single line text",
          "value": "122",
          "section": "题型测试",
          "index": 0
        }, {
          "name": "Field呀",
          "value": "1333",
          "section": "1测试",
          "index": 0
        }, {
          "name": "我叫何为",
          "value": "题型0001",
          "section": "测试",
          "index": 0
        }, {
          "codes": "",
          "name": "T选择",
          "value": "A",
          "section": "1测试",
          "index": 0
        }, {
          "name": "Field呀",
          "value": "133333333",
          "section": "1测试",
          "index": 0
        }, {
          "name": "我叫何为",
          "value": "题型0002",
          "section": "1测试",
          "index": 0
        }, {
          "codes": "",
          "name": "T选择",
          "value": "B:4",
          "section": "1测试",
          "index": 0
        }, {
          "name": "T多文本 ",
          "value": "多文本 Required",
          "section": "basicInfo"
        }, {
          "codes": "",
          "name": "T确认型",
          "value": "Y",
          "section": "basicInfo"
        }],
        "interviewers": [],
        "interviewFeedbackUrl": null,
        "referrer": {
          "name": "杨",
          "email": "11111@mokahr.com",
          "phone": "15001802222",
          "number": "2019"
        },
        "headcountInfo": [],
        "jobRanksInfo": [],
        "offer": {
          "approvalStatus": "APPROVED",
          "salaryNumber": null,
          "checkinDate": "2018-09-20T13:00:07.000Z",
          "location": "上海市 普陀区 XXXX大学XXXX教室",
          "creator": {
            "name": "报表_HR",
            "email": "mce35@yuoia.com"
          },
          "finishedAt": null,
          "customFields": [{
            "name": "合同 Date",
            "value": "2022"
          }, {
            "name": "转正 Date",
            "value": "2018-09-20"
          }, {
            "name": "自定义 - 据offer后去向",
            "value": null
          }, {
            "name": "测试123",
            "value": null
          }, {
            "name": "自定义offerField",
            "value": null
          }, {
            "name": "多行",
            "value": null
          }, {
            "name": "222按时",
            "value": null
          }, {
            "name": "1212111111",
            "value": null
          }],
          "hcInfo": null,
          "jobRankInfo": null,
          "departmentName": "产品创新部",
          "departmentCode": 30,
          "parentDepartmentCode": 10,
          "departmentPath": "产研部/产品创新部",
          "offerLastSentAt": "2019-10-29T03:41:07.000Z"
        },
        " Attachments": [
          {
            "name": " Attachment1",
            "size": 1024,
            "url": "https://cdn.mokahr.com/e11d677-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q="
          }
        ],
        "ehrCandidateExternalLink": "https://cdn.mokahr.com/forward/candidate/info?access_token=93e0eb37-6a5c-4fe4-91db-0579a844fb51"
      },
        {
          "applicationId": 47168265,
          "candidateId": 28755998,
          "name": "test",
          "phone": "17600000000",
          "email": "111111@qq.com",
          "gender": null,
          "birthYear": null,
          "nationality": null,
          "experience": null,
          "ethnic": null,
          "citizenId": null,
          "nativePlace": "",
          "source": "Other",
          "sourceType": 2,
          "academicDegree": null,
          "lastSpeciality": "Human resources management",
          "married": null,
          "jobCommitment": " Full-time",
          "hireMode": 1,
          "departmentCode": null,
          "parentDepartmentCode": null,
          "resumeKey": null,
          "stageName": "沟通offer",
          "nativePlaceCode": null,
          "nationalityCode": null,
          "genderCode": null,
          "academicDegreeCode": null,
          "ethnicCode": null,
          "lastCompany": null,
          "campus_site_id": 0,
          "campus_site_name": null,
          "job": {
            "title": "test",
            "department": "xinjan2",
            "departmentCode": null,
            "parentDepartmentCode": null,
            "departmentPath": "华北Region/二级财务部/产品部/产研部/xinjan2",
            "jobId": "ea932057-2637-4408-98a2-a3366b4ade14",
            "customFields": [
              {
                "name": "职位-年月",
                "value": "2019-01"
              }
            ]
          },
          "jobManager": {
            "name": "test",
            "email": "11q1@qq.com",
            "phone": "17611232222",
            "employeeId": "01"
          },
          "officeweb365Url": null,
          "officeweb365PrintUrl": null,
          "resumePdfMeta": null,
          "portraitUrl": null,
          "resumeUrl": "",
          "educationInfo": [],
          "experienceInfo": [],
          "awardInfo": [],
          "customFields": [],
          "interviewers": [],
          "interviewFeedbackUrl": null,
          "referrer": null,
          "headcountInfo": [],
          "jobRanksInfo": [],
          "offer": {
            "salaryNumber": 111,
            "checkinDate": "2018-09-20T12:58:17.000Z",
            "location": "上海市 普陀区 XXXX大学XXXX教室",
            "creator": {
              "name": "报表_HR",
              "email": "mc435@yuoia.com"
            },
            "finishedAt": null,
            "customFields": [{
              "name": "合同 Date",
              "value": "2022-03"
            }, {
              "name": "转正 Date",
              "value": "2018-09-20"
            }, {
              "name": "自定义 - 据offer后去向",
              "value": null
            }, {
              "name": "测试123",
              "value": null
            }, {
              "name": "自定义offerField",
              "value": null
            }, {
              "name": "多行",
              "value": null
            }, {
              "name": "222按时",
              "value": null
            }, {
              "name": "1212111111",
              "value": null
            }],
            "hcInfo": {
              "id": 8,
              "number": "005",
              "name": "啦啦",
              "status": "timeout"
            },
            "jobRankInfo": {
              "level": 3,
              "name": "总裁",
              "type": null
            },
            "departmentName": "产品创新部",
            "departmentCode": 30,
            "parentDepartmentCode": 10,
            "departmentPath": "产研部/产品创新部",
            "offerLastSentAt": "2019-10-29T03:41:07.000Z"
          },
          " Attachments": [
            {
              "name": " Attachment1",
              "size": 1024,
              "url": "https://cdn.mokahr.com/e11d677-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q="
            }
          ],
          "examReportLinks": [
            {
              "name": "Exam结果链接",
              "url": "https://t.cn/XXXXXX"
            }
          ],
          "exam Attachments": [
            {
              "name": "Exam结果",
              "url": "https://cdn.mokahr.com/1234567-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q="
            }
          ],
          "ehrCandidateExternalLink": "https://cdn.mokahr.com/forward/candidate/info?access_token=93e0eb37-6a5c-4fe4-91db-0579a844fb51",
          "invitationUpdateStatus": 1
        }],
      "next": "47168265"
    }
    

    Get candidate info

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/data/ehrApplications

    Request check

    Field Required Type Description
    applicationId No string Candidate application ID
    Note:
    1、If there is this parameter, the following parameters are invalid;To obtain multiple candidate information, separate them with commas (,),, such as:81,82,83
    2、The applicationId and stage parameters must be passed one
    stage No string offer(Offer stage)
    1、pending_checkin(To be onboarded)
    2、all(Offer stage and to be onboarded stage
    Note::The applicationId and stage parameters must be passed one,If there is no candidate in the current search stage, a server exception will be prompted
    email No string Candidate email
    phone No string Candidate phone
    movedAtStartTime No string Start time(Time of moving to this stage)
    movedAtEndTime No string End time(Time of moving to this stage)
    limit No string Number of entries per page for pagination,Default is20,Maximux is 20
    fromTime No No No this parameter in this interface
    order No string Sort by pulling data,The sort key is the date of entering the current stage.Optional values are
    DESC Pull in order from newest to oldest,This is default value
    ASC Pull in order from oldest to newest
    Note:When the sorting method is ASC, no matter whether there is more data, next will be included in the returned body (can be used as incremental pull)
    next No string Paging parameter, if there is more data to be pulled, there will be a next field in the response json, you only need to add this next parameter to the query for the next request. If there is no next field in the response, it means that there is no more data
    Note:When the sorting method is ASC, no matter whether there is more data, next will be included in the returned body (can be used as incremental pull)
    invitationUpdateStatus No integer Invitation to update status 0、Not invited 1、Not update 2、Updated

    Response data

    Field Type Description
    candidateId integer The candiate unique id in Moka
    applicationId integer The application unique id of candidate in Moka
    name string Name
    phone string Phone
    email string Email
    prefixPhone string Country calling code
    gender string Gender,one of the following values:MaleFemale
    created_at string Resume in-system time
    birthYear integer Birthyear,, such as1990
    birthDate string Birthdate
    ethnic string Ethnicity
    certificateType integer Certificate type 1: id card,2: Hong Kong id card,3: Macau id card,4:Taiwan id card,5: Passport,6: Other identity document
    citizenId string identification No.
    nationality string Country/Region
    nativePlace string Birthplace
    experience integer Work experience,0Graduates,-1Students,Other numbers indicate specific years
    portraitUrl string Image address of the candidate's avatar,The link is valid for1hour
    hireMode integer Recruitment mode,1: experienced hires, 2: Campus recruitment
    finishedAt string Recruitment goal finish time
    source string Source,, such asLagou
    sourceList Array Source level,The array is arranged in the order of first-level source, second-level source, and the order of third-level source, second-level source, and third-level source.
    sourceList[].id integer Sourceid(The id of the first-level source does not existid)
    sourceList[].name string Source name
    sourceList[].isBuiltin boolean Whether the system has a built-in source
    sourceType integer Source,one of the following values:1231 Active search2 Direct delivery3 Talent recommendation。PS:It will not be used from 2020-03-164 Headhunting referral
    location string Location,, such asBeijing
    lastCompany string Recent company,one of the following values:nullno recent company,xxxServed company name
    academicDegree string Highest education,one of the following values:Bachelor degreeMaster degreeDoctor degreeSenior high schoolJunior collegeTechnical secondary schoolMBAOther
    lastSpeciality string Recent graduate major
    married string Marital status,one of the following values:'Married', 'Single', 'Divorced', 'Widowed', 'CIVILUNION', 'COHABITATING', 'MARRIED', 'DIVORCED', 'ENGAGED', 'SEPARATED', 'SINGLE', 'WIDOWED'
    nativePlaceCode integer Birthplace code(null when birthplace is empty,Code details refer to Attachment)
    nationalityCode integer Nationality code(null when nationality is emptynull,Code details refer to Attachment)
    genderCode integer Gender code(null when gender is emptynull,Code details refer to Attachment)
    academicDegreeCode integer Education code(null when education is emptynull,Code details refer to Attachment)
    ethnicCode integer Ethnicity(null when ethnicity is emptynull,Code details refer to Attachment)
    personal string Self-description
    salary string Current salary
    forwardLocation string Preferred city
    aimSalary string Preferred salary
    personalInterests string Hobby
    political string Political status
    educationInfo[] array Education experience
    educationInfo[].startDate string School start date,accurate to month。, such as2010-09, 2008
    educationInfo[].endDate string School end date,accurate to month。, such as2010-09, 2008
    educationInfo[].now boolean Whether the end time represents "to date"。, such astrue。If it is true, the value of endDate may be any value, just ignore endDate at this time
    educationInfo[].school string School
    educationInfo[].speciality string Major
    educationInfo[].academicDegree string Education,one of the following values:Bachelor degreeMaster degreeDoctor degreeSenior high schoolJunior collegeTechnical secondary schoolMBAOther
    experienceInfo[] array Work experience
    experienceInfo[].startDate string Work start time,accurate to month。, such as2010-09, 2008
    experienceInfo[].endDate string Work end time,accurate to month。, such as2010-09, 2008
    experienceInfo[].now boolean Whether the end time represents "to date"。, such asfalse。If it is true, the value of endDate may be any value, just ignore endDate at this time
    experienceInfo[].company string Company name
    experienceInfo[].title string Job title
    experienceInfo[].department string Department
    experienceInfo[].salary string Salary
    experienceInfo[].summary string Job responsibility
    experienceInfo[].reasonForLeaving string Reason for resignation
    experienceInfo[].underlingNumber string No.of subordinate
    experienceInfo[].type string Company type
    experienceInfo[].size string Company size
    awardInfo[] array Awards
    awardInfo[].awardDate datetime Winning date
    awardInfo[].awardName string Award name
    resumeUrl string Resume download link,HTTP GET requests this URL to download the original resume file. This link is time-sensitive, and the expiration time is 1 hour. It needs to be downloaded and saved on the server as soon as possible after receiving the request.
    job object Position info
    job.jobId string 职位ID
    job.title string Job title
    job.department string Department
    job.departmentPath string The full path of the department, from superior to subordinate, separated by /
    job.departmentCode string Departmentcode
    job.parentDepartmentCode string Parent departmentcode
    job.competencyType string Function type
    job.jobDescription string Job description
    job.customFields array jobCustom field
    job.customFields[].name string jobCustom field name
    job.customFields[].value string jobCustom field value
    interviewers[] array The interviewer who join in this application of the candidate
    interviewers[].name string Interviewer name
    interviewers[].email string Interviewer email
    interviewers[].phone string Interviewer phone
    interviewers[].id number Interviewid
    interviewers[].groupId string Interview groupid
    interviewers[].attendStatus string Whether to accept the interview No feedback, No show, Rejected, Accepted
    interviewers[].cancelReason string Reason for cancelling interview
    interviewers[].participated string Interview feedback classification interview not conducted, Feedback filled, Feedback not filled
    interviewers[].status string Interview status Cancelled, unfinished, Finished
    interviewers[].round integer Interview rounds,1: 1st round,2: 2nd round,3: Final round ,etc.
    interviewers[].roundName string Interview round name,1st round2nd roundFinal round ,etc.
    interviewers[].roundOtherName object The name of interview rounds in other languages
    interviewers[].startTime string Interview start time
    interviewers[].createdAt string Time for creating interview
    interviewers[].locationCountry string Interview location(Country)
    interviewers[].locationCityId number Interview location(Cityid)
    interviewers[].locationAddress string Interview location(Full address)
    interviewers[].result Deprecated integer Interview result 1: Very dissatisfied, 2: Dissatisfied, 3: Satisfaction, 4: Very satisfied
    interviewers[].resultName string Interview feedback
    interviewers[].resultType integer Type of interview feedback result 0: Dissatisfied 1: Satisfaction
    interviewers[].feedback string Interview feedback content
    interviewers[].resultTime string Interview feedback filling time
    interviewers[].feedbackTemplateResult array Information of interview evaluation
    interviewers[].feedbackTemplateResult[].type number
    Question type, 1: Scoring question, 2: Multiple choice, 3: Description, 4: Multiple response
    interviewers[].feedbackTemplateResult[].title string Question title
    interviewers[].feedbackTemplateResult[].description string Question description
    interviewers[].feedbackTemplateResult[].result number Total score
    interviewers[].feedbackTemplateResult[].calcScoreType string avg: Average, total: Sum (only valid when type is 1)
    interviewers[].feedbackTemplateResult[].scoreType number 5 means total score is 5,10 means total score is 10(only valid when type is 1)
    interviewers[].feedbackTemplateResult[].needReason string Whether need score review(only valid when type is 1)
    interviewers[].feedbackTemplateResult[].subjects array Information about each sub-question
    interviewers[].feedbackTemplateResult[].subjects[].type number
    Question type, 1: Scoring question, 2: Multiple choice, 3: Description, 4: Multiple response
    interviewers[].feedbackTemplateResult[].subjects[].title string Sub-question title
    interviewers[].feedbackTemplateResult[].subjects[].description string Sub-question description
    interviewers[].feedbackTemplateResult[].subjects[].result number Sub-question result: the scoring question is the value of the selected score; the single-choice question is the index value of the option, starting from 0; the description question is the description string question type=2 single-choice question, the return value is "result": 0, Question type=4 multiple choice question return value is "result":[1,2]
    interviewers[].feedbackTemplateResult[].subjects[].reason string Score review
    interviewers[].feedbackTemplateResult[].subjects[].options string Options string array(only valid when type is 2)
    data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord object Related info of interview satisfaction
    data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord.sendTime string The sending time of interview satisfaction evaluation
    data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord.isAnonymous Boolean Whether to anonymously evaluate
    data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord.content string Evaluate content,jsonFormat: {"customFields":[{"options":[//Options"Options1","Options2","Options3"],"subTitle":"Description of multiple choice questions111",//Sub-title"title":"Multiple choice",//Title"type":"single",//TypesingleMultiple choice,mutiSelectMultiple response,describeDescription"value":"0"//Multiple choice value(Subscripts start from 0)},{"options":["Options11","Options22","Options33","Options44"],"subTitle":"Description of multiple response questions333","title":"Multiple response","type":"mutiSelect",//Multiple response"value":"[0,2,1]"//Multiple response value(Subscripts start from 0,No order)},{"subTitle":"Description4444","title":"Description","type":"describe",//Description"value":"Description question result"//Description question value}],"essaySectionTitle":"Other comment",//Other comment(When setting the evaluation form, you can configure whether to display it through the switch)"essayValue":"Other evaluation result"//Values ​​corresponding to other evaluation}
    data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord.satisfactionDimensions array Dimension array(Interview process
    data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord[].name string Dimension name
    data[].interviewInfo[].interviewerFeedbacks[].satisfactionRecord[].name string Dimension corresponding value
    interviewFeedbackUrl string Interview feedback summary file download link, HTTP GET requests this URL to download the interview feedback summary file, this link is time-sensitive, the expiration time is 1 hour, it needs to be downloaded and saved on the server as soon as possible after receiving the request
    extendedInterviewers[] array Participate in the candidate's application interviewer's no interview feedback information,Specific field referenceinterviewers
    extendedInterviewerFeedbackUrl string Interview feedback summary file download link, HTTP GET requests this URL to download the interview feedback summary file, this link is time-sensitive, the expiration time is 1 hour, it needs to be downloaded and saved on the server as soon as possible after receiving the request
    ehrCustomFields[] array ehrCustom export field collection
    ehrCustomFields[].name string Custom field name
    ehrCustomFields[].value any Custom field value
    ehrCandidateExternalLink string Link to Candidate Details,Can be opened directly in the browser to view,The link is valid for 14 days by default
    referrer object Referrer info
    referrer.name string Referrer name
    referrer.email string Referrer email
    referrer.phone string Referrer phone
    referrer.number string Employee No. of referrer,one of the following values:nullno employee No.,xxxEmployee number
    jobRanksInfo[].name string Job level name
    jobRanksInfo[].type string Job level type
    jobRanksInfo[].level string Job level grade
    headcountInfo[].id number Headcount ID
    headcountInfo[].number string Headcount Number
    headcountInfo[].name string Headcount Title
    headcountInfo[].status string Headcount Status
    customFields[] array Candidate custom field,Include only custom fields set in the standard resume
    customFields[].name string Custom field name
    customFields[].value string Custom field value。For yes or no question type,1 “Yes”,0 “No”。
    customFields[].now boolean This field exists when the custom field is time,Indicates whether the time (or the end of the time range) is "to date"。, for exampletrue。, such as果为true,Then the corresponding time may be any value, please note
    customFields[].section string The module name where the custom field is located. The module can be a built-in module (such as experienceInfo) or a custom module (such as emergency contact)
    customFields[].index string For modules with multiple pieces of data, such as experienceInfo, educationInfo, or custom modules (such as emergency contacts), index indicates which field is the custom field information of the first piece of data
    customFields[].codes string Custom code for multiple choice questions (only valid for multiple choice questions with code)
    offer object offerInfo
    offer.createdAt string offerCreated time。Date format is:ISO8601
    offer.status string offerStatus;To be created:notCreated To be sent: pending Pending:sent Accepted: accepted Rejected: rejected
    offer.approvalStatus string Approval status
    UNINITIATED: // Uninitiated;INPROGRESS: // In process;APPROVED: // Approved;REJECTED: // Denied;RECALLED: // Withdrawn
    offer.salaryNumber number Monthly salary
    offer.checkinDate string Estimated start time
    offer.location string Onboard Location
    offer.creator object offerCreator info
    offer.creator.name string offerCreator name
    offer.creator.email string offerCreator email
    offer.finishedAt string offerAccept time。Date format is:ISO8601
    offer.customFields array offerCustom field
    offer.customFields[].name string offerCustom field name
    offer.customFields[].value string offerCustom field value
    offer.customFields[].codes string Custom code for multiple choice questions (only valid for multiple choice questions with code)
    offer.hcInfo object HeadCount info selected by offer
    offer.hcInfo.id number HeadCount ID selected by offer
    offer.hcInfo.number string HeadCount number selected by offer
    offer.hcInfo.name string HeadCount name selected by offer
    offer.hcInfo.status string HeadCount status selected by offer
    offer.jobRankInfo object The job level information selected by the offer
    offer.jobRankInfo.type string The job level type selected by the offer
    offer.jobRankInfo.level string The job level selected by the offer
    offer.jobRankInfo.name string The job level name selected by the offer
    offer.departmentName string Onboarding department name
    offer.departmentCode number Onboarding department code
    offer.parentDepartmentCode number Entry Department Upper Departmentcode
    offer.departmentPath string The full path of Onboarding department
    offer.offerLastSentAt string Last send offer time
    offer.offer AttachmentDownloadUrl string Attachment download URL generated by offer,Valid for 1 hour
    Attachments array The candidate's Attachment
    Attachments[].name string The doc. name of candidate's Attachment
    Attachments[].applyFormId number Registration templateID
    Attachments[].size integer Candidate Attachment size
    Attachments[].url string The download url of candidate Attachment
    Attachments[].customFieldId integer Custom Attachment field ID
    Attachments[].customFieldName string Custom Attachment field names
    Attachments[].type string Candidate Attachment type,Values are:
    CANDIDATE_UPLOAD_ Attachment Upload by candidate
    UPLOAD_PORTRAIT Candidate Avatar
    HR_UPLOAD_ Attachment HRManual upload
    HM_UPLOAD_ Attachment Manual upload on the HR side
    INTERVIEW_ACCEPT Attachment of the registration form generated by the candidate for the interview
    INTERVIEW_SIGNIN Registration form Attachment generated by candidate interview check-in
    OFFER_ACCEPT Candidates accept the registration form Attachment generated by OFFER
    MERGE_APPLICATION_ Attachment Attachments generated by candidate mergers
    INVITE_UPDATE_RESUME Invite candidates to update the registration form for resume generation
    offer Attachment object CandidateofferRelevant Attachments
    No this field by default,Please contact your CMS if necessary, This field will not exist even if the get candidate interface switch is turned on
    offer Attachment.url string CandidateofferThe download address of relevant Attachments
    The link address is valid for1hour
    examReportLinks array Candidate exam/Assessment result link
    examReportLinks[].name string Candidate exam/Assessment name
    examReportLinks[].url string Candidate exam/Assessment result link
    exam Attachments array Candidate exam/Relevant Attachment of assessment
    exam Attachments[].name string Candidate exam/Assessment related Attachment file name
    exam Attachments[].url string Candidate exam/Assessment related Attachment download address
    The link address is valid for1hour
    projectInfo array Project experience
    projectInfo[].startDate string Project start date,accurate to month。, such as2010-09, 2008
    projectInfo[].endDate string Project end date,accurate to month。, such as2010-09, 2008
    projectInfo[].projectName string Project name
    projectInfo[].title string Job title and duty
    projectInfo[].projectDescript string Project description
    projectInfo[].responsibilities string Responsibility in project
    projectInfo[].now boolean Whether the end time represents "to date"。, such asfalse。If it is true, the value of endDate may be any value, just ignore endDate at this time
    languageInfo array Language skill
    languageInfo[].language string Language type
    languageInfo[].level string Proficiency
    languageInfo[].listenAndSpeak string Listening and speaking
    languageInfo[].readAndWrite string Reading and writing
    stageName string Stage name
    jobManager object Position administrator
    jobManager.name string The name of position leader
    jobManager.phone string The phone of position leader
    jobManager.email string Position leader email
    jobManager.employeeId string Position leader phone employee No.
    jobAssistants array Position assistant
    jobAssistants[].name string Position assistant name
    jobAssistants[].phone string Position assistant phone
    jobAssistants[].email string Position assistant email
    jobAssistants[].employeeId string Position assistant employee No.
    label array Candidate tag
    label[].id number Tagid
    label[].label string Tag name
    remarks array Candidate note
    remarks[].creator object The creator info of note
    remarks[].creator.name object The creator name of note
    remarks[].creator.phone object The creator phone of note
    remarks[].creator.email object The creator email of note
    remarks[].creator.number object The creator's employee No. of note
    remarks[].content string Note content
    remarks[].targets array The person information of @ in the comment, the format is the same as the creator information
    remarks[].is_private number Whether the not is private,1:Private0:Public
    remarks[].type string Note type:Fill in manually
    remarks[].created_at string Time for creating note
    owners object Candidate owner
    owners.name string Candidate owner name
    owners.phone string Candidate owner phone
    owners.email string Candidate owner email
    owners.employeeId string Candidate owner employee No.
    survey array Pre-employment screening (PES) content
    survey[].name string Pre-employment screening (PES) name
    survey[].date string Pre-employment screening (PES) date
    survey[].result string Pre-employment screening (PES) result
    survey[].survey AttachmentsUrl string The link of PES report
    survey[].survey AttachmentName string The name of PES Attachment
    survey[].survey Attachments[] array
    PES multiple Attachments(The new version of single Attachment and multiple Attachments are in this Attachment collection,The original single- Attachment results are only used for historical compatibility)
    survey[].survey Attachments[].survey AttachmentsUrl string
    The link of PES report
    survey[].survey Attachments[].survey AttachmentName string
    The name of PES Attachment
    practiceInfo[] array Intern experience
    practiceInfo[].startDate string Intern start time
    practiceInfo[].endDate string Intern end time
    practiceInfo[].company string Company name
    practiceInfo[].title string Job title
    customstyle Attachments object Custom registration form info
    customstyle Attachments.type string Attachment type fixeddoc
    customstyle Attachments.createTime string Created time
    customstyle Attachments.customFieldName string Custom Attachment name
    customstyle Attachments.url string Attachment download address

    Organizational structureAPI

    Organizational structure related API

    Organizational structure full synchronization

    The Moka system will synchronize the departments in the current system according to the requested list (add, update, mark delete).
    The synchronization uses department_code as the primary key, and compares it with the department_code in the system to allow synchronization of organizations with the same name under different department_codes:
    1、The current system does not have it, but it does exist during synchronization: add a new department
    2、The current system has it, and it also has it during synchronization: update the existing department information. If there is during synchronization, the current system department status is marked as deleted, and after updating, the status changes to normal.
    3、If the current system has it, but not during synchronization: the department marking has been deleted, and you need to manually enter the Moka system to merge the department into other departments for deletion。

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/departments

    Request example

    $curl --location --request PUT 'https://api-staging003.mokahr.com/api-platform/v1/departments' \
    --header 'Authorization: Basic Vl*********8*888888*' \
    --header 'Content-Type: application/json' \
    --data-raw '[
        {
            "sequence": 1.68,
            "parent_code": "",
            "department_code": "110",
            "name": "api测试"
        },
        {
            "sequence": 0.92,
            "parent_code": "",
            "department_code": "112",
            "name": "api测试2",
            "type": 1
        },
        {
            "sequence": 0.06,
            "department_code": "120",
            "name": "技术支持测试",
            "parent_code": "110",
            "type": 1
        }
    ]'
    

    Operation successful

    { 
      "success": true,
      "result": { 
        "new": 0, 
        "delete": 0, 
        "update": 0 
      } 
    }
    

    Operation failed

    {
      "success": false,
      "errorMessage": "Error info "
    }
    

    Request body parameter

    Field Required Type Description
    name Yes string Department name
    department_code Yes string Department id in client system
    parent_code Yes string The unique id of the department's parent department, if it is null, it is the first-level department
    type No number Department type:
    Optional value:
    1: General department(Default is)
    2:Store department(If the name of the store is the same as the name of the store department in the organizational structure, it will be associated with the corresponding store with the same name)
    sequence No number Specific department sorting
    Data range:Supports numbers between 0 and 10000, accurate to two decimal places.
    Rule:The sorting is from small to large numbers, and the same numbers are sorted from first to last according to creation time. If the value is empty, it will be sorted last by default.

    Possible error info

    errorMessage Description
    Duplicated department ID Re-use of department_code in request list
    Duplicated department There is the same Parent department in the request list,Title的Department
    Parent department not found The department's parent department not found in the list
    A department's parent department cannot be itself directly (indirectly) A department's parent department (of parent department...) cannot be itself

    Add organizational structure

    Add organization structure, which is not allowed to synchronize any organization with the same name, no matter whether the organization is under the same department_code or not.
    Note: Incremental synchronization of organizational structure must use POST request. If PUT request is used, it is full synchronization. If the department is not provided in the request, the department will be marked as deleted.

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/departments/sync/incremental

    Request example

    $ curl 'https://api.mokahr.com/api-platform/v1/departments/sync/incremental' \
       -u 'your_api-keys:' \
       -X POST \
       -d '[
        { "department_code": "ididid1", "name": "namenamename1", "parent_code": "ididid1", "sequence": 0 },
        { "department_code": "ididid2", "name": "namenamename2", "parent_code": "ididid2" },
        { "department_code": "ididid2", "name": "Department2", "parent_code": "ididid2", "type": 2 },
      ]'
    

    Operation successful

    { 
      "success": true 
    }
    

    Operation failed

    { 
      "success": false, 
      "errorMessage": "Error info " 
    }
    

    Request body parameter

    Field Required Type Description
    name Yes string Department name
    department_code Yes string Department id in client system
    parent_code Yes string The unique id of the parent department. If it is null, it is the first-level department
    type No number Department type:
    Optional value:
    1: General department(Default is)
    2:Store department
    sequence No number Specific department sorting
    Data range:Arrays between 0 and 10000 are supported, accurate to two decimal places.
    Rule:The sorting is from small to large numbers, and the same numbers are sorted from first to last according to creation time. If the value is empty, it will be sorted last by default.

    response field

    Field Type Description
    success boolean Whether the operation is successful
    Optional value:
    true:Successful
    false:Failed
    errorMessage string The error reason of operation failed

    Possible error info

    errorMessage Description
    There are currently pending organizational updates, please try again later
    Department name: XXX, The department number of number XXX is duplicated There are duplicate department data in the request list or there are duplicate departments in the request list that have been synchronized to the system
    Parent department not found The department's parent department not found in the list
    A department's parent department cannot be itself directly (indirectly) A department's parent department (of parent department...) cannot be itself
    Department name XXX, the department name of parent number XXX already exists A department with the same name exists under a department
    ...

    Update organizational structure

    Update organizational structure information for designated departments Note: update with department_code as the primary key. If you need to update department_code, you need to pass in department_id, and department_code will be updated with department_id as the primary key.

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/departments

    Request example

    curl 'https://api.mokahr.com/api-platform/v1/departments' \
    -X POST \
    -u 'your_api_keys' \
    -d '[
        {
            "department_code": "ididid111123",
            "name": "namenamename1221",
            "parent_code": null,
            "sequence": 0
        },
        {
            "department_code": "ididid211123",
            "name": "namenamename21_testhema",
            "parent_code": "ididid31112"
        },
        {
            "department_code": "ididid311123",
            "name": "namenamename222test_hema",
            "parent_code": "huangtiandi",
            "type": 2,
            "department_id": 387
        }
    ]'
    

    Operation successful

    {
        "code": 0,
        "msg": "Successful",
        "success": true,
        "errorMessage": "",
        "data": {}
    }
    

    Operation failed

    {
        "code": 625011,
        "msg": "department_code(3213232888)在系统中已存在",
        "success": false,
        "errorMessage": "department_code(323232888)在系统中已存在",
        "data": {}
    }
    

    Request body parameter

    Field Required Type Description
    name Yes string Department name
    department_code Yes string Department id in client system
    parent_code Yes string The unique id of the parent department. If it is null, it is the first-level department
    type No number Department type:
    Optional value:
    1:General department(Default is)
    2:Store department
    department_id No number The department id in the Moka system. When this parameter exists, the department that matches this parameter will be given priority.
    sequence No number Specific department sorting,Supports two decimal places from 0 to 10000, if empty, it will be sorted last by default. Sort from small to large, creation time from first to last

    Response json field

    Field Type Description
    success boolean Whether the operation is successful
    errorMessage string The error reason of operation failed

    Possible error info

    errorMessage Description
    There are currently pending organizational updates, please try again later
    Department name: XXX, The department number of number XXX is duplicated There are duplicate department data in the request list or there are duplicate departments in the request list that have been synchronized to the system
    Parent department not found The department's parent department not found in the list
    A department's parent department cannot be itself directly (indirectly) A department's parent department (of parent department...) cannot be itself
    Department name XXX, the department name of parent number XXX already exists A department with the same name exists under a department
    ...