NAV Navbar
Language切换
shell node
  • Document introduction(Intro)
  • The format and description of time fields (Date)
  • API Development Guide (Guide)
  • Proactive push instructions (Webhooks)
  • Public API
  • Career website API
  • Company info API
  • Store API
  • Organization structure API
  • Job titleAPI
  • User API
  • Job requisition API
  • Candidate API
  • Talent poolAPI
  • Position API
  • Interview API
  • Offer API
  • Onboarding API
  • Internal Referral Reward API
  • Employee referral accountAPI
  • Headhunter API
  • BI report API
  • JD template list API
  • Administrative area code
  • Error code
  • Document introduction(Intro)

    API endpoint shell Formal :'https://api.mokahr.com/api-platform/v1' Test:'https://api-staging-3.mokahr.com/api-platform/v1' javascript Formal :'https://api.mokahr.com/api-platform/v1' Test:'https://api-staging-3.mokahr.com/api-platform/v1'

    Moka API is designed based on REST, which uses standard HTTP functions such as, HTTP method, HTTP status code, and HTTP basic auth. It can help services that support HTTP can be easily accessed. All interface data is transmitted in JSON format (including error messages) and encoded in Unicode UTF-8. When a field value is empty, the response is null; if the field is an array and empty, the response is an null array [].

    The Moka API is improving and upgrading for better experience. When an update includes an interface that is not backwards compatible, we upgrade the API version and keep the old API running normally. It means that when accessing the Moka API, your code needs to be able to handle some backward compatible changes such as the increase of response fields.

    Api interface old version

    The old version of the API interface is no longer updated, so we don’t recommend you to use it anymore.

    Switch to Api interface old version

    SSO guidance(Single Sign On)

    Single sign-on, referred to as SSO, means that in multiple application systems, users only need to sign in once to access all mutually trusted application systems.

    Switch toSSO guidance

    Guidance for Exam/Assessment, Pre-employment screening (PES) , and Video Interview

    (platform)

    Switch to the Guidance

    The format and description of time fields (Date)

    The time fields' formats in the current API version are as follows:

    Type Format Example Description
    Year yyyy 2018 Graduation year
    Month yyyy-MM 2018-09 Graduation time
    Day yyyy-MM-dd 2018-09-27 Duty time
    Hour, Minute, Second yyyy-MM-ddTHH:mm:ss.sssZ 2018-09-27T02:00:00.000Z Interview start time

    Among them, the format of YYYY-MM-DDTHH:mm:ss.sssZ is ISO8601 standard, the specific meaning can refer to here

    Note: Due to historical reasons, some fields are not formatted strictly according to the above rules. For example, some days-accurate dates also use the format of yyyy-MM-ddTHH:mm:ss.sssZ. Therefore, the developers had better recognize these formats at the same time, and parse them into the desired content as needed.

    API Development Guide (Guide)

    ATS API standard integration solution

    Authentication verification instructions (Basic Auth)

    > Request.example

    $ curl https://api.mokahr.com/api-platform/v1/archiveReasons \
       -u 'your_api_key:'
    

    > Note:
    1、Please replace 'your_api_key' with your API Key for testing 2、curl uses the -u flag to pass in basic auth authentication information. Since password is empty, the colon : after username is necessary.

    You need to use the private API Key generated by Moka for your organization to authenticate requests to access the Moka API. Please ask your CSM (Customer Success Manager) for an API Key if needed.

    The authentication of Moka API is based on HTTP Basic Auth. When sending a request, the API Key needs to be provided as the username of basic auth, and the password does not need to be provided. When testing, please make sure that the HTTP request has the following header:

    Authorization: Basic <base64("username:password")>

    All requests must send through HTTPS

    Oauth2 Authentication Description (Oauth2)

    If you need to connect with the Moka open platform to obtain private data (such as applications, job information, etc.), in order to ensure data security and privacy, you need to obtain authorization to access, that is, to obtain the authorization token accessToken for accessing user data. This process adopts the internationally accepted OAuth2.0 standard protocol as the user authentication and authorization protocol. OAuth2.0 protocol specification

    Preparation

    You need to use the private clientId and clientSecret generated by Moka for your organization, and get the accessToken through clientid and clientSecret. A request to access the Moka API through an accessToken. Ask your CSM (Customer Success Manager) for clientid and clientSecret if needed.

    Get accessToken

    The call interface accessToken is valid for 2 hours.
    When the validity period is greater than or equal to 30 minutes, call the accessToken interface to return the old accessToken.
    When the validity period is less than 30 minutes, call the accessToken interface to return a new accessToken. At this time, both the old and new accessTokens are valid.
    > Request example

    curl  --location --request POST 'https://api.mokahr.com/api-platform/v1/auth/oauth2/getToken' \
    --header 'Content-Type: application/json' \
    --data-raw '
    
    {
       "clientID": "moka_Z1Y99DlokiOGXmw8",
       "clientSecret": "ell2Wl2dwUQ7no75BAsLrwtUaPw8W0tAEoYXv13ibRoV",
       "grantType": "client_credentials"
    }'
    

    > Response example

    {
        "code": 0,
        "msg": "Success",
        "data": {
            "accessToken": "a-685ca366-45e8-4025-9825-9840280ecd39",
            "expiresIn": 6824,
            "tokenType": "Bearer"
        }
    }
    

    > Sample Error Response

    {
        "code": 110020,
        "msg": "unauthorized_client",
        "data": {}
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/auth/oauth2/getToken

    Body parameters

    Field Type Whether it is required Description
    clientID String Yes Apply with unique identifier, contact CSM to obtain
    clientSecret String Yes Apply with key, contact CSM to obtain
    grantType String Yes Authorization type, value is client_credentials

    Response parameter

    Field Type Description
    code integer 0:Success,Others:Error
    msg String Error info
    data Object
    data.accessToken String Interface access credentials
    data.tokenType String accessToken的Type目前只支持Bearer
    data.expiresIn Number accessToken expiration time,Unit:Second

    Error code

    code errorMessage Error description
    110020 unauthorized_client invalid clientID or clienSecret, please contact CSM to get valid clientID or clienSecret

    call business interface

    > Request example

    curl --location --request PUT 'https://api.mokahr.com/api-platform/v2/departments' \
    --header 'Authorization: Bearer
     <accesstoken>
      ' \
    --header 'Content-Type: application/json' \
    --data '{
           "departments": [
            { "departmentCode": "ididid1", "name": "namenamename1", "parentCode": "ididid1", "sequence": 0 },
            { "departmentCode": "ididid2", "name": "namenamename2", "parentCode": "ididid2" },
            { "departmentCode": "ididid2", "name": "namenamename2", "parentCode": "ididid2", "type": 2 },
            { "departmentCode": "ididid3", "name": "namenamename3", "parentCode": "0"}
        ]
      }'
    

    When calling the business interface, you need to add the Authorization parameter in the Header, the value isBearer <accesstoken> . Taking calling the new organization structure interface as an example, the request example is as follows:

    Proactive push instructions (Webhooks)

    What are webhooks

    Webhooks are a way to trigger Moka to actively push data when certain events occur. When these events occur, we send an HTTP POST request to the webhook endpoint you set URL. The request body will contain relevant data in JSON format. Since webhook is not an API endpoint for accessing Moka, no API is required Key to perform HTTP basic auth verification. In addition to supporting HTTP RESTful interface, we also support WebService (SOAP) interface. Please refer to the instructions below.

    ## How to set up webhooks

    Please provide CSM with an HTTPS URL accessible from the public network as the address for receiving webhook requests. After we configure it, we will provide you with a signing key (signing key), it is used for verification, please keep it properly. If it is a WebService (SOAP) interface, please provide the CSM with an address where WSDL can be obtained, and inform that this is a WebService (SOAP) interface.

    ## Security of webhooks (HTTP RESTful method)

    We only support HTTPS endpoint

    Since Moka needs to send some Candidate information to the outside, which may contain sensitive information. We need to ensure that all information is encrypted. Although the request is an HTTPS endpoint, we will not verify the validity of the certificate with the CA. So you can provide a self-signed certificate about how to create and use self-signed certificates.

    Signature authentication

    > Signature authentication

    ```javascript import crypto from 'crypto';

    /** * @description body签名 * @description 加密方式 HamcSha256 * @description 加密 result为16进制 * @param {Object} body 接口Parameter * @param {String} signKey 加密使用的key */ function validateWebhook(body, signKey) { const signStr = JSON.stringify(body); console.log('sha256 signStr:', signStr);// sha256 signStr: {"name":"test","email":"test@mokahr.com"} const sign = crypto.createHmac('sha256', signKey).update(signStr).digest('hex'); console.log('sha256 sign:', sign);// sha256 sign: 7d6981ccf0d789e29e4f5940fe9a7e9385d8a211ad44ecaaba335fb14dd2a32d } const body = { name: 'test', email: 'test@mokahr.com', } const signKey = 'qwer';

    validateWebhook(body, signKey); ```

    We ensure the authenticity of the request source (authentication, that is, the request comes from Moka) by signing the request body. The signature generated by the signature will be placed in the query of the request url along with the request

    can be sent together. Request URL such as:

    https://your-endpoint.com/moka?sign=d23da96c279366d66e2780d300d9b09d6b0ec09efbbe2c3fd84980d981e4b41a

    In terms of verification, you need to use the signing key as the key and the request body as the content, calculate the result through HMAC-SHA256, and compare it with the signature in the request URL.










    Data encryption

    > Data encryption and decryption

    , If you have higher data security requirements, you can choose to encrypt the transmitted data. Our encryption algorithm adopts AES-256, hexadecimal, and the encryption mode is CBC. We only encrypt the dataField in the body, excluding id, event, triggeredAt and other fields. , If Data encryption is required, please contact CSM to enable it and set the encryption key. Please keep the encryption key properly, and if such as is leaked, please contact us in time to deal with it.

    ## Receive webhooks (HTTP RESTful method)

    You need to configure your server to accept Moka push webhook requests. The request method is HTTP POST, and the content is in JSON format.

    Each event has a consistent JSON structure, but different trigger events will have different data content. The JSON structure is as follows:

    Field Type Description
    id string The unique id identifies this request
    event string Event type,, such aspushCandidate
    triggeredAt timestamp Trigger time
    data object Real data. Different event with different structure and content

    The currently provided webhook events are as follows:

    Event type Description
    pushCandidate Push Candidate information. Applicable scenarios are:

    Candidates who waiting for offers need to be pushed to the OA/EHR system for offer approval and sending. Candidates to be onboarded need to be pushed to the EHR system for entering employee information, etc.

    Respond webhooks (HTTP RESTful method)

    After successfully receiving and processing the webhook request, return 2xx. When Moka receives a non-2xx result, it will prompt the user that the import failed. If there is an error message, it can be returned in the body, eg:{msg:'There is an error in the current data'}.

    WebService (SOAP) method

    WebHooks in WebService mode are similar to those in HTTP mode, except that the protocol is based on SOAP. To configure WebHooks in SOAP mode, you need to provide CSM with an address where WSDL can be obtained. SOAP method names, parameters, and return values need to be consistent with those described in the following documents. The signature uses the Bearer method, you can refer to here

    SOAP description

    In addition to using the HTTP RESTful interface, a SOAP service interface can also be provided, which can be invoked by Moka. If you want to use SOAP, you need to provide the corresponding WSDL address to CSM. The interface standard of SOAP method is as follows:

    Type Description
    Method name pushCandidate
    Parameter Candidate information, the data type is xml, and the field type is consistent with json, please refer to the description of the json part above.
    Response value true/false represents success or failure

    Redirect to external system

    If OA/EHR wants to jump to the target address after triggering webhooks in MOKA, it only needs to be in Just add the redirectUrl parameter to the return parameter of the body. When MOKA receives similar parameters, it will judge whether to jump to the PC end or the Mobile end according to the user's device. Currently, redirect only supports RESTful webhooks.

    Field Type Description
    redirectUrl array External link
    mobileUrl string When the mobile terminal of the third-party system redirect to the temporary link of the external system, it is recommended to sign in directly with a token
    pcUrl string When the pc terminal of the third-party system redirect to the temporary link of the external system, it is recommended to sign in directly with a token

    > Response example

    {
        "redirectUrl": {
            "mobileUrl": "https: //app.mokahr.com/m/interviews/356408095/intervi",
            "pcUrl": "https://app.mokahr.com/m/interviews/356408095/intervi"
        }
    }
    

    Push candidate info

    Function illustration

    Pushing candidate information is currently triggered by clicking the "Import EHR" button in Moka, as shown in the figure below:

    Ehr

    Redirect toREST Redirect toSOAP

    a name="REST illustration">

    REST illustration

    > Data example:

    {
      "id": "f353e5ce-17e0-4783-bee4-4a6b734b20fe",
      "event": "pushCandidate",
      "triggeredAt": 1505296287,
      "data": {
        "applicationId": 12798,
        "CandidateId": 8030,
        "moved_at": "2018-08-03T10:25:12.000Z",
        "name": "邵旭冬",
        "phone": "18600000000",
        "email": "shaodong@example.com",
        "gender": "Male",
        "created_at": "2018-08-03T10:25:12.000Z",
        "birthYear": 1992,
        "birthDate":"2020-03-17T00:00:00.000Z",
        "nationality": "中国",
        "experience": 7,
        "ethnic": "汉族",
        "forwardLocation": null,
        "salary": "",
        "aimSalary": null,
        "certificateType": 1,
        "citizenId": "410322199202152910",
        "nativePlace": "北京City朝阳District",
        "location": "北京",
        "source": "OtherSource",
        "sourceList": [
          {
            "name": "OtherSource",
            "isBuiltin": true
          }, {
            "id": 4,
            "name": "Other",
            "isBuiltin": true
          }
        ],
        "sourceType": 1,
        "academicDegree": "Bachelor degree",
        "lastSpeciality": "人力资源管理",
        "married": "Single",
        "jobCommitment": " Full-time",
        "hireMode": 1,
        "finishedAt": "2019-08-23T16:00:00.000Z",
        "resumeKey": "962bcac5-7671-4cbb-bbd7-376177703674.doc",
        "stageName": "To be onboarded",
        "probation": null,
        "lastCompany": null,
        "operator": {
          "name": "李明",
          "email": "liming@example.com",
          "phone": "18600000001",
          "number": "A001"
        },
        "lastCompany": "郑州麦田伙伴科技有限公司",
        "nativePlaceCode": 310107,
        "nationalityCode": 3,
        "genderCode": 0,
        "academicDegreeCode": 7,
        "ethnicCode": 2,
        "job": {
          "title": "黑龙江-资易通业务线-催收部-CEO",
          "department": "运维部",
          "departmentCode": "6758",
          "parentDepartmentCode": "6836",
          "departmentPath": "信息物流中心/运维部",
          "competencyType": "产品类",
          "jobId": "39d3d5c9-949e-40d4-8d4b-5cb247d327a8",
          "jobDescription": "
       <p>
        职位表述职位表述
       </p>
       ",
          "customFields": [
            {
              "name": "职位-年月",
              "value": "2019-01"
            }
          ]
        },
        "jobManager": {
          "name": "test",
          "email": "11q1@qq.com",
          "phone": "17611232222",
          "employeeId": "01"
        },
        "officeweb365Url": "http://www.officeweb365Url.com",
        "officeweb365PrintUrl": "http://www.officeweb365PrintUrl.com",
        "resumePdfMeta": null,
        "portraitUrl": "http://www.portraitUrl.com",
        "resumeUrl": "https://moka-test.oss-cn-beijing.aliyuncs.com/962bcac5-7671-4cbb-bbd7-376177703674.doc?OSSAccessKeyId=LTAIoEXIQWCGUAZO&Expires=1540374892&Signature=M1KKiwjG240uTmqK4qSbmRAU+yI=",
        "educationInfo": [
          {
            "startDate": "2011-09",
            "endDate": "2015-06",
            "now": false,
            "school": "北京邮电大学",
            "speciality": "土木工程",
            "academicDegree": "Bachelor degree"
          }
        ],
        "experienceInfo": [
          {
            "startDate": "2016-03",
            "endDate": "2017-09",
            "now": true,
            "company": "北京有利科技有限公司",
            "title": "高级Java工程师",
            "summary": "Job responsibilityXXX",
            "reasonForLeaving": "Reason for resignationXXX",
            "underlingNumber": "5"
          },
          {
            "startDate": "2015-05",
            "endDate": "2016-03",
            "now": false,
            "company": "北京水果电商技术有限公司",
            "title": "java工程师",
            "summary": "Job responsibilityXXX",
            "reasonForLeaving": "Reason for resignationXXX",
            "underlingNumber": "5"
          }
        ],
        "customFields": [
          {
            "name": "身高",
            "value": 175,
            "section": "educationInfo",
            "index": 0
          },
          {
            "name": "Contact name",
            "value": "张三",
            "section": "紧急联系人",
            "index": 0
          },
          {
            "name": "联系人关系",
            "value": "父亲",
            "section": "紧急联系人",
            "index": 0
          },
          {
            "name": "Contact phone",
            "value": "13012341234",
            "section": "紧急联系人",
            "index": 0
          },
          {
            "name": "Contact email",
            "value": "zs@demo.com",
            "section": "紧急联系人",
            "index": 0
          },
          {
            "name": "Contact name",
            "value": "张小四",
            "section": "紧急联系人",
            "index": 1
          },
          {
            "name": "联系人关系",
            "value": "兄弟",
            "section": "紧急联系人",
            "index": 1
          },
          {
            "name": "Contact phone",
            "value": "130567585678",
            "section": "紧急联系人",
            "index": 1
          },
          {
            "name": "Contact email",
            "value": "zxs@demo.com",
            "section": "紧急联系人",
            "index": 1
          },
          {
            "name": "预计到岗 Date",
            "value": "2018-4-23T09:10:26.000Z",
            "now": false,
            "section": "basicInfo",
            "index": 1
          },
          {
            "name": " Internship期",
            "value": {
              "startDate": "2004-01",
              "endDate": "2005-01"
            },
            "now": true,
            "section": "basicInfo",
            "index": 1
          }
        ],
        "interviewers": [
          {
            "name": "李明",
            "email": "liming@example.com",
            "phone": "18600000001",
            "round": 1,
            "roundName": "1st round",
            "roundOtherName": {
              "en-US": {
                "name": "1st round"
              }
            },
            "startTime": "2018-08-03T10:25:12.000Z",
            "createdAt": "2018-08-03T10:20:12.000Z",
            "locationCountry": "中国",
            "locationCityId": 141129,
            "locationAddress": "滨海镇小山村",
            "resultName": " Very dissatisfied",
            "resultType": 0,
            "feedback": "水平一般",
            "feedbackTemplateResult": [
              {
                "type": 1,
                "title": "题目1的标题",
                "description": "题目1的Description",
                "calcScoreType": "total",
                "needReason": true,
                "result": 9,
                "scoreType": 1,
                "subjects": [
                  {
                    "type": 1,
                    "title": "小题1的标题",
                    "description": "小题1的Description",
                    "result": 9,
                    "reason": "小题1的Score review"
                  }
                ]
              },
              {
                "type": 2,
                "title": "题目2的标题",
                "description": "题目2的Description",
                "result": 1,
                "subjects": [
                  {
                    "title": "小题1的标题",
                    "description": "小题1的Description",
                    "result": 1,
                    "options": ["选项1", "选项2"],
                    "reason": "小题1的Score review"
                  }
                ]
              },
              {
                "type": 3,
                "title": "题目3的标题",
                "description": "题目3的Description",
                "subjects": [
                  {
                    "title": "小题1的标题",
                    "description": "小题1的Description",
                    "result": "技术很棒",
                    "reason": "小题1的Score review"
                  }
                ]
              }
            ]
          },
          {
            "name": "王宏",
            "email": "wanghong@example.com",
            "phone": "18600000002",
            "round": 2,
            "roundName": "2nd round",
            "roundOtherName": {
              "en-US": {
                "name": "2st round"
              }
            },
            "startTime": "2018-08-03T10:25:12.000Z",
            "createdAt": "2018-08-03T10:20:12.000Z",
            "resultName": " Satisfaction",
            "resultType": 1,
            "feedback": "水平有限"
          }
        ],
        "interviewFeedbackUrl": "https://cdn.mokahr.com/e11d677-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q=",
        "extendedInterviewers":[],
        "extendedInterviewerFeedbackUrl":"",
        "referrer": {
          "name": "杨",
          "email": "11111@mokahr.com",
          "phone": "15001802222",
          "number": "2019"
        },
        "headcountInfo": [
          {
            "id": 1,
            "number": "A001",
            "name": "紧急hc",
            "status": "timeout"
          }
        ],
        "jobRanksInfo": [
          {
            "name": "初级",
            "type": "类别1",
            "level": 1
          }
        ],
        "offer": {
          "approvalStatus": "APPROVED",
          "salaryNumber": 8000,
          "checkinDate": "2018-5-3",
          "location": "北京City海淀District中关村方正国际大厦1001",
          "creator": {
            "name": "赵摩卡",
            "email": "zhao@mokahr.com"
          },
          "finishedAt": "2018-4-23T09:10:26.000Z",
          "customFields": [
            {
              "name": "职级",
              "value": "P6"
            }
          ],
          "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=",
            "type": "Candidate_UPLOAD_ATTACHMENT",
            "customFieldId": 1,
            "customFieldName": "上传简历"
          }
        ],
        "offerAttachment": {
          "url": "https://cdn.mokahr.com/1234567-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q="
        },
        "examReportLinks": [
          {
            "name": "考试 result链接",
            "url": "https://t.cn/XXXXXX"
          }
        ],
        "examAttachments": [
          {
            "name": "考试 result",
            "url": "https://cdn.mokahr.com/1234567-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q="
          }
        ],
        "projectInfo": [
          {
            "startDate": "2018-09",
            "endDate": "2018-10",
            "projectName": "测试项目",
            "title": "工程师",
            "projectDescript": "这Yes个测试的项目",
            "responsibilities": "开发",
            "now": false
          }
        ],
        "languageInfo": [
          {
            "language": "213",
            "level": "一般",
            "listenAndSpeak": "良好",
            "readAndWrite": "熟练"
          }
        ],
        "ehrCustomFields": [
          {
            "name": "extendDepartmentId",
            "value": 3
          }
        ],
        "ehrCandidateExternalLink": "https://cdn.mokahr.com/forward/Candidate/info?access_token=93e0eb37-6a5c-4fe4-91db-0579a844fb51",
        "label": [
          {
            "id": 76,
            "label": "特别厉害"
          },
          {
            "id": 62,
            "label": "FisH"
          }
        ],
        "remarks": [
          {
            "creator": {
              "name": "李国兴",
              "phone": "18810380011",
              "email": "guoxing123@trymoka.com",
              "number": "1234"
            },
            "content": "这个Candidate还不错@[李国兴](1) ",
            "targets": [
              {
                "name": "李国兴",
                "phone": "18810380011",
                "email": "guoxing123@trymoka.com",
                "number": "1234"
              }
            ],
            "is_private": 1,
            "type": "人工填写",
            "created_at": "2020-03-30T05:53:28.000Z"
          }
        ],
        "owners": {
          "name": "张乔",
          "phone": "15810253321",
          "email": "zhangqiao@mokahr.com",
          "employee_id": "220"
        }
      }
    }
    

    Request 'data' structure, as follows:

    Field Type Description
    CandidateId integer The unique id of Candidate in Moka
    applicationId integer The unique id of Candidate's application in Moka
    name string Name
    prefixPhone string Country calling code
    phone string Phone
    email string Email
    gender string Gender
    Optional values are:
    Male
    Female
    created_at string Resume in-system time
    birthYear integer Birthyear,, such as1990
    birthDate string Birthdate
    ethnic string Ethnicity
    certificateType integer Certificate type
    Optional values are:
    1: id card
    2: Hong Kong id card
    3: Macau id card
    4:Taiwan id card
    5: Passport
    6: Other identity document
    7: Exit-Entry Permit for Travelling to and from Hong Kong and Macau (EEP)
    8: The Mainland Travel Permit for Taiwan Residents
    9:Foreigners' Work Permit
    10:Residence Permit for Foreigner
    citizenId string identification No.
    nationality string Country/Region
    nativePlace string Birthplace
    experience integer Work experience, 0 represents fresh graduate, -1 represents current student, others represent specific years.
    portraitUrl string The link of Candidate's portrait is valid for 1 hour
    hireMode integer Recruitment mode
    Optional values are:1: experienced hires
    2: Campus recruitment
    finishedAt string Recruitment goal finish time
    industry string Industry
    archived boolean Whether to archive the application
    archivedAt string Archive application time
    archiveReasonId number Reason for archive id
    archiveReasons string Reason for archive
    archiveReasonsDetails string Detail reason for archive
    talentPoolsList array Candidate's talent pool
    talentPoolsList[].talentPoolId number Talent pool id
    talentPoolsList[].name string Talent pool name
    talentPoolsList[].description string Talent pool description
    source string Source,Such as, 'Lagou'
    sourceList Array Source level,the group will in numerical order, such as Tier-1 source, Tier-2 level, Tier-3 level
    sourceList[].id integer Source id (Tier-1 level doesn't exist)
    sourceList[].name string Source name
    sourceList[].isBuiltin boolean Whether the system has a built-in channel
    sourceType integer From
    Optional values are:
    1: Active search,2:Direct delivery,3:Talent recommendation
    location string Location,Such as, 'Beijing'
    lastCompany string Recent company
    Optional values are:
    null:no recent company
    xxx:Served company name
    academicDegree string Highest education
    Optional values are:
    Bachelor degreeMaster degreeDoctor degreeSenior high schoolJunior collegeTechnical secondary schoolMBAOthers
    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 empty,Code details refer to attachment)
    genderCode integer Gender code(null if gender is empty, see attachment for code details)
    academicDegreeCode integer Recent graduate major
    ethnicCode integer Ethnicity code(null if Ethnicity is empty, see attachment for code details)
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    educationInfo[].school string School
    educationInfo[].speciality string Major
    educationInfo[].academicDegree string Education,optional values are:Bachelor degreeMaster degreeDoctor degreeSenior high schoolJunior collegeTechnical secondary schoolMBAOthers
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    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[].location string Work location
    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 request the URL to download the original resume file, and it is only valid for 48 hours. Thus, you need to download it as soon as possible.
    job object Position info
    job.jobId string Position id
    job.title string Job title
    job.department string Department
    job.departmentPath string The department full path of the position, from superior to subordinate, split by '/'
    job.departmentCode string Department code
    job.parentDepartmentCode string Upper-department code
    job.competencyType string Function type
    job.jobDescription string Job description
    job.customFields array Position custom field
    job.customFields[].name string Job title custom field name
    job.customFields[].value string Position custom 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 Interview id
    interviewers[].groupId string Interview group id
    interviewers[].interviewType string Interview type. On-site interview、Phone interview、Video interview
    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 Not start, Filled feedback, Not fill feedback
    interviewers[].status string Interview status
    Optional value
    Cancelled, unfinished, Finished
    interviewers[].round integer Interview rounds
    Optional value
    1: 1st round
    2: 2nd round
    3: Final round ,etc.
    interviewers[].roundName string Interview roundsTitle,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(city id)
    interviewers[].locationAddress string Interview location(full address)
    interviewers[].result Deprecated integer Interview result
    Optional values are:
    1: Very dissatisfied
    2: Dissatisfied
    3; Satisfaction
    4:Very satisfied
    interviewers[].resultName string Interview feedback
    interviewers[].resultType integer Type of interview feedback result
    Optional values are:
    0: Dissatisfied 1: Satisfaction
    interviewers[].feedback string Interview feedback content
    interviewers[].feedbackTemplateResult array Information of interview evaluation
    interviewers[].feedbackTemplateResult[].type number Question type
    Optional values are:
    1:Scoring question
    2: Single-choice question
    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 Optional values are:
    avg: Average
    total: Total score (valid when the ‘type’ is 1)
    interviewers[].feedbackTemplateResult[].scoreType number Optional values are:
    5 represents 5-point
    10 represents 10-point (valid when the ‘type’ is 1)
    interviewers[].feedbackTemplateResult[].needReason string Whether need scoring review or not (valid when the ‘type’ is 1)
    interviewers[].feedbackTemplateResult[].subjects array Information about each sub-question
    interviewers[].feedbackTemplateResult[].subjects[].type number Question type
    Optional values are:
    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:Scoring question is the value of selected score; Multiple choice is the index value of options,which is started from 0;Description question is the string of description. When the question is type=2,multiple choice question,with the return value is "result": 0; When the question type=4 ,multiple response question, with the return value is "result": [1,2]
    interviewers[].feedbackTemplateResult[].subjects[].reason string Score review
    interviewers[].feedbackTemplateResult[].subjects[].options string Array of option strings (only valid when type is 2)
    interviewFeedbackUrl string The download link of interview feedback summary file (contains the interview feedback data generated by the the current application). HTTP GET request to this URL can download the interview feedback summary file, and this link is valid for 1 hour. Thus, you need to download it as soon as possible after receiving the request.
    extendedInterviewers[] array No interview feedback information from the interviewer who participated in the candidate's application for this application. For specific fields, refer to interviewers
    extendedInterviewerFeedbackUrl string Interview feedback summary (if the application is recommended from other positions, the interview feedback includes the interview feedback generated by the application of other positions) file download link, HTTP GET requests this URL to download the interview feedback summary file, this link is time-sensitive Sex, the expiration time is 48 hours, it needs to be downloaded and saved on the server as soon as possible after receiving the request
    ehrCustomFields[] array The ehr custom export field set configured in the CSM background
    ehrCustomFields[].name string Custom field name
    ehrCustomFields[].value any Custom field value
    ehrCandidateExternalLink string The link of Candidate details can be directly opened and viewed in the browser. The link is valid for 14 days by default and can be set up to 365 days.
    idCardFrontList array Upload id card picture (portrait side)
    idCardBackList string Upload id card picture (national emblem side)
    idCardSignOrganization string Issuing authority of id card
    idCardValidity string id card validity period
    customAttachmentList obj All attachments of Candidate's standard resume
    customAttachmentList.customUpload+customId ary The key of the attachment of the Candidate's standard resume is composed of customUpload (fixed string) + customid
    customAttachmentList.customUpload+customId[].attachmentName string Attachment name
    customAttachmentList.customUpload+customId[].attachmentSize number Attachment size (byte)
    customAttachmentList.customUpload+customId[].CandidateId number Candidate id
    customAttachmentList.customUpload+customId[].customId number Custom field id
    customAttachmentList.customUpload+customId[].downloadUrl string The download address will invalid in 24 hours
    customAttachmentList.customUpload+customId[].createdAt string Created time of attachment (timestamp format)
    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
    Optional values are:
    null:no employee No.
    xxx:Employee No.
    operator object Operator info
    operator.name string Operator name
    operator.email string Operator email
    operator.phone string Operator phone
    operator.number string Operator No.
    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 code
    headcountInfo[].name string Headcount name
    headcountInfo[].status string Headcount status
    customFields[] array Candidate custom fields, containing only the custom fields set in the standard resume
    customFields[].name string Candidate custom field name
    customFields[].value string Value of Candidate custom field . For yes or no question type
    Optional values are:
    1:Yes
    0:No.
    customFields[].now boolean This field exists when the custom field is a time period, and identifies whether the end time is "today". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    customFields[].section string Name of the module where the custom field is located, the module can be a built-in module (e.g. experienceInfo) or a custom module (e.g. 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 which piece of data
    customFields[].codes string Custom code for multiple choice questions (valid for multiple choice questions with code)
    offer object Offer info
    offer.createdAt string Create offer time. Date format is: ISO8601
    offer.status string Offer status
    Optional values are:
    notCreated:To be created
    : pending: To be sent
    sent: Pending
    : accepted :Accepted
    rejected:Rejected
    offer.approvalStatus string Approval status
    Optional values are:
    UNINITIATED:Uninitiated
    INPROGRES: 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 Offer creator info
    offer.creator.name string Offer creator name
    offer.creator.email string Offer creator email
    offer.finishedAt string Accept offer time. Date format is: ISO8601
    offer.customFields array Offer custom field
    offer.customFields[].name string Offer custom field name
    offer.customFields[].value string Offer custom field value
    offer.customFields[].codes string Custom code for multiple choice questions (valid for multiple choice questions with code)
    offer.attachmentList array Offer attachment list
    offer.attachmentList[].name string Offer attachment name
    offer.attachmentList[].size number Offer attachment size
    offer.attachmentList[].downloadUrl string The download link of offer attachment is valid for 48 hours
    offer.attachmentList[].attachmentType number Offer attachment type
    Optional values are:
    0:Attachment for Candidate
    1.Attachment for approver
    2:Offer attachment
    offer.hcInfo object The headcount info selected by offer
    offer.hcInfo.id number The headcount id selected by offer
    offer.hcInfo.number string The headcount code selected by offer
    offer.hcInfo.name string The headcount name selected by offer
    offer.hcInfo.status string The headcount status selected by offer
    offer.jobRankInfo object Job level info selected by offer
    offer.jobRankInfo.type string The job level name selected by offer
    offer.jobRankInfo.level string Job level selected by offer
    offer.jobRankInfo.name string Job level name selected by offer
    offer.departmentName string Onboarding department name
    offer.departmentCode number Onboarding department code
    offer.parentDepartmentCode number The upper department of onboarding department code
    offer.departmentPath string The full path of Onboarding department
    offer.offerLastSentAt string Last offer time
    offer.offerAttachmentDownloadUrl string The download URL of attachment generated by offer is valid for 48 hours
    attachments array The Candidate's attachment
    attachments[].name string The doc. name of Candidate's attachment
    attachments[].applyFormId number Registration form template id
    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
    Optional values are:
    Candidate_UPLOAD_ATTACHMENT Upload by candidate
    UPLOAD_PORTRAIT Candidate portrait
    HR_UPLOAD_ATTACHMENT Upload manually by HR
    HM_UPLOAD_ATTACHMENT Manual upload on the HR side
    INTERVIEW_ACCEPT Attachment of the registration form generated by the candidate accepted interview
    INTERVIEW_SIGNIN Registration form attachment generated by candidate interview sign-in
    OFFER_ACCEPT Attachment of the registration form generated by the candidate accepted offer
    MERGE_APPLICATION_ATTACHMENT Attachments generated by mergering candidates
    INVITE_UPDATE_RESUME Invite Candidates to update the registration form for resume generation
    offerAttachment object Candidate attachment related to offer
    By default, this field does not exist. If necessary, please contact your CMS. This field will not exist even if the candidate interface switch is turned on
    offerAttachment.url string The download url of Candidate attachment related to offer
    The link is valid for 48 hours
    examReportLinks array Link of Candidate assessment/test result
    examReportLinks[].name string Candidate assessment/test name
    examReportLinks[].url string Link of Candidate assessment/test result
    examReportLinks[].type string Represent: exam or evaluation
    examReportLinks[].result string Link of Candidate assessment/test result
    examReportLinks[].detailResult string Detailed result of Candidate assessment/test
    examAttachments array Related attachment of Candidate assessment/test
    examAttachments[].name string Related attachment name of Candidate assessment/test
    examAttachments[].url string Related attachment download url of Candidate assessment/test
    The link is valid for 1 hour
    examAttachments[].result string Link of Candidate assessment/test result
    examAttachments[].detailResult string Detailed result of job assessment/test
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    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.number string Position leader phone employee No.
    jobManager.employeeId string Position leader phone employee No.(Deprecated)
    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.(Deprecated)
    label array Candidate tag
    label[].id number Tag id
    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 information of the person who mentioned by '@' in the note, which format is the same as the creator' s information
    remarks[].is_private number Whether the not is private,1:Private0:Public
    remarks[].type string Note type: 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[].surveyAttachmentsUrl string The link of PES report
    survey[].surveyAttachmentName string The name of PES attachment
    survey[].surveyAttachments[] array PES multiple attachments (the new version of the single attachment and multiple attachments are in this attachment collection. The original single attachment results are only used for historical compatibility)
    survey[].surveyAttachments[].surveyAttachmentsUrl string The link of PES report
    survey[].surveyAttachments[].surveyAttachmentName 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

    > SOAP parameter example of candidate info:

       <?xml version="1.0" encoding="UTF-8"?>
       <root>
        <event>
         pushCandidate
        </event>
        <id>
         f353e5ce-17e0-4783-bee4-4a6b734b20fe
        </id>
        <triggeredat>
         1505296287
        </triggeredat>
        <data>
         <academicdegree>
          Bachelor degree
         </academicdegree>
         <applicationid>
          12798
         </applicationid>
         <birthyear>
          1992
         </birthyear>
         <Candidateid>
          8030
         </Candidateid>
         <customfields>
          <element>
           <index>
            0
           </index>
           <name>
            身高
           </name>
           <section>
            educationInfo
           </section>
           <value>
            175
           </value>
          </element>
          <element>
           <index>
            0
           </index>
           <name>
            Contact name
           </name>
           <section>
            紧急联系人
           </section>
           <value>
            张三
           </value>
          </element>
          <element>
           <index>
            0
           </index>
           <name>
            联系人关系
           </name>
           <section>
            紧急联系人
           </section>
           <value>
            父亲
           </value>
          </element>
          <element>
           <index>
            0
           </index>
           <name>
            Contact phone
           </name>
           <section>
            紧急联系人
           </section>
           <value>
            13012341234
           </value>
          </element>
          <element>
           <index>
            0
           </index>
           <name>
            Contact email
           </name>
           <section>
            紧急联系人
           </section>
           <value>
            zs@demo.com
           </value>
          </element>
          <element>
           <index>
            1
           </index>
           <name>
            Contact name
           </name>
           <section>
            紧急联系人
           </section>
           <value>
            张小四
           </value>
          </element>
          <element>
           <index>
            1
           </index>
           <name>
            联系人关系
           </name>
           <section>
            紧急联系人
           </section>
           <value>
            兄弟
           </value>
          </element>
          <element>
           <index>
            1
           </index>
           <name>
            Contact phone
           </name>
           <section>
            紧急联系人
           </section>
           <value>
            130567585678
           </value>
          </element>
          <element>
           <index>
            1
           </index>
           <name>
            Contact email
           </name>
           <section>
            紧急联系人
           </section>
           <value>
            zxs@demo.com
           </value>
          </element>
         </customfields>
         <educationinfo>
          <element>
           <academicdegree>
            Bachelor degree
           </academicdegree>
           <enddate>
            2015-06
           </enddate>
           <school>
            北京邮电大学
           </school>
           <speciality>
            土木工程
           </speciality>
           <startdate>
            2011-09
           </startdate>
          </element>
         </educationinfo>
         <email>
          shaodong@example.com
         </email>
         <experienceinfo>
          <element>
           <company>
            北京有利科技有限公司
           </company>
           <enddate>
            2017-09
           </enddate>
           <startdate>
            2016-03
           </startdate>
           <title>
            高级Java工程师
           </title>
          </element>
          <element>
           <company>
            北京水果电商技术有限公司
           </company>
           <enddate>
            2016-03
           </enddate>
           <startdate>
            2015-05
           </startdate>
           <title>
            java工程师
           </title>
          </element>
         </experienceinfo>
         <gender>
          Male
         </gender>
         <headcountinfo>
          <element>
           <id>
            1
           </id>
           <number>
            A001
           </number>
          </element>
         </headcountinfo>
         <interviewfeedbackurl>
          https://cdn.mokahr.com/e11d677-4962-4309-b507-2273bf2499c8.pdf?OSSAccessKeyId=BBc12XXIQWCGUAZO&Expires=1505300229&Signature=Vdw6zpNH8HTUnu1FvhSjdXiqK6Q%3D
         </interviewfeedbackurl>
         <interviewers>
          <element>
           <email>
            liming@example.com
           </email>
           <feedback>
            水平一般
           </feedback>
           <feedbacktemplateresult>
            <element>
             <calcscoretype>
              total
             </calcscoretype>
             <description>
              题目1的Description
             </description>
             <needreason>
              true
             </needreason>
             <scoretype>
              5
             </scoretype>
             <subjects>
              <element>
               <description>
                小题1的Description
               </description>
               <result>
                10
               </result>
               <title>
                小题1的标题
               </title>
              </element>
             </subjects>
             <title>
              题目1的标题
             </title>
             <type>
              1
             </type>
            </element>
            <element>
             <description>
              题目2的Description
             </description>
             <subjects>
              <element>
               <description>
                小题1的Description
               </description>
               <options>
                <element>
                 选项1
                </element>
                <element>
                 选项2
                </element>
               </options>
               <result>
                1
               </result>
               <title>
                小题1的标题
               </title>
              </element>
             </subjects>
             <title>
              题目2的标题
             </title>
             <type>
              2
             </type>
            </element>
            <element>
             <description>
              题目3的Description
             </description>
             <subjects>
              <element>
               <description>
                小题1的Description
               </description>
               <result>
                技术很棒
               </result>
               <title>
                小题1的标题
               </title>
              </element>
             </subjects>
             <title>
              题目3的标题
             </title>
             <type>
              3
             </type>
            </element>
           </feedbacktemplateresult>
           <name>
            李明
           </name>
           <phone>
            18600000001
           </phone>
           <result>
            1
           </result>
           <round>
            1
           </round>
           <roundname>
            1st round
           </roundname>
          </element>
          <element>
           <email>
            wanghong@example.com
           </email>
           <feedback>
            水平有限
           </feedback>
           <name>
            王宏
           </name>
           <phone>
            18600000002
           </phone>
           <result>
            2
           </result>
           <round>
            2
           </round>
           <roundname>
            2nd round
           </roundname>
          </element>
         </interviewers>
         <job>
          <department>
           研发部
          </department>
          <title>
           java工程师
          </title>
         </job>
         <jobranksinfo>
          <element>
           <level>
            1
           </level>
           <name>
            初级
           </name>
           <type>
            类别1
           </type>
          </element>
         </jobranksinfo>
         <location>
          北京
         </location>
         <married>
          Single
         </married>
         <name>
          邵旭冬
         </name>
         <offer>
          <checkindate>
           2018-5-3
          </checkindate>
          <creator>
           <email>
            zhao@mokahr.com
           </email>
           <name>
            赵摩卡
           </name>
          </creator>
          <customfields>
           <element>
            <name>
             职级
            </name>
            <value>
             P6
            </value>
           </element>
          </customfields>
          <finishedat>
           2018-4-23T09:10:26.000Z
          </finishedat>
          <location>
           北京City海淀District中关村方正国际大厦1001
          </location>
          <lastcompany>
           郑州麦田伙伴科技有限公司
          </lastcompany>
          <salarynumber>
           8000
          </salarynumber>
         </offer>
         <operator>
          <email>
           liming@example.com
          </email>
          <name>
           李明
          </name>
          <phone>
           18600000001
          </phone>
          <number>
           A001
          </number>
         </operator>
         <phone>
          18600000000
         </phone>
         <referrer>
          <email>
           11111@mokahr.com
          </email>
          <name></name>
          <phone>
           18600000001
          </phone>
          <number>
           2019
          </number>
         </referrer>
         <resumeurl>
          https://cdn.mokahr.com/55142a64-ab10-4292-ac9e-93af856fa001.doc?OSSAccessKeyId=LTAIoEXIQWCGUAZO&Expires=1505300229&Signature=fiD81pNH8HTUnu1FvhsnjCvjK6Q%3D
         </resumeurl>
         <source/>
         Others
         <sourcetype>
          1
         </sourcetype>
        </data>
       </root>
    

    Attachment:

    System built-in field code mapping table.xlsx

    Push interview info

    Pushing interview info is currently triggered in Moka by clicking the ‘confirm’ button in adding interview webpage

    > Data example:

    {
      "id":"f353e5ce-17e0-4783-bee4-4a6b734b20fe",
      "event":"createInterviewsInfo",
      "triggeredAt":1505296287,
      "data":{
        "applicationIds":[
          200006263
        ],
        "interviewType":3,
        "createTime":1597391796747,
        "creator":{
          "id":"200000217",
          "name":"张武杰",
          "email":"z@mokahr.com",
          "phone":"17610230001"
        },
        "interviews":[
          {
            "event_id":"12345612",
            "applicationIds":[
              200006263
            ],
            "roomId":1,
            "roomName":"Meeting room A",
            "address":{
              "id":1524,
              "country":"中国",
              "cityId":310109,
              "address":"XxxCityxx县xx小District"
            },
            "startTime":1597392000000,
            "endTime":1597393800000,
            "interviewerIds":[
              200000217
            ],
            "interviewee":[
              {
                "id":200006257,
                "name":"zwj5",
                "email":"z@mokahr.com",
                "phone":"17610230000",
                "jobId":"6c465f4b-e791-423f-a053-5e76e04e5f29",
                "jobTitle":"java"
              }
            ],
            "interviewer":[
              {
                "id":200000217,
                "name":"张武杰",
                "email":"z@mokahr.com",
                "phone":"17610230000"
              }
            ]
          }
        ]
      }
    }
    
    

    Request 'data' structure, as follows:

    Field Type Description
    id array Unique id
    event array Event type
    createInterviewsInfo:information of creating interview
    updateInterviewsInfo:information of updating interview
    deleteInterviewsInfo:information of deleting interview
    triggeredAt array Trigger time
    data object Interview info
    data.applicationIds array Application id
    data.interviewType integer Interview type. 1:On-site interview 2:Group interview 3:Phone interview 4:Video interview 5:Sequential interview
    data.createTime integer Timestamp
    data.creator object Interview creator info
    data.creator.id string Interview creator id
    data.creator.name string Interview creator name
    data.creator.email string Interview creator email
    data.creator.phone string Interview creator phone
    data.interviews array Interview info
    data.interviews[].event_id array Interview unique id
    data.interviews[].applicationIds array Application id
    data.interviews[].roundId integer Round id
    data.interviews[].roundName string Round name
    data.interviews[].roomId integer Interview room id
    data.interviews[].roomName string Interview room name
    data.interviews[].address object Interview location info
    data.interviews[].address.id integer Interview location id
    data.interviews[].address.country string Interview location - country
    data.interviews[].address.cityId integer Interview location - City id
    data.interviews[].address.address string Interview location - full address
    data.interviews[].startTime integer Interview start time (timestamp)
    data.interviews[].endTime integer Interview end time (timestamp)
    data.interviews[].interviewerIds array Interviewer id
    data.interviews[].interviewee array Candidate info
    data.interviews[].interviewee[].id integer Candidate id
    data.interviews[].interviewee[].name string Candidate name
    data.interviews[].interviewee[].email string Candidate email
    data.interviews[].interviewee[].phone string Candidate phone
    data.interviews[].interviewee[].jobId string Candidate interview position id
    data.interviews[].interviewee[].jobTitle string Candidate interview job title
    data.interviews[].interviewee[].intervieweeUrl string Invitation link for Candidate
    data.interviews[].interviewer array Interviewer info
    data.interviews[].interviewer[].id integer Interviewer id
    data.interviews[].interviewer[].name string Interviewer name
    data.interviews[].interviewer[].email string Interviewer email
    data.interviews[].interviewer[].phone string Interviewer phone
    data.interviews[].interviewer[].interviewerUrl string Invitation link for interviewer

    Response body in JSON, as follows

    Field Type Description
    code Integer Response code,0:Success, not 0 represents failure
    msg String Response info
    data Object Respond data

    Public API

    Upload attachment

    Upload attachment interface

    Request example

    $  https://api.mokahr.com/api-platform/v1/file/upload \
       -u 'your_api_key:' \
       -X POST \
       -H 'Content-Type: multipart/form-data' \
       -F 'upload_file=@/path/to/uploads/upload_file.txt'
    

    > Response example

    {
      "data": {
        "key": "xxx"
      },
      "code": 200,
      "msg": ""
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/file/upload

    Request body parameter(multipart/form-data)

    Field Required Type Description
    upload_file Yes file Upload file

    Response body in JSON, as follows

    Field Type Description
    code string 200:Success


    not 200 represents error msg | string | Interface return value illustration data | Object | Respond data data.key | String | Unique key

    Obtain switch status

    Obtain switch status interface

    Request example

    $  https://api.mokahr.com/api-platform/v1/public/switchStatus \
       -u 'your_api_key:' \
      -u 'your-api-key:' \
      -X POST \
      -H 'Content-Type: application/json' \
      -d '{
      "type": "",
      "belongOrgId": "",
      "hireMode": 0
    }'
    

    Response example

    {
      "data": {
            "belongOrgId": "vipshophr-test",
            "content": "false",
            "hireMode": 0,
            "orgId": "vipshophr-test",
            "type": "send_offer_force_cc",
            "version": "1.0"
        },
      "code": 0,
      "msg": ""
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/public/switchStatus

    Request body parameter

    Field Required Type Description
    type yes string config type Currently, only send is supported_ Offer_ Force_ Cc
    belongOrgId no string The subsidiary ID must be those changes_ Dept_ Company ID with id=0; If not transmitted, the default is to use orgId
    hireMode no integer Recruitment mode (social recruitment 1, school recruitment 2)

    Response body in JSON, as follows

    Field Type Description
    code string 0:Success not 0 represents error
    msg string Interface return value illustration
    data Object Respond data
    data.type String Type of query
    data.content String Return to content
    data.belongOrgId String The subsidiary ID must be those changes_ Dept_ Company ID with id=0; If not transmitted, the default is to use orgId
    data.hireMode String Recruitment mode (social recruitment 1, school recruitment 2)
    data.orgId String orgid

    Career website API

    This API is mainly used to obtain job information on the career website, and to apply to a job.

    Get website list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/website/list \
       -X GET
    

    > Response example

    {
        "code": 200,
        "msg": "success",
        "data": [
            {
                "id": 29189,
                "name": "系统默认社会招聘门户",
                "type": "social",
                "creator": {
                    "email": "系统"
                }
            },
            {
                "id": 29190,
                "name": "系统默认校园招聘门户",
                "type": "campus",
                "creator": {
                    "email": "系统"
                }
            },
            {
                "id": 29191,
                "name": "内部推荐",
                "type": "recommend",
                "creator": {
                    "email": "系统"
                }
            }
        ]
    }
    

    Obtain a list of all career website information created by the company in the career website module

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/website/list

    Request parameterNone

    Response body in JSON

    Field Type Description
    code string 200:Success
    not 200 represents error
    msg string Interface return value illustration
    data[].id string Website id
    data[].name string Website name
    data[].type string Website type
    Optional values are:
    camp:Campus recruitment
    social:experienced hires
    recommend:Employee referral (by default, it does not distinguish between experienced hires and campus recruitment)
    recommend_campus:Employee referral in campus recruitment
    recommend_social:Employee referral in experienced hires
    data[].creator object Creator info
    data[].creator.id number The user id of creator in Moka
    data[].creator.email string Creator email

    Get position list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/jobs/moka\?mode\=social \
       -X GET
    

    > Response example

    {
       "total": 10000,
      "jobs": [
       {
        "id": "1234",
        "title": "网页设计师",
        "status": "open",
        "description": "
       <div>
        <b>
         我们Yes谁
        </b>
        <div>
         ",
        "minSalary": 1000,
        "maxSalary": 9000,
        "minExperience": 3,
        "maxExperience": 5,
        "number": 10,
        "commitment": " Full-time",
        "education": "Bachelor degree",
        "closedAt": "2017-10-01T22:00:00.000Z",
        "openedAt": "2017-09-01T21:00:00.000Z",
        "prior": 1,
        "hireMode": 1,
        "mjCode": "MJ001",
        "finishedAt": "2019-08-23T16:00:00.000Z",
        "department": {
            "id": 1,
            "name": "技术部"
        },
        "locations": [
            {
                "id": 1,
                "province": "广东",
                "city": "深圳City",
                "area": "福田District",
                "country": "中国",
                "address": "车公庙泰然大厦C座22楼"
            }
        ],
        "zhineng": {
            "id": 1,
            "name": "技术类"
        },
        "customFields": [
            {
                "id": 1,
                "name": "Salary范围",
                "value": "100-200",
                "type": "string_info"
            }
        ]
        }
      ]
    }
    

    Get position list in career website

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/jobs/{orgId}

    Request URL parameter

    Field Required Type Description
    orgId Yes string The unique id corresponding to each enterprise customer

    Request query parameter

    Field Required Type Description
    mode Yes string Recruitment mode
    Optional values are:
    social:experienced hires
    campus:Campus recruitment
    keyword No string Search keyword
    limit No string Number of entries per page for pagination, default 30
    offset No string The offset used for paging, the indicated index starts from 0
    locationIds No array The address id returned by the address list interface, such as [1,2,3]
    See job address for detailed parameters
    zhinengId No number The address id returned by the function list interface
    See job function for detailedparameters
    siteId No number Website id
    commitment No number Employment type
    Optional values are:
    1: Full-time
    2: Part-time
    3: Internship
    4:Others
    updatedFromAt No string The start time of job screening by update time, such as 2020-06-01
    updatedEndAt No string The end time of job screening by update time, such as 2020-07-01
    departmentCodes No array Department code list of the current position
    status No string Position status
    Optional values are:
    open:open
    closed:Close
    pause:Pause

    Response body in JSON

    Field Type Description
    total integer Total positions
    jobs[] array Position list
    jobs[].id string Position id
    jobs[].title string Job title
    jobs[].status string Position status
    Optional values are:
    open:open
    closed:Close
    pause:Pause
    jobs[].description string Employment description
    jobs[].mjCode string Position No.
    jobs[].minSalary integer Salary floor, unit: thousand (K)
    jobs[].maxSalary integer Salary ceiling, unit: thousand (K)
    jobs[].minExperience integer Minimum working years
    jobs[].maxExperience integer Maximum working years
    jobs[].number integer No.of vacancy
    jobs[].commitment string Employment type
    Optional values are:
    全职
    兼职
    实习
    其他
    jobs[].education string Education requirement
    jobs[].closedAt string Position close time. Date format is: ISO8601
    jobs[].openedAt string Start recruitment time. Date format is: ISO8601
    jobs[].updatedAt string Position update time. Date format is: ISO8601
    jobs[].prior integer Whether in urgent hiring,1为Urgent hiring
    jobs[].hireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    jobs[].finishedAt string Recruitment goal finish time
    jobs[].isRecommendation boolean Whether it is a referral position
    jobs[].department object Information about the department where the position is located
    jobs[].department.id integer Department id
    jobs[].department.name string Department name
    jobs[].locations array Workplace
    jobs[].locations[].id integer Address id
    jobs[].locations[].province string Province
    jobs[].locations[].city string City
    jobs[].locations[].area string District
    jobs[].locations[].country string Country
    jobs[].locations[].address string Full address
    jobs[].zhineng object Job function info
    jobs[].zhineng.id integer Job function id
    jobs[].zhineng.name string Job title
    jobs[].customFields array Job title custom fields list
    jobs[].customFields[].id integer Custom field id
    jobs[].customFields[].name string Custom field name
    jobs[].customFields[].type string Custom field type
    Optional value:
    string_info
    bool_info
    jobs[].customFields[].value string The value of the custom field
    jobs[].jobManager object Recruiter (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of the person in charge of the official website position interface)
    jobs[].jobManager.name string Recruiter name
    jobs[].jobManager.email string Position leader email
    jobs[].jobManager.phone string Recruiter phone
    jobs[].jobManager.employee_id string Position leader phone employee No.
    jobs[].jobHrAssistant object[] Position assistant (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of the person in charge of the official website position interface)
    jobs[].jobHrAssistant[].name string Position assistant name
    jobs[].jobHrAssistant[].email string Position assistant email
    jobs[].jobHrAssistant[].phone string Position assistant phone
    jobs[].jobHrAssistant[].employee_id string Position assistant employee No.
    jobs[].jobHiringManager object[] Hiring manager (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of the person in charge of the official website position interface)
    jobs[].jobHiringManager[].name string Hiring manager name
    jobs[].jobHiringManager[].email string Hiring manager email
    jobs[].jobHiringManager[].phone string Hiring manager phone
    jobs[].jobHiringManager[].employee_id string Hiring manager employee No.
    jobs[].jobInterviewer object[] Interviewer (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of the person in charge of the official website position interface)
    jobs[].jobInterviewer[].name string Interviewer name
    jobs[].jobInterviewer[].email string Interviewer email
    jobs[].jobInterviewer[].phone string Interviewer phone
    jobs[].jobInterviewer[].employee_id string Interviewer employee No.

    Q&A

    1、Regarding whether the closed recruitment positions are displayed: if the position is closed, if you do not check to cancel the display on the career website, it will also be displayed on the official website, and closedAt is the closing time.
    image.png 2、Whether to support deleting positions or displaying deleted positions: No support, it will be completely gone once deleted. If there is candidate data in the recruitment process under this position, it cannot be deleted in the system.

    Get a position info

    Request example

    curl --location --request GET
     'https://api-staging-3.mokahr.com/api-platform/v1/jobs/orgid-test/b19c75f0-170'
    

    > Response example

    {
      "id": "1234",
      "title": "网页设计师",
      "status": "open",
      "description": "
         <div>
          <b>
           我们Yes谁
          </b>
          <div>
           ",
      "minSalary": 1000,
      "maxSalary": 9000,
      "minExperience": 3,
      "maxExperience": 5,
      "number": 10,
      "commitment": " Full-time",
      "education": "Bachelor degree",
      "closedAt": "2017-10-01T22:00:00.000Z",
      "openedAt": "2017-09-01T21:00:00.000Z",
      "updatedAt": "2017-09-01T21:00:00.000Z",
      "hireMode": 1,
      "finishedAt": "2019-08-23T16:00:00.000Z",
      "department": {
          "id": 1,
          "name": "技术部"
      },
      "locations": [
          {
              "id": 1,
              "country": "中国",
              "address": "北京City海淀District海淀西大街"
          }
      ],
      "zhineng": {
          "id": 1,
          "name": "技术类"
      },
      "customFields": [
          {
              "id": 1,
              "name": "Salary范围",
              "value": "100-200",
              "type": "string_info"
          }
      ]
    }
    

    Get all info about a position.

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/jobs/{orgId}/{jobId}

    Request Path parameter

    Field Required Type Description
    orgId Yes string The client unique id of each company
    jobId Yes string Position id

    Response

    Field Type Description
    id string Position id
    title string Job title
    status string Position status
    Optional values are:
    open:open
    closed:Close
    pause:Pause
    description string Employment description
    mjCode string Position No.
    minSalary integer Salary floor, unit: thousand (K)
    maxSalary integer Salary ceiling, unit: thousand (K)
    minExperience integer Minimum working years
    maxExperience integer Maximum working years
    number integer No.of vacancy
    commitment string Employment type
    Optional values are:
    Full-time
    Part-time
    Internship
    Others
    education string Education requirement
    closedAt string Position close time. Date format is: ISO8601
    openedAt string Start recruitment time. Date format is: ISO8601
    updatedAt string Position update time. Date format is: ISO8601
    hireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    finishedAt string Recruitment goal finish time
    isRecommendation boolean Whether it is a referral position
    department object Information about the department where the position is located
    department.id integer Department id
    department.name string Department name
    locations array Workplace
    locations[].id integer Address id
    locations[].province string Province
    locations[].city string City
    locations[].area string District
    locations[].country string Country
    locations[].address string Full address
    zhineng object Job function info
    zhineng.id integer Job function id
    zhineng.name string Job title
    customFields array Job title custom fields list
    customFields[].id integer Custom field id
    customFields[].name string Custom field name
    customFields[].type string Custom field type
    Optional values are:
    string_info
    bool_info
    customFields[].value string The value of the custom field
    jobManager object Recruiter (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of the person in charge of the official website position interface)
    jobManager.name string Recruiter name
    jobManager.email string Position leader email
    jobManager.phone string Recruiter phone
    jobManager.employee_id string Position leader phone employee No.
    jobHrAssistant object[] Position assistant (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of the person in charge of the official website position interface)
    jobHrAssistant[].name string Position assistant name
    jobHrAssistant[].email string Position assistant email
    jobHrAssistant[].phone string Position assistant phone
    jobHrAssistant[].employee_id string Position assistant employee No.
    jobHiringManager object[] Hiring manager (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of the person in charge of the official website position interface)
    jobHiringManager[].name string Hiring manager name
    jobHiringManager[].email string Hiring manager email
    jobHiringManager[].phone string Hiring manager phone
    jobHiringManager[].employee_id string Hiring manager employee No.
    jobInterviewer object[] Interviewer (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of the person in charge of the official website position interface)
    jobInterviewer[].name string Interviewer name
    jobInterviewer[].email string Interviewer email
    jobInterviewer[].phone string Interviewer phone
    jobInterviewer[].employee_id string Interviewer employee No.

    ## Apply a position > Request example(json)

    $ curl https://api.mokahr.com/api-platform/v1/jobs/moka/1234/apply \
      -u 'your-api-key:' \
      -X POST \
      -H 'Content-Type: application/json' \
      -d '
      {
        "basicInfo":
      {
          "name": "张三",
          "age": 22,
          "email": "zhangsan@mokahr.com",
          "gender": "Male",
          "phone": "18612345678",
          "lastCompany": "阿里巴巴",
          "lastSpeciality": "计算机",
          "academicDegree": "Bachelor degree"
      },
      "educationInfo":
      [
         {
         "school": "北京大学",
         "startDate": "2014-09",
         "endDate": "2017-06",
         "speciality": "软件工程",
         "academicDegree": "Bachelor degree"
          }
      ],
      "experienceInfo":
      [
          {
              "company": "百度",
              "startDate": "2014-09",
              "endDate": "2017-06",
              "title": "初级工程师",
              "summary": "负责产品功能实现"
          }
      ],
      "languageInfo": [
        {
          "language": "213",
          "level": "一般",
          "listenAndSpeak": "良好",
            "readAndWrite": "熟练"
        }
      ],
      "projectInfo":
      [
        {
          "projectName": "项目1",
          "startDate": "2017-01",
          "endDate": "2017-11",
          "projectDescription": "Project function description",
          "title": "后端工程师",
          "responsibilities": "项目职责"
        }
      ],
      "practiceInfo":
      [
        {
          "company": "腾讯",
          "title": " Internship工程师",
          "startDate": "2017-01",
          "endDate": "2017-11",
          "summary": "负责简单的功能实现"
        }
      ],
      "jobIntention": {
        "aimSalary": "7000-13000元/月",
        "forwardLocation": "北京"
      },
      "selfDescription": {
        "personal": "人经历丰富,在校担任过部长,主持人以及新生教官. "
      },
      "customFields": [
        {
            "id": 1,
            "value": "aaa"
            "index": 0,
        },
        {
            "id": 2,
            "value": "bbb"
        }
      ],
      "recommender": {
        "email": "zhangsan@mokahr.com",
        "name": "张三",
        "phone": "18612345678",
        "employeeId": "1"
      }
      }'
    

    > Request example(multipart/form-data)

    $ curl https://api.mokahr.com/api-platform/v1/jobs/moka/1234/apply \
       -u 'your-api-key:' \
       -X POST \
       -H 'Content-Type: multipart/form-data' \
       -F 'basicInfo={"name": "张三", "age": 20, "gender": "Male", "phone": "18612345678"}' \
       -F 'educationInfo=[{"school": "北京大学", "startDate": "2014-01", "endDate": "2017-01", "speciality": "软件工程"}]' \
       -F 'experienceInfo=[{"company": "百度", "startDate": "2017-01", "endDate": "2017-01", "title": "工程师"}]' \
       -F 'projectInfo=[{"projectName": "项目1", "startDate":"2017-01","endDate":"2017-11","title":"工程师"}]' \
       -F 'practiceInfo=[{"company":"腾讯", "title":" Internship工程师", "startDate":"2017-01", "endDate":"2017-11"}]' \
       -F 'jobIntention={"aimSalary": "7000-13000/月", forwardLocation: "北京"}' \
       -F 'selfDescription={personal: "人经历丰富,在校担任过部长,主持人以及新生教官. "}' \
       -F 'customFields=[{"id": "1", "value": "aaa"}, {"id": "2", "value": "bbb"}]' \
       -F 'recommender={"email": "zhangsan@mokahr.com","name": "张三","phone":"18612345678","employeeId":"1"}' \
       -F 'resume=@/path/to/resume/张三.pdf' \
       -F 'attachments=@/path/to/attachments/attach1.txt' \
       -F 'attachments=@/path/to/attachments/attach2.txt'
    

    Return information for new applications This API supports two request formats, namely the multipart/form-data method and the json method. If you need to upload your resume or attachment files, you must use the multipart/form-data method. Resume files uploaded using multipart/form-data will be processed by our resume parsing service. This API needs to verify the identity information. For the verification method, please refer to Request Verification/Auth section. Note: Whether this module field is required depends on the field property settings in the system

    > Response example(Part of the fields)

    {
      "id": 1,
      "name": "张三",
      "age": 20,
      "gender": "Male",
      "educationInfo":
      [
         {
         "school": "北京大学",
         "startDate": "2014-09",
         "endDate": "2017-06",
         "speciality": "软件工程",
         "academicDegree": "Bachelor degree"
          }
      ],
      "experienceInfo":
      [
          {
              "company": "百度",
              "startDate": "2014-09",
              "endDate": "2017-06",
              "title": "初级工程师",
              "summary": "负责产品功能实现"
          }
      ],
      "projectInfo":
      [
        {
          "projectName": "项目1",
          "startDate": "2017-01",
          "endDate": "2017-11",
          "projectDescription": "Project function description",
          "title": "后端工程师",
          "responsibilities": "项目职责"
        }
      ]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/jobs/{orgId}/{jobId}/apply

    Request URL parameter

    Field Required Type Description
    orgId Yes string The client unique id of each company
    jobId Yes string Position id

    Request query parameter

    Field Required Type Description
    isRecommendation No integer Whether it is a referral application
    Optional values are:
    1:Referral application
    不传参:not referral application
    When isRecommendation is passed in as 1, the recommender field is mandatory in the body
    isCheckProtect No integer Whether to verify the protection period
    Optional values are:
    1:and isRecommendation=1, means to verify the protection period
    `不传参:not to verify the protection period
    recommendationType No integer Introverted official website needs to be used together after splitting
    Optional values are:1:Employee referral of experienced hires
    2:Referral in campus recruitment
    siteId No integer Is it the designated official website channel? If not, it is the system’s default official website. If isRecommendation is passed in, this parameter is invalid
    acquisitionMode No integer Apply method
    Optional values are:
    0:Unknown
    2:Import background
    5:Talent recommendation
    8:Direct recommend
    9:Direct apply
    websiteSourceId No integer Source effect, takes effect when siteId is valid
    ownerEmail No integer Owner email of the candidate
    valid values include Super Administrator, Administrator, and the Assistant and Leader of the position.

    Request body(json)

    Field Required Type Description
    basicInfo Yes string Basic information, at least one attribute
    basicInfo.name No string Candidate name
    basicInfo.age No integer Candidate age
    basicInfo.gender No string Candidate gender
    Optional value

    basicInfo.email No string Candidate email
    basicInfo.phone No string Candidate phone
    basicInfo.lastCompany No string Recent company
    basicInfo.lastSpeciality No string Recent graduate major
    basicInfo.academicDegree No string Highest education
    basicInfo.political No string Political status
    educationInfo No array Education experience
    educationInfo[].school No string School
    educationInfo[].startDate No string Start time
    educationInfo[].endDate No string End time
    educationInfo[].speciality No string Major
    educationInfo[].academicDegree No string Education
    experienceInfo No array Work experience
    experienceInfo[].company No string Company name
    experienceInfo[].startDate No string Start time
    experienceInfo[].endDate No string End time
    experienceInfo[].title No string position
    experienceInfo[].summary No string Job responsibility
    languageInfo No array Language skill
    languageInfo[].language No string Language type
    languageInfo[].level No string Proficiency
    languageInfo[].listenAndSpeak No string Listening and speaking
    languageInfo[].readAndWrite No string Reading and writing
    projectInfo No array Project experience
    projectInfo[].projectName No string Project name
    projectInfo[].startDate No string Start time
    projectInfo[].endDate No string End time
    projectInfo[].title No string Job title and duty in project
    projectInfo[].projectDescription No string Project description
    projectInfo[].responsibilities No string Responsibility in project
    practiceInfo No array Intern experience
    practiceInfo[].company No string Company name
    practiceInfo[].title No string Job title
    practiceInfo[].startDate No string Start time
    practiceInfo[].endDate No string End time
    practiceInfo[].summary No string Job responsibility
    jobIntention No object Preferred job
    jobIntention.aimSalary No string Expected salary, unit: thousand (K)
    jobIntention.forwardLocation No string Preferred city
    selfDescription No object Self- description
    selfDescription.personal No object Self-description
    customFields[].id No integer Custom field id
    customFields[].value No string Custom field value
    customFields[].index No number If the current module data is an array and contains custom fields, the value is required and consistent with the array subscript (Note: custom module data is supported)
    recommender.name No string Referrer name
    recommender.email No string Referrer email
    recommender.phone No string Referrer phone
    recommender.employeeId No string Employee No. of referrer

    Request body(multipart/form-data)

    Field Required Type Description
    basicInfo Yes string String in json format, the fields are the same as basicInfo in json request mode
    educationInfo No string String in json format, the fields are the same as educationInfo in json request mode
    experienceInfo No string String in json format, the fields are the same as experienceInfo in json request mode
    projectInfo No string String in json format, the fields are the same as projectInfo in json request mode
    practiceInfo No string String in json format, the fields are the same as practiceInfo in json request mode
    languageInfo No string String in json format, the fields are the same as languageInfo in json request mode
    jobIntention No string String in json format, the fields are the same as jobIntention in json request mode
    selfDescription No string String in json format, the fields are the same as selfDescription in json request mode
    recommender No string String in json format, the fields are the same as recommender in json request mode
    customFields No string String in json format, the fields are the same as customFields in json request mode
    resume No file Resume file
    attachments No file Attachment files, up to 10 are supported

    Response(Part of the fields)

    Field Type Description
    id integer Application id
    CandidateId integer Candidate id
    orgId integer Tenant id
    stageId integer Stage id
    name name Candidate name
    age age Candidate age
    CandidateId long Candidate id
    gender string Candidate gender
    countryCallingCode string Country calling code
    skill string Skill
    recommendReason string Recommend reason
    educationInfo array Education experience
    educationInfo[].school string School
    educationInfo[].startDate string Start time
    educationInfo[].endDate string End time
    educationInfo[].speciality string Major
    educationInfo[].academicDegree string Education
    experienceInfo array Work experience
    experienceInfo[].company string Company name
    experienceInfo[].startDate string Start time
    experienceInfo[].endDate string End time
    experienceInfo[].title string position
    experienceInfo[].summary string Job responsibility
    projectInfo array Project experience
    projectInfo[].projectName string Project name
    projectInfo[].startDate string Start time
    projectInfo[].endDate string End time
    projectInfo[].title string Job title and duty in project
    projectInfo[].projectDescription string Project function description
    projectInfo[].responsibilities string Responsibility in project
    practiceInfo array Intern experience

    Get application status

    > Request example

    curl --location --request GET 'https://api.mokahr.com/api-platform/v1/applications/33211111' \
    --header 'Authorization: Basic aHRuYlJqcGhyRDhzNQ3dUw6'
    

    > Response example

    {
        "CandidateId": 201170308,
        "stageName": "笔试",
        "status": "in_progress",
        "code": 0,
        "msg": "Success",
        "success": true
    }
    

    Get a application status, including whether to reject, whether he/she is regular employee, whether in process, and the current stage title, etc.

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/applications/{applicationId}

    Request URL parameter

    Field Required Type Description
    applicationId Yes integer Unique id of application

    Response body in JSON

    Field Type Description
    status string Application status
    Optional values are:
    in_progress:In process
    rejected:Rejected

    hired:Regular employee stageName | string | The name of the current stage‘ s stage CandidateId | integer | The unique id of Candidate in Moka code | string | 200:Success
    not 200 represents error msg | string | Interface return value illustration success | string | true:Success
    false: Failure
    Deprecated, please use code to judge the call result instead of business logic

    Get position address list

    > Request example

    curl --location --request GET 'https://api.mokahr.com/api-platform/v1/jobs-groupedby-location/orgid-test?mode=social' \
    --header 'Authorization: Basic aHRuYlJq*********3J6RWNLd3FWR0Q3dUw6'
    

    > Response example

    {
      "jobs": [
        {
          "id": "北京City",
          "label": "北京City",
          "locationRows": [
            {
                "id": 445,
                "cityId": 110000
            },
            {
                "id": 446,
                "cityId": 110105
            }
          ],
          "jobCount": 2
        },
        {
          "id": "上海City",
          "label": "上海City",
          "locationRows": [
            {
              "id": 398,
              "cityId": 310000
            }
          ],
          "jobCount": 1
        },
        {
          "id": "Others",
          "label": "Others",
          "cityId": null,
          "locationRows": [
            {
              "id": 377,
              "cityId": null
            }
          ],
          "jobCount": 6
        },
        {
          "id": "阿尔巴尼亚",
          "label": "阿尔巴尼亚",
          "cityId": null,
          "locationRows": [
            {
              "id": 2061,
              "cityId": null
            }
          ],
          "jobCount": 1
        }
      ]
    }
    

    Get position address list. Note: the id for checking position list interface is the same as the id in locationRows. Take Beijing for example since it has multiple work locations, if you want to check positions in Beijing, should pass locationIds: [445,446] to position interface.

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/jobs-groupedby-location/{orgId}

    Request URL parameter

    Field Required Type Description
    orgId Yes string Organization id

    Query

    Field Required Type Description
    mode Yes string Recruitment mode
    social:experienced hires
    campus:Campus recruitment

    Response

    Response body in JSON

    Field Field type Description
    jobs array
    jobs.id string Province id
    jobs.label string Province
    jobs.locationRows object
    jobs.locationRows.id integer Office location list id
    jobs.locationRows.cityId integer City id
    jobs.labelCityId string City tag id
    jobs.jobCount integer The total positions under this address

    Get a list of job responsibilities

    > Request example

    curl --location --request GET 'https://api.mokahr.com/api-platform/v1/jobs-groupedby-zhineng/orgid-test?mode=social&siteId=33232323' \
    --header 'Authorization: Basic aHRuYlJqcGhyRDhzNWl********FWR0Q3dUw6'
    

    > Response example

    {
      "jobs": [
        {
          "id": 2873,
          "label": "技术类",
          "jobCount": 64
        }
      ]
    }
    

    Get a list of job responsibilities Note:The id in the array can be used to filter the job list interface; using the interface on the right as an example, if you need to query the jobs under the technical category, you need to pass zhinengId:2873 to the job interface

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/jobs-groupedby-zhineng/{orgId}

    Request URL parameter

    Field Required Type Description
    orgId Yes string Organization id

    Query

    Field Required Type Description
    mode No string Recruitment mode
    Optional values are:
    social:experienced hires
    campus:Campus recruitment
    siteId No number Website id

    Response

    Response body in JSON

    Field Type Description
    id integer Job responsibilities id
    label string Job responsibilities‘ name
    parentId integer Parent job responsibilities id
    jobCount integer The number of positions for this level and all lower-level job responsibilities

    Career website job application page configuration (no sign-in required)

    > Request example

           <iframe src="https://app.mokahr.com/apply/test/90#/job/2bc083cf-bf34-45ba-a1a8-d028ed039d2d?pure=1">
           </iframe>
    

    The pure version of the official website application form removes the navigation and other moka elements of the candidate application page, and only includes the application form and channel import resume part, which can be embedded in the self-developed official website through iframe.

    There is a distinction between PC and mobile. Just add query pure=1 to the url of the original normal application page

    Landing page

    Request URL parameter

    Field Required Type Description
    orgId Yes string Organization id
    siteId No integer Multi-official website id after multi-official website is enabled, none can be omitted
    For example, one of the multi-official website links is https://app.mokahr.com/apply/test/56, and the siteId is the last 56. This link can be obtained from the career website link managed by the official website in the system.
    jobId Yes string Position id

    Note Campus recruitment positions need to replace apply in pathname with campus_apply for example:

    Obtain Source Effect Information of Specified Official Website

    > Request example

    $ curl --location --request GET 'https://api.mokahr.com/api-platform/v1/website/website-soure' \
    --header 'Authorization: Basic aHRuYlJqcGhyRDhzNWl********FWR0Q3dUw6'
    --header 'Content-Type: application/json' \
    --data-raw '{
        "siteId":1222
    }'
    

    > Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "total": 560,
            "version": "1.0",
            "websiteSourceInfoDTOList": [
                {
                    "id": 3,
                    "isPreach": true,
                    "name": "Presentation Meeting 1",
                    "shortUrl": "https://app.mokahr.com/su/aaaaa",
                    "version": "1.0"
                },
                {
                    "id": 5,
                    "isPreach": false,
                    "name": "Source Effect of Official Website 1",
                    "shortUrl": "https://app.mokahr.com/su/bbbbb",
                    "version": "1.0"
                }
            ]
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/website/website-soure

    Request body(json)

    Field Required Type Description
    siteId Yes number siteId

    Response body in JSON

    Field Type Description
    code integer code
    message string message
    data object
    data.total number total count
    data.websiteSourceInfoDTOList array Source Effect Information
    data.websiteSourceInfoDTOList[].id number Source Effect Information id
    data.websiteSourceInfoDTOList[].isPreach boolean Whether it is a presentation meeting, true: presentation meeting, false: not a presentation meeting
    data.websiteSourceInfoDTOList[].name string Source Effect Information name
    data.websiteSourceInfoDTOList[].shortUrl string short url

    Company info API

    Get company location list

    Get the info of company location list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/locations \
      -u 'your-api_key:' \
      -X GET
    

    > Response example

    [
      {
        "id": 15,
        "country": "中国",
        "province": "上海City",
        "city": null,
        "area": null,
        "address": "人民广场",
        "map": {
          "locPoint": {
            "lng": 121.487899,
            "lat": 31.249162
          },
          "center": {
            "lng": 121.492498,
            "lat": 31.245087
          }
        }
      }
    ]
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/locations

    Request parameter

    None

    Response body in JSON

    Field Type Description
    id integer Location id
    country string Country
    province string Province
    city string City
    area string Region
    address string Detailed location
    map object Map info
    map.locpoint object Map marker coordinate
    map.locpoint.lng number Map marker longitude, Amap coordinate system
    map.locpoint.lat number Map marker latitude, Amap coordinate system
    map.center object The center coordinate of the map slice
    map.center.lng number Map center longitude, Amap coordinate system
    map.center.lat number Map center latitude, Amap coordinate system

    Add company address(bulk)

    Add company address in bulk Add company address through addressCode
    addressCode exists:skip and error
    addressCode doesn't exist:add
    The department does not support lower-level linkage

    > Request example

    $ curl --location --request POST 'https://api.mokahr.com/api-platform/locations/v2/batch_create_locations' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: ' \
    --data-raw '{
        "locations": [
            {
                "addressCode": "114514",
                "cityId": 110105,
                "address": "测试address",
                "lat": 22.627981,
                "lng": 114.115447
            }
        ]
    }'
    

    > Response example

    {
        "code":0,
        "message":"",
        "data":[{
            "message":"",
            "addressCode":"",
            "addressId":"",
            "succeed":true
        }]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/locations/v2/batch_create_locations

    Request body(json)

    Field Required Type Description
    locations Yes array Company address information
    locations[].addressCode Yes string The unique id of the company address in the external system
    locations[].cityId Yes integer The administrative district code of the area where you are located, see http://www.mokahr.com/docs/api/#district-code for details
    locations[].address No string Full address
    locations[].lat No double Longitude(AutoNavi Maps)
    locations[].lng No double Latitude(AutoNavi Maps)
    locations[].departmentIds[] No array[integer] Department info in Moka system
    The department unique id in Moka
    When both departmentId and departmentCode are passed, departmentId
    When neither departmentId nor departmentCode is passed, it defaults to all departments
    locations[].departmentCodes[] No array[string] Department info of external system

    The department unique id in external system (enable sync-organization)
    When both departmentId and departmentCode are passed, departmentId
    When neither departmentId nor departmentCode is passed, it defaults to all departments

    Response body in JSON

    Field Type Description
    code integer Error code, not 0 represents failure
    message string Error description
    data array
    data[].message string Error description
    data[].addressCode string The unique id of the company address in the external system
    data[].addressId string The unique id of company address in Moka
    data[].succeed boolean whether it is successful
    Optional values are:
    true:Success<br/false: Failure

    Delete company address(bulk)

    Delete company address(bulk)
    Delete company address through addressCode
    addressCode exists:delete
    addressCode doesn't exist:skip and error

    > Request example

    $ curl --location --request POST 'https://api.mokahr.com/api-platform/locations/v2/batch_delete_locations' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: ' \
    --data-raw '{
        "locations": [
            {
                "addressCode": "114514"
            }
        ]
    }'
    

    > Response example

    {
        "code":0,
        "message":"",
        "data":[{
            "message":"",
            "addressCode":"",
            "succeed":true
        }]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/locations/v2/batch_delete_locations

    Request body(json)

    Field Required Type Description
    locations Yes array Company address information
    locations[].addressCode Yes string The unique id of the company address in the external system

    Response body in JSON

    Field Type Description
    code integer Error code, not 0 represents failure
    message string Error description
    data array
    data[].message string Error description
    data[].addressCode string The unique id of the company address in the external system
    data[].succeed boolean whether it is successful
    Optional values are:
    true:Success
    false: Failure

    Update company address(bulk)

    Update company address(bulk)
    Update company address through addressCode
    addressCode exists:update
    addressCode doesn't exist:skip and error
    The department does not support lower-level linkage

    > Request example

    $ curl --location --request POST 'https://api.mokahr.com/api-platform/locations/v2/batch_update_locations' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: ' \
    --data-raw '{
        "locations": [
            {
                "addressCode": "114514",
                "cityId": 110105,
                "address": "测试address",
                "lat": 22.627981,
                "lng": 114.115447
            }
        ]
    }'
    

    > Response example

    {
        "code":0,
        "message":"",
        "data":[{
            "message":"",
            "addressCode":"",
            "addressId":"",
            "succeed":true
        }]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/locations/v2/batch_update_locations

    Request body(json)

    Field Required Type Description
    locations Yes array Company address information
    locations[].addressCode Yes string The unique id of the company address in the external system
    locations[].cityId Yes integer The administrative district code of the area where you are located See http://www.mokahr.com/docs/api/#district-code for details
    locations[].address No string Full address
    locations[].lat No double Longitude(AutoNavi Maps)
    locations[].lng No double Latitude(AutoNavi Maps)
    locations[].departmentIds[] No array[integer] Department info in Moka system
    The department unique id in Moka
    When both departmentId and departmentCode are passed, departmentId
    When neither departmentId nor departmentCode is passed, it defaults to all departments
    locations[].departmentCodes[] No array[string] Department info of external system
    The department unique id in external system (enable sync-organization)
    When both departmentId and departmentCode are passed, departmentId
    When neither departmentId nor departmentCode is passed, it defaults to all departments

    Response body in JSON

    Field Type Description
    code integer Error code, not 0 represents failure
    message string Error description
    data array
    data[].message string Error description
    data[].addressCode string The unique id of the company address in the external system
    data[].succeed boolean whether it is successful
    Optional values are:
    true:Success
    false: Failure

    Get company address(bulk)

    Get company location in bulk
    (1)V1 Title update:“Get company location list” replaced to “Get company address”
    (2)Add “Get company address” V2 interface
    Check the corresponding type of company address through addressType
    Return if there is
    Skip and error if not

    > Request example

    $ curl --location --request POST 'https://api.mokahr.com/api-platform/locations/v2/get_location_list' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: ' \
    --data-raw '{
        "addressType": 0
    }'
    

    > Response example

    {
        "code":0,
        "message":"",
        "data":[{
            "addressId":"",
            "addressCode":"",
            "country":"",
            "province":"",
            "city":"",
            "district":"",
            "address":"",
            "map":{},
            "departments":[
                {
                    "departmentName":"",
                    "departmentId":"",
                    "departmentCode":""
                }
            ]
        }]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/locations/v2/get_location_list

    Request body(json)

    Field Required Type Description
    addressType Yes integer Company address type,Required
    Optional values are:
    0:Company address created synchronously by API
    1:Company address created in the system
    2:All company addresses (API synchronization and system creation)

    Response body in JSON

    Field Type Description
    code integer Error code, not 0 represents failure
    message string Error description
    data array
    data[].addressId string The unique id of company address in Moka
    data[].addressCode string The unique id of the company address in the external system
    Empty means that the address is created in the Moka system
    data[].country string Country
    data[].province string Province
    data[].city string City
    data[].district string Province
    data[].address string Detailed address of company
    data[].map object object
    data[].departments[].departmentName string The department name that related to company address
    data[].departments[].departmentId string The department unique id in Moka
    data[].departments[].departmentCode string The department unique id in external system (enable sync-organization)

    Store API

    Get store list

    Get store list

    > Request example

    $ curl 'https://api.mokahr.com/api-platform/v1/get_stores' \
       -u 'your_api_key:' \
       -X POST \
       -d '{
        "apiCodes": ["111111","22222"],
        "pageNum": 1,
        "pageSize": 20,
        "disabled": 0
      }'
    

    > Request data example:

    {
      "data": [
        {
            "id": 1,
            "name": "门店1通恒大厦",
            "lat": 39.980769,
            "lng": 116.373172,
            "locationId": 5,
            "departmentId": 9,
            "apiCode": "1111",
            "createdAt": "2019-12-03T07:12:36.000Z",
            "disabled": 0,
            "country": "中国",
            "cityId": 110108,
            "address": "通恒大厦",
            "mapJson": "{\"locPoint\":{\"lng\":116.373172,\"lat\":39.980769},\"center\":{\"lng\":116.373172,\"lat\":39.980769},\"zoom\":14}",
            "jobNumber": 0
        },
        {
            "id": 2,
            "name": "门店2翠微",
            "lat": 39.982824,
            "lng": 116.372663,
            "locationId": 6,
            "departmentId": 0,
            "apiCode": "",
            "createdAt": "2019-12-03T07:12:36.000Z",
            "disabled": 0,
            "country": "中国",
            "cityId": 110108,
            "address": "海淀翠微",
            "mapJson": "{\"locPoint\":{\"lng\":116.372663,\"lat\":39.982824},\"center\":{\"lng\":116.370759,\"lat\":39.983045},\"zoom\":16}",
            "jobNumber": 0
        }
      ]
    }
    
    

    HTTP request

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

    Request body parameter

    Field Required Type Description
    apiCodes No Array[string] The store unique code saved by the customer
    pageNum No number Page, default 1
    pageSize No number numbers per page, default 20, maximum 20
    disabled No number The enable status of store
    Optional values are:
    0:Enabled atore
    1: Disabled store

    Response data in JSON

    data is an array of stores, sorted by store creation time from early to late. The data structure for each of these is:

    Field Type Description
    data array
    id number Store id iis the unique code of store in Moka
    name string Store name
    lat number Store latitude, Amap coordinate system
    lng number Store longitude, Amap coordinate system
    locationId number Location id
    departmentId number The department id that related to store
    cityId string The administrative area code of the store, Details on http://www.mokahr.com/docs/api/#district-code
    apiCode string The store unique id saved by client
    address string Store address
    disabled number The enable status of store
    Optional values are:
    0:Enabled store
    1: Disabled store
    createdAt string The store created time in ISO8601 format
    jobNumber number Positions under this store
    mapJson json Deprecated

    Note that if the field is empty, the content will be an empty string

    Sync-store

    The Moka system will synchronize the stores in the current system according to the information of each store in the requested list (Add, Update, Disable, Enable).

    HTTP request

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

    > Request example

    $ curl 'https://api.mokahr.com/api-platform/v1/stores' \
       -u 'your_api_key:' \
       -X PUT \
       -d '[
      {
        "apiCode": "111111",
        "name": "北京海淀District门店",
        "lat": 39.985043,
        "lng": 116.293914,
        "address": "北京海淀District花园路x号",
        "cityId": 110108,
        "departmentName": "北京海淀District门店组织"
      },
      {
        "apiCode": "222222",
        "name": "北京朝阳District门店",
        "lat": 22.627981,
        "lng": 114.115447,
        "address": "北京City朝阳District麦子店街道枣营北里社District",
        "cityId": 110105,
        "departmentName": "北京朝阳District门店组织"
      },
      ...
    ]'
    

    > OperationSuccess:

    {
      "success": true,
      "result": {
        "new": 20,
        "update": 10,
        "disabled": 0
      }
    }
    

    > Operation Failure:

    {
      "success": false,
      "errorMessage": "Error info ",
      "errors": [
        {}
      ]
    }
    

    > unopened store error

    {
      "success": false,
      "errorMessage": "未开启门店功能"
    }
    

    > validationError:

    {
      "success": false,
      "errorMessage": "Validation Failed",
      "errors": [
        {
          "field": "apiCode",
          "code": "duplicated",
          "details": "123456"
        },
        {
          "field": "name",
          "code": "duplicated",
          "details": "北京朝阳District门店1"
        },
        {
          "field": "cityId",
          "code": "invalid",
          "details": {
            "cityId": "999999",
            "apiCode": "123456",
            "name": "北京朝阳District门店1",
            "lat": 22.627981,
            "lng": 114.115447,
            "address": "北京朝阳District",
            "departmentName": "朝阳Department"
          },
          "document_url": "http://www.mokahr.com/docs/api/#stores"
        },
        {
          "field": "name,cityId",
          "code": "missing_field",
          "details": {
            "apiCode": "111111",
            "lat": 24.775118681,
            "lng": "115.49405445",
            "address": "海淀District花园路4号"
          }
        }
      ]
    }
    

    Request body parameter

    Field Required Type Description
    apiCode Yes string The unique id of the store
    name Yes string Store name
    address Yes string Store address (including addresses in provinces and cities)
    cityId No number The administrative area code of the store,Details on http://www.mokahr.com/docs/api/#district-code
    lat No number Store coordinates latitude (Gaode map system)
    lng No number Store coordinates longitude (Gaode map system)
    relationDepartmentType No boolean Optional values are:
    true:Match the department according to the department code
    false:Match departments by department name
    departmentCode No string Department code
    (If relationDepartmentType is true, the departmentCode field will be used to match the department)
    departmentName No string Department name
    (RelationDepartmentType is not passed, or relationDepartmentType is false, and then departmentName is passed at the same time, use departmentName to match)
    disabled No number The enable status of store
    Optional values are:
    0:Enabled store
    1:Disabled store

    处理

    We will verify the data field, and if the verification fails, a specific error message will be returned:

    Verifying field:['name', 'apiCode', 'cityId', 'address']

    Possible error code:

    code Description
    duplicated Duplicated info
    invalid Incorrect data, for example, uploading an unsupported city id
    missing_field The field is missing, or the field value is null

    Adjust store permission

    > Request example

    $ curl 'https://api.mokahr.com/api-platform/v1/store/changeJobManagerOrAssistantByStore' \
       -u 'your_api_key:' \
       -X POST \
       -d '{
               "operation" : "add",
               "dataType" : 1,
               "userData" : "jinhaiyang@mokahr.com",
               "managerType" : 30,
               "apiCode":"10086",
               "orgId" : "livingsimple"
       }'
    

    > The successful example of response data:

    {
        "code": 200,
        "msg": "success",
        "data": {}
    }
    

    > The fail example of response data:

    {
        "code": 12714002,
        "msg": "Error info :Unsupported IC type"
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/store/changeJobManagerOrAssistantByStore

    Request body parameter

    Field Required Type Description
    orgId No string Company id
    operation Yes string Operation
    add:Add a user permission to the corresponding position in that store
    remove:Remove a user permission to the corresponding position in that store
    dataType Yes number Type of userData
    1:Email
    2: Phone number
    3:Employee No.
    userData Yes string User marker, email/ phone number/ Employee No.
    managerType No number !!!Note: at least one of managerType and additionalRoles is required
    IC type
    30:Represents the recruiter under the store
    25:Represents the position assistant under the store additionalRoles
    apiCode Yes string The unique id of the store

    Response data in JSON

    code为200ResponseSuccess,Other Failure

    codeError code, as follows:

    code Description
    12714000 Unsupported operation type
    12714001 Unsupported user data type
    12714002 Unsupported IC type
    12714003 Duplicated user information, exist multi-users
    12714004 Duplicated API code, exist multi-stores
    12714005 User role permissions cannot be lower than HR
    12714006 The store not found
    12714007 Please open sync-store
    12714008 The user not found
    12714009 No position can be operated in the current store
    12714010 Unable to add the person in charge of the position as an assistant
    12714011 The user has been banned
    12714012 Unable to remove the permission of person in charge
    12714013 Unable to support conglomerate client
    12714014 Unsupported additional role types: entry only supports job interviewers and hiring managers
    12714015 There are more than two additional role types: there are at most two types of input parameters
    12714016 The additional role type is duplicated, please check the additionalRoles parameter: the input parameter only supports job interviewers, and the hiring manager should not be repeated
    12714017 The user role needs to be interviewer and above:When setting the user as an interviewer or hiring manager, the user needs to be an interviewer and above
    12714018 No role specified: Select at least one of the person in charge role type and additional role type

    Organization structure API

    Organization structure API

    Full synchronization of organization structure

    The Moka system will synchronize the department in the current system according to the requested list (add, update, and delete).
    Synchronization takes department_code as the primary key, and compares it with department_code in the system:
    1、The current system does not have it, but it does exist during synchronization: add a department
    2、The current system has it, and it exists during synchronization: Update the existing department information. For example, if there is during synchronization, the current system department status is marked as deleted, and after Update, the status changes to normal.
    3、If it exists in the current system, but not exists during synchronization: the department marking has been deleted, and you need to manually enter the Moka system to merge the department into others department for deletion.

    HTTP request

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

    > Request example

    $ curl 'https://api.mokahr.com/api-platform/v2/departments' \
       -u 'your_api-keys:' \
       -X PUT \
       -d '{
           "departments": [
            { "departmentCode": "ididid1", "name": "namenamename1", "parentCode": "ididid1", "sequence": 0 },
            { "departmentCode": "ididid2", "name": "namenamename2", "parentCode": "ididid2" },
            { "departmentCode": "ididid2", "name": "namenamename2", "parentCode": "ididid2", "type": 2 },
            { "departmentCode": "ididid3", "name": "namenamename3", "parentCode": ”0“}
        ]
      }'
    

    > OperationSuccess

    {
      "code": 0,
      "msg": "success",
      "data":{
        "result": {
            "new": 0,
            "delete": 0,
            "update": 0
        }
      }
    }
    

    > Operation Failure

    {
      "code": -1,
      "msg": "false",
    }
    

    Request body parameter

    Field Required Type Description
    departments Yes array Department data
    departments[].name Yes string Department name
    departments[].departmentCode Yes string Department id in client system
    departments[].parentCode Yes string The unique id of parent department, such as pass "0" to tier-1 department
    departments[].type No number Department type:
    1: General department (default)
    2: Store department
    departments[].sequence No number Specify the department sorting, support 0 to 10000 with two decimal places, if it is empty, it will be sorted at the end by default. Sort from small to large, creation time from first to last

    Response json field

    Field Type Description
    code number 200: Success. Others: Error
    msg string The error reason of operation failed

    Possible error info

    errorMessage Description
    Duplicated department id There is repeated department_code in request list
    Duplicated department There is same parent department and name in request list
    Parent department not found The department's parent department not found in the list
    The department's parent department cannot directly (indirectly) be itself The department's parent department (the parent department of...) cannot be itself
    ...

    Add organization structure

    Add organization structure Note: Incremental synchronization of organizational structure must use POST request. If PUT request is used, it is full synchronization. Departments not provided in the request will be marked as deleted.

    HTTP request

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

    >Request example

    $ curl 'https://api.mokahr.com/api-platform/v2/departments/sync/incremental' \
       -u 'your_api-keys:' \
       -X POST \
       -d '{
           "departments": [
            { "departmentCode": "ididid1", "name": "namenamename1", "parentCode": "ididid1", "sequence": 0 },
            { "departmentCode": "ididid2", "name": "namenamename2", "parentCode": "ididid2" },
            { "departmentCode": "ididid2", "name": "namenamename2", "parentCode": "ididid2", "type": 2 },
            { "departmentCode": "ididid3", "name": "namenamename3", "parentCode": ”0“}
        ]
      }'
    

    >OperationSuccess

    {
      "code": 0,
      "msg": "success",
    }
    

    >Operation Failure

    {
      "code": -1,
      "msg": "false",
    }
    

    Request body parameter

    Field Required Type Description
    departments Yes array Department data
    departments[].name Yes string Department name
    departments[].departmentCode Yes string Department id in client system
    departments[].parentCode Yes string The unique id of parent department, such as pass "0" to tier-1 department
    departments[].type No number Department type:
    1 : General department (default)
    2 :Store department
    departments[].sequence No number Specify the department sorting, support 0 to 10000 with two decimal places, if it is empty, it will be sorted at the end by default. Sort from small to large, creation time from first to last

    ResponseField

    Field Type Description
    code number 200: Success. Others: Error
    msg string The error reason of operation failed

    Possible error info

    errorMessage Description
    There are currently unprocessed organizational updates, please try again later
    Department name: XXX, the department code of XXX is duplicate Duplicate department data exists in the request list or duplicates exist in the request list for departments that have been synchronized to the system.
    Parent department not found The department's parent department not found in the list
    The department's parent department cannot directly (indirectly) be itself The department's parent department (the parent department of...) cannot be itself
    Department name XXX, the department name of parent code XXX has been existed. Same department name in a certain department
    ...

    Update organization structure

    Update organization structure information for designated departments Note: Use departmentCode as the primary key to update. If you need to update departmentCode, you need to pass in departmentId, and departmentCode will be updated with departmentId as the primary key.

    HTTP request

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

    >Request example

    curl 'https://api.mokahr.com/api-platform/v2/departments' \
    -X POST \
    -u 'your_api_keys' \
    -d '{
            "departments": [
                {
                    "departmentCode": "ididid111123",
                    "name": "namenamename1221",
                    "parentCode": null,
                    "sequence": 0
                },
                {
                    "departmentCode": "ididid211123",
                    "name": "namenamename21_testhema",
                    "parentCode": "ididid31112"
                },
                {
                    "departmentCode": "ididid311123",
                    "name": "namenamename222test_hema",
                    "parentCode": "ididid111123",
                    "type": 2,
                    "departmentId": 387
                },
                {
                    "departmentCode": "ididid3",
                    "name": "namenamename3",
                    "parentCode": ”0“
                }
            ]
        }'
    

    >OperationSuccess

    {
      "code": 0,
      "msg": "success",
    }
    

    >Operation Failure

    {
      "code": -1,
      "msg": "false",
    }
    

    Request body parameter

    Field Required Type Description
    departments Yes array Department data
    departments[].name Yes string Department name
    departments[].departmentCode Yes string Department id in client system
    departments[].parentCode Yes string The unique id of parent department, such as pass "0" to tier-1 department
    departments[].type No number Department type:
    1: General department (default)
    2:Store department
    departments[].departmentId No number The department id in the Moka system. When this parameter exists, the department with this parameter will be matched first.
    departments[].sequence No number Specify the department sorting, support 0 to 10000 with two decimal places, if it is empty, it will be sorted at the end by default. Sort from small to large, creation time from first to last

    Response field in JSON

    Field Type Description
    code number 200: Success. Others: Error
    msg string The error reason of operation failed

    Possible error info

    errorMessage Description
    There are currently unprocessed organizational updates, please try again later
    Department name: XXX, the department code of XXX is duplicate Duplicate department data exists in the request list or duplicates exist in the request list for departments that have been synchronized to the system.
    Parent department not found The department's parent department not found in the list
    The department's parent department cannot directly (indirectly) be itself The department's parent department (the parent department of...) cannot be itself
    Department name XXX, the department name of parent code XXX has been existed. Same department name in a certain department
    ...

    Delete and merge organization structure

    Provide department add delete flag (deleted department is not merged into another department) and delete department (delete department and merge deleted department into other department
    1、Change the status of the department to delete: If the target_department_code is not passed, the department is only marked as "deleted" and actually needs to be deleted in the system;
    2、Delete department: If target_department_code is passed in, the department data will be merged into the department corresponding to target_department_code, and the original department data will be deleted.

    HTTP request

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

    >Request example

    curl 'https://api.mokahr.com/api-platform/v1/departments' \
    -u 'your_api_keys' \
    -X DELETE \
    -d '
    {
      "departments": [
        {
            "department_code": "EN0100321",
            "target_department_code": "EN0100322"
        },
        {
            "department_code": "EN0100323"
        }
    ],
      "email": "test@test.com"
    }'
    

    >OperationSuccess

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

    >Operation Failure

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

    Request body parameter

    Field Required Type Description
    departments[] Yes array Department info
    departments[].department_code Yes string Department id in client system
    departments[].target_department_code No string The unique code of targeted department
    email Yes string Email has been registered in Moka

    Response field in JSON

    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 unprocessed organizational updates, please try again later
    Parent department not found After deleting or merging departments, the parent department of a department cannot be found
    The department's parent department cannot directly (indirectly) be itself The department's parent department (the parent department of...) cannot be itself after deletion
    Department name XXX, the department name of parent code XXX has been existed. Same department name in a certain department
    There is no email of user XXX in system None
    department_code: XXX doesn't exit in system None

    Get the full organizational structure

    Can get the full organization info

    HTTP request

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

    > Request example

    $ curl 'https://api.mokahr.com/api-platform/v1/departments' \
       -u 'your_api_key:' \
       -X GET \
    

    > OperationSuccess

    { "success": true,
      "departments": [
        {
          "name": "大数据部",
          "type": 2,
          "departmentId": 353,
          "departmentCode": "big_data"
        },
        {
          "name": "新媒体营销团队",
          "type": 1,
          "departmentId": 363,
          "parentCode": "big_data",
          "departmentCode": "new_media_marketing"
        }
      ]
    }
    

    > Operation Failure

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

    Request parameter

    None

    ResponseField

    Field Type Description
    success boolean true:Success
    false: Failure
    errorMessage string Error info
    departments array Organization info
    departments.name string Department name
    departments.departmentId number Department id in Moka
    departments.departmentCode string Department id in client system
    departments.parentCode string The unique id of the department's parent department, if it is null, it is the first-level department
    departments.deletedByApi number Whether to delete
    Optional values are:
    0: Not deleted
    1:Identifies as deleted
    departments.type number Department type:
    Optional values are:
    1: General department (default)
    2:Store department

    Job titleAPI

    Job title API

    Sync job title

    Moka will sync job title according to the request list (add, update, delete) Synchronization takes positionCode as the primary key, and compares it with positionCode of department in the system: 1、The current system does not have it, but it does exist during synchronization: add a job title 2、The current system has it, and it exists during synchronization: Update the existing job title information. For example, if there is during synchronization, the current system job title status is marked as deleted, and after update, the status changes to normal. 3、If it exists in the current system, but not exists during synchronization: the department marking has been deleted, and you need to manually enter the Moka system to merge the department into others department for deletion. Synchronization takes positionCode as the primary key, and compares it with positionCode of department in the system:

    HTTP request

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

    > Request example

    $ curl 'https://api.mokahr.com/api-platform/v1/positions/syncInfo' \
      -u 'your_api_key:' \
      -X POST \
      -d '{
        "data": [
          {
            "name": "1234",
            "positionCode": "s1234567890123456789012345678901234567890123456789",
            "enable": true,
            "departmentCodes":[411,"dd"],
            "departmentIds": [411],
            "allDepartments": true
          },
          {
            "name": "1234567",
            "positionCode": "s111",
            "enable": true,
            "departmentCodes":[411,"dd"],
            "departmentIds":[411],
            "allDepartments": false
          }
        ]
      }'
    

    > Operation result

    {
      "code": 200,
      "msg": "success",
      "data": {
        "addCount": 0,
        "errorList": [
          {
            "code": {
                "explain": "Job title已存在",
                "name": "626005"
            },
            "data": {
                "allDepartments": true,
                "departmentCodes": [
                    "411",
                    "dd"
                ],
                "departmentIds": [
                    411
                ],
                "enable": true,
                "name": "1234",
                "positionCode": "s1234567890123456789012345678901234567890123456789"
            }
          },
          {
            "code": {
                "explain": "Job title已存在",
                "name": "626005"
            },
            "data": {
                "allDepartments": false,
                "departmentCodes": [
                    "411",
                    "dd"
                ],
                "departmentIds": [
                    411
                ],
                "enable": true,
                "name": "1234567",
                "positionCode": "s111"
            }
          }
        ],
        "updateCount": 0
      }
    }
    

    Request body parameter

    Field Required Type Description
    data Yes array Job title array
    data[].name Yes string Job title
    data[].positionCode Yes string Job title code, the unique identification code, which is used in syncing organization structure, and pass related job title.
    data[].enable Yes boolean Whether to enable job title
    Optional values are:
    true:Enable
    false:Disable
    data[].departmentCodes No array Associated department code list, optional, associated in the organizational structure. Matching priority is lower than departmentIds
    data[].departmentIds No array A list of associated department ids, optional, associated in the organizational structure; can be queried through the "Get full organizational structure" interface. Matching priority is greater than departmentCodes
    data[].allDepartments No boolean Whether the job title is related to all departments
    Optional values are:
    true:This position is associated with all departments, departmentIds and departmentCodes are invalid
    false:When false, associate the departments corresponding to departmentIds or departmentCodes.

    ResponseField

    Field Type Description
    code number Returned code: 200 is normal, others are errors
    msg string The description of response status
    data array response data
    data[].addCount number Add job title
    data[].updateCount number Update job title
    data[].errorList array Sync failed data
    data[].errorList[].positionCode string Sync failed job title code
    data[].errorList[].name string Sync failed job title name
    data[].errorList[].msg string The reason of sync job title failed

    Department binding job title members interface

    Binding job title and its member for designated department

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/position/departmentUser

    >Request example

    curl 'https://api.mokahr.com/api-platform/v1/position/departmentUser' \
    -u 'your_api_keys' \
    -X DELETE \
    -d '
    {
        "data": [
            {
                "departmentId": 410937821,
                "departmentCode": "98291011",
                "positionUsers": {
                    "Aa00cebb6d839465880cc8aba7086f02d": [
                        "375645587@qq.com"
                    ]
                },
                "userUniqueType": "email"
            }
        ]
    }'
    

    >OperationSuccess

    {
        "code": 200,
        "msg": "success",
        "data": {
            "addCount": 0,
            "errorList": [],
            "updateCount": 1
        }
    }
    

    Request body parameter

    Field Required Type Description
    data Yes array
    data[].departmentId No number Department id bound to job title,must fill one from departmentId and departmentCode, if both are passed, the departmentId shall prevail
    data[].departmentCode No string Department id bound to job title id in client system,must fill one from departmentId and departmentCode,,if both are passed, the departmentId shall prevail
    data[].userUniqueType Yes string Specifies a unique token for the associated account
    Optional values are择Value:
    email:Email
    phone: Phone number
    number:Employee No.
    data[].positionUsers Yes object Job title and its members
    key:Required,pass job title corresponded positionCode
    vale:Pass member's info according to userUniqueTypeType

    Response field in JSON

    Field Type Description
    code number 200:Success
    not 200 represents error
    msg string The error reason of operation fail or successful notification
    data object
    data.addCount number The number of successfully added
    data.updateCount number The number of successfully updated
    data.errorList array The account of operation Failure and its reason

    Query department responsibilities and corresponding binding personnel

    The interface allows you to query the department's assigned responsibilities and the corresponding personnel.

    > Request example

    $ curl --location 'https://api.mokahr.com/api-platform/v1/dept_position_user/search' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic Rk55eXA5MkxsTkQya1pQeEV0VU1wNlNheEJqWFJ2eXE6' \
    --data '{
        "departmentCode":["12348","12349"]
    }'
    
    

    > Response example

    {
        "code": 0,
        "codeType": 0,
        "data": [
            {
                "departmentCode": "12348",
                "positionCode": "A06cd633c55d2434597cb1b87075da89e",
                "positionName": "职责2"
            },
            {
                "departmentCode": "12348",
                "positionCode": "A653b8b1d14b9422ea1b94353d86f2efd",
                "positionName": "职责3"
            },
            {
                "departmentCode": "12349",
                "positionCode": "A06cd633c55d2434597cb1b87075da89e",
                "positionName": "职责2",
                "user": {
                    "email": "grttest15@mokahr.com",
                    "phone": "",
                    "userName": "grtTest",
                    "userNumber": "10000001"
                }
            },
            {
                "departmentCode": "12349",
                "positionCode": "A653b8b1d14b9422ea1b94353d86f2efd",
                "positionName": "职责3",
                "user": {
                    "email": "grttest15@mokahr.com",
                    "phone": "",
                    "userName": "grtTest",
                    "userNumber": "10000001"
                }
            },
            {
                "departmentCode": "12349",
                "positionCode": "Aec46c5605ee24d58b66cd12852cf6d6a",
                "positionName": "新增测试",
                "user": {
                    "email": "grttest15@mokahr.com",
                    "phone": "",
                    "userName": "grtTest",
                    "userNumber": "10000001"
                }
            },
            {
                "departmentCode": "12349",
                "positionCode": "Aa8e819ce80d6426bb1e030627becd344",
                "positionName": "新增测试职责",
                "user": {
                    "email": "grttest15@mokahr.com",
                    "phone": "",
                    "userName": "grtTest",
                    "userNumber": "10000001"
                }
            }
        ],
        "msg": "成功",
        "success": true
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/dept_position_user/search

    Request body parameter

    Field Required Type Description
    departmentCode Yes array Department Code, which can be passed multiple times, with a maximum of 100 at a time.

    Response body in JSON

    Field Type Description
    code integer
    message string
    data array
    data[].departmentCode string department code
    data[].positionCode string positionCode. If there are multiple, return multiple; if there is no binding responsibility, return null.
    data[].positionName string position name
    data[].user object The personnel corresponding to each responsibility (user email/phone number/employee number/name), if there is no binding user, return null.

    User API

    Sync personnel information

    HTTP request

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

    > Request example (JSON)

    > Request example

    $ curl https://api.mokahr.com/api-platform/v2/users/syncInfo
        -u 'your-api-key:'
        -X POST
        -H 'Content-Type: application/json'
        -d '{
                "usersInfo": [
                    {
                        "email": "huohuohou2@mokahr.com",
                        "name": "liu大哥89",
                        "phone": "15101069886",
                        "number": "6661889",
                        "roleId": 60,
                        "departmentCode": [],
                        "superiorEmail": "",
                        "deactivated": 0,
                        "thirdPartyId": "",
                        "uniqueType": "number",
                        "autoActivated": 1,
                        "locale": "zh-CN"
                    }
                ]
            }'
    

    > OperationSuccess

    {
      "code": 200,
      "msg": "success",
      "data": {
          "successCount": 1,
          "errorList": []
      }
    }
    

    > Operation Failure

    {
        "code": -1,
        "msg": "success",
        "data": {
            "successCount": 0,
            "errorList": [
                {
                    "data": {
                        "email": "huohuohou2@mokahr.com",
                        "name": "liu大哥89",
                        "phone": "15101069886",
                        "number": "6661889",
                        "roleId": 60,
                        "departmentCode": [],
                        "superiorEmail": "",
                        "deactivated": 0,
                        "thirdPartyId": "",
                        "uniqueType": "number",
                        "locale": "zh-CN"
                    },
                    "msg": "Parameter error: roleId",
                    "code": -1
                }
            ]
        }
    }
    

    Request body parameter

    Field Required Type Description
    usersInfo Yes array User info array
    usersInfo[].email No/Required when uniqueType is email string Email
    usersInfo[].name No string Name
    usersInfo[].phone No/Required when uniqueType is phone string Phone
    usersInfo[].number No/Required when uniqueType is number string Employee No.
    usersInfo[].roleId No/Required for first created user int Custom user id
    usersInfo[].departmentCode Yes array Department code list, the departmentCode synced in through the organization structure, is judged to be all departments if an null array is passed.
    usersInfo[].superiorEmail No string For the superior mailbox, passing an empty string will clear the reporting relationship in the moka system. You can choose whether to update the reporting relationship by setting the updateSuperiorEmail parameter
    usersInfo[].deactivated Yes int Whether to disable/initially create a user pass 1, the user will not be created successfully
    0-not disabled 1-disabled
    usersInfo[].thirdPartyId No string Functional fieldUsed to SSO Not pass empty string
    usersInfo[].uniqueType Yes string Email or number or phone, the identification used to determine the uniqueness of the account when judging this transmission
    usersInfo[].updateDepartment No boolean !!!Note: the default is true if not passed
    Whether to update the department
    true:Update
    false:Not update
    usersInfo[].updateSuperiorEmail No boolean Whether to update the superior reporter,true Update false Not update
    usersInfo[].autoActivated No int 0-No automatic activation, 1-Automatic activation, pass null string is 0 by default
    usersInfo[].locale No string User language: zh-CN is Chinese; en-US is English. No pass is Chinese by default

    Responsejson

    Response body in JSON

    Field Type Description
    code number Response code, not 200 represents fail
    msg string Response info
    data object Respond data
    data.successCount number Sync data successful. for example:"successCount": 1, // One successful data
    data.errorList Array Sync failed data
    data.errorList[].code int Response code
    data.errorList[].msg string The reason of data failed
    data.errorList[].data object Data information
    data.errorList[].data.email string Email
    data.errorList[].data.name string Name
    data.errorList[].data.phone string Phone
    data.errorList[].data.number string Employee No.
    data.errorList[].data.roleId int Custom user id
    data.errorList[].data.locale string User language: zh-CN is Chinese; en-US is English. No pass is Chinese by default.
    data.errorList[].data.departmentCode array Department code list, the departmentCode synced in through the organization structure, is judged to be all departments if an null array is passed.
    data.errorList[].data.superiorEmail string Upper class email
    data.errorList[].data.deactivated int Whether to disable/initially create a user pass 1, the user will not be created successfully 0-not disabled 1-disabled
    data.errorList[].data.thirdPartyId string Functional fieldUsed to SSO Not pass empty string
    data.errorList[].data.uniqueType string Email or number or phone, the identification used to determine the uniqueness of the account when judging this transmission

    Get personnel info

    HTTP request

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

    > Request example (JSON)

    curl --location --request POST 'https://api.mokahr.com/api-platform/v1/users/list' \
    --header 'Authorization: Basic Mm11UnVBQk******zY6' \
    --header 'Content-Type: application/json' \
    --data-raw '{
      "deactivated": 0,
      "limit": "20",
      "order": "asc"
    }'
    

    > Response for example

    {
        "code": 200,
        "message": "success",
        "data": [
            {
                "userId": 200000188,
                "email": "test2@sdicfund.com",
                "name": "马田",
                "phone": "10065761890",
                "role": 50,
                "roleId": 200000145,
                "deactivated": 0,
                "thirdPartyId": "",
                "locale": "zh-CN",
                "department": []
            },
            {
                "userId": 200000307,
                "email": "1581904186@qq.com",
                "name": "耿凯3",
                "phone": "18732837638",
                "role": 30,
                "roleId": 200000143,
                "superiorEmail": "test@sdicfund.com",
                "deactivated": 0,
                "thirdPartyId": "",
                "locale": "zh-CN",
                "department": []
            }
        ],
        "next": "200000317"
    }
    

    Request query parameter

    Field Required Type Description
    next No string Paging parameter, if there is more data to be pulled, there will be a next field in the response json, and the next request only needs to add this next parameter to the query. If there is no next field in the response, it means that there is no more data

    Request body parameter

    Field Required Type Description
    roleId No integer Role id
    email No string Email
    phone No string Phone
    number No string Employee No.
    deactivated No integer Whether be disabled
    Optional values are:
    0:Available
    1:Disabled
    departmentIdType No string The department ID type used in this call.Optional values are:
    DEPARTMENT_ID(Default value):Moka department id
    DEPARTMENT_CODE:Department id of the third-party
    departmentId No string User belongs to/is responsible for department id
    locale No string User language
    Optional values are:
    zh-CN:Chinese
    en-US:English
    Chinese by default
    limit No string Number of entries per page for paging, default 100, max 500.
    order No string The sorting method of the pulled data, the sorting key is the user creation time. The optional value is: DESC Pulled in order from newest to old, this is the default value DESC. Pull data from old to new. 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)

    Response

    Response body in JSON

    Field Type Description
    code number 200:Success
    not 200 represents failure
    message string Notification
    next string Paging parameter, if there is more data to be pulled, there will be a next field in the response json, and the next request only needs to add this next parameter to the query. If there is no next field in the response, it means that there is no more data
    data[].userId string User id
    data[].email string Email
    data[].name string Name
    data[].phone string Phone
    data[].number stirng Employee No.
    data[].role interger Role
    0:Referrer
    5: Reception
    10:Interviewer
    20:Hiring manager
    25:Senior hiring manager
    30:HR
    40:Administrator
    50:Super-administrator
    data[].roleId interger Custom user id
    data[].superiorEmail stirng Upper class email
    data[].deactivated stirng Whether be disabled
    Optional values are:
    0:Available
    1:Disabled
    data[].isPending boolean Functional field,Used to SSO,Not pass empty string
    data[].thirdPartyId stirng Functional field,Used to SSO,Not pass empty string
    data[].locale string User language
    Optional values are:
    zh-CN:Chinese
    en-US:English
    Chinese by default
    data[].department array User belongs to/is responsible for department
    data[].department[].departmentCode string Third-party department id
    data[].department[].departmentId string Moka department id
    data[].department[].name string Department name

    Check Role Information

    The response value is the collection of all roles under this client

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/users/roles?type=all \
       -u 'your_api_key:' \
       -X GET \
    

    > Response example

    {
      "success": true,
      "data": [
        {
            "id": 44,
            "name": "Interviewer",
            "role": 10,
            "description": "可筛选简历、填写面试反馈"
        },
        {
            "id": 45,
            "name": "Hiring manager",
            "role": 20,
            "description": "可筛选简历、填写面试反馈,查看所有的面试反馈"
        },
        {
            "id": 46,
            "name": "HR",
            "role": 30,
            "description": "可查看部分职位的Candidate info及部分报表"
        },
        {
            "id": 47,
            "name": "Administrator",
            "role": 40,
            "description": "可以创建并管理HR、用人Department经理、Interviewer帐号,拥有所属HR的All权限"
        },
        {
            "id": 48,
            "name": "超级Administrator",
            "role": 50,
            "description": "拥有所有权限,可以查看所有Candidate info"
        }
      ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/users/roles?type=all

    Request url parameter

    Field Type Description
    type string Query type
    Optional values are:
    all:All
    custom:Custom
    builtin:Built-in

    Response

    Response body in JSON

    Field Type Description
    id integer Role id
    name string Role name
    role integer Role value
    description string Description

    Update user group

    It is accessible to modify user groups. When the user group request parameter is not passed, the user group information will not be updated. When the user group request parameter is empty, the information is updated to be empty.

    Request example (JSON)

    curl --location --request POST 'https://api.mokahr.com/api-platform/v1/user_group/update' \
    --header 'Authorization: Basic Mm11UnVBQk******zY6' \
    --header 'Content-Type: application/json' \
    --data-raw '{
      "userGroupId": 1,
      "userGroupName": "用户组1",
      "activate": true
    }'
    

    Response example

    { 
      "code": 200,
      "msg": "success",
      "data": null
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/user_group/update

    Request body parameter

    Field Required Type Description
    userGroupId yes integer User group id
    userGroupName no string User group name
    activate no boolean User group status
    true: enable
    false enable

    Response

    Response body in JSON:

    Field Type Description
    code number Return code:0 represents normal, others are error
    message string Request responded info

    Update user group member

    It is accessible to modify user groups and update the members of the user group. When the user group request parameter is empty, the user members will be cleared. The member information of user groups needs to be synchronized with all members, which can be modified by all. The role type of the user group member must be interviewer and above. If the user group members include roles below the interviewer, the user group member will be updated failed.

    Request example (JSON)

    curl --location --request POST 'https://api.mokahr.com/api-platform/v1/user_group/update_member' \
    --header 'Authorization: Basic Mm11UnVBQk******zY6' \
    --header 'Content-Type: application/json' \
    --data-raw '{
      "userGroupId": 1,
      "members": [
          {
              "uniqueType":"email",
              "email":"aaa@aaa.com"
          },
          {
              "uniqueType":"phone",
              "email":"12422222222"
          },
          {
              "uniqueType":"number",
              "email":"12123"
          }
    
      ]
    }'
    

    Response example

    { 
      "code": 200,
      "msg": "success",
      "data": {
          "errorList":[
              {
                  "uniqueType":"email",
                  "email":"aaa@aaa.com"
              }
          ]
      }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/user_group/update_member

    Request body parameter

    Field Required Type Description
    userGroupId yes integer User group id
    member no array User member info that should be updated
    The user group is up to 1000 members
    The role type of the user group member must be interviewer and above. If the user group members include roles below the interviewer, the user group member will be updated failed.
    member[].uniqueType yes string The unique identifier of user info
    Optional values are:
    email: Email<>phone: Phone number
    number: Employee No.
    member[].email No/required when uniqueType is email string User's email
    member[].phone No/required when uniqueType is phone string User's phone number
    member[].number No/required when uniqueType is number string User's employee No.

    Response

    Response body in JSON:

    Field Type Description
    code number Return code:0 represents normal, others are error
    message string Request responded info
    data Object Respond data
    data.errorList array error data info

    Job requisition API

    This part of the API is mainly used to obtain the current headcount data, and import headcount in batches, and the frequency of writing interface requests is limited to 30 times per minute.

    The value range of each variable

    HC status

    Value Description
    draft Draft
    unstart Unstarted (default)
    ongoing In process
    complete Completed
    suspend Pending
    canceled Cancelled
    timeout Expired

    type Requisition type

    Value Description
    planned In plan (default)
    unplanned Unplanned

    commitment Employment type

    Value Description
    parttime Part-time
    fulltime Full-time job (default)
    intern Internship
    other Other

    hiremode Recruitment mode

    Value Description
    1 experienced hires
    2 Campus recruitment

    Add job requisition

    Synchronization information includes organizational structure and position ID information, which needs to be obtained separately from relevant interfaces

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headcount/\?currentHireMode\=1 \
      -u 'your-api-key:' \
      -X POST \
      -H 'Content-Type: application/json' \
      -d '
      {
        "number": "hc_automan",
        "jobName": "hcName",
        "needNumber": 1,
        "startDate": "2017-10-12T00:00:00.000Z",
        "education": "Bachelor degree",
        "departmentCode": "8",
        "maxSalary": 2,
        "minSalary": 1,
        "jobPriorityId": 1,
        "locationId": 1,
        "jobRankIds": [1,3],
        "customData": {
          "1": "test",
          "2": 123,
          "3":["1723553256175","1723553256176"]
        }
      }
      '
    

    > Response example

    {
      "headcount": {
        "id": 1,
        "number": "hc-automan",
        "jobName": "hcname",
        "type": "planned",
        "needNumber": 10,
        "departmentId": 1,
        "commitment": "fulltime",
        "ownerId": 1,
        "managerIds": [2],
        "description": null,
        "status": "unstart",
        "creatorId": 7,
        "hireMode": 1,
        "orgId": "livingsimple",
        "createdAt": "2018-01-09T10:37:32.000Z",
        "updatedAt": "2018-01-09T10:37:32.000Z",
        "startDate": "2017-10-12",
        "completeDate": null,
        "connectedJobIds": [],
        "connectedJobs": [],
        "usedNumber": 0,
        "remainNumber": 5,
        "ownerEmail": "hr@test.moka",
        "managerEmails": ["hr@trymoka.com"],
        "managerEmployeeIds": ["0018"],
        "departmentCode": "7",
        "customData": {
            "3": [
              {
                "localeValues": [
                  {
                    "locale": "zh-CN",
                    "value": "value1"
                  },{
                    "locale": "en-US",
                    "value": "valueA"
                  }
                ],
                "optionId": "1723553256175"
              },
              {
                "localeValues": [
                  {
                    "locale": "zh-CN",
                    "value": "value2"
                  },{
                    "locale": "en-US",
                    "value": "valueB"
                  }
                ],
                "optionId": "1723553256176"
              }
            ],
            "2": "test",
            "1": 123
        },
        "addressInfo": [
            {
                "id": 1,
                "country": "中国",
                "province": "北京City",
                "area": "海淀District",
                "address": "北京City海淀District海淀西大街"
            }
        ],
        "jobPriority": [
            {
                "id": 14,
                "name": "123",
                "isBuiltin": 0
            }
        ],
        "jobRanks": [
            {
                "id": 1,
                "name": "新人",
                "type": "p5",
                "level": 1,
                "hcId": 8
            },
            {
                "id": 3,
                "name": "总裁",
                "type": null,
                "level": 3,
                "hcId": 8
            }
        ]
      }
    }
    

    HTTP request

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

    Request URL parameter

    Field Type Description
    currentHireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Request body

    Field Whether it is required Type Description
    number Yes string Job requisition code, unique and unmodified.
    jobName Yes string Job requisition name
    type No string Requisition type
    needNumber Yes integer No. of vacancy
    departmentCode No string Department code, organization structure synchronization department_code passed through the interface
    commitment No string Employment type
    ownerEmail No string Recipient email
    ownerEmployeeId No string Recipient employee No.
    managerEmails No array The email of person in charge: need to have the email of the person who have the authority, such as HR or super admin.
    managerEmployeeIds No array The email of person in charge: need to have the email of the person who have the authority, such as hr or super admin.
    description No string Requirement description, html string:
    status No string In process status
    creatorEmail No String The email of job requisition creator can only be added when creating and unmodified when editing. It will not display in sysytem.
    startDate No string Job requisition start time. Date format is: ISO8601
    completeDate No string Estimated finish time. Date format is: ISO8601
    connectedJobIds No array The id of associated position
    customData No object Custom data, in the form of key-value pairs. key is the custom field id, and value is the custom field value. If it is a multi-select field, the value is an array of option ID. Custom fields created before November 18, 2024, for social recruitment can have their IDs used to create/edit custom fields for campus recruitment needs (the database stores the actual campus recruitment IDs). Although there is a mapping relationship between social and campus recruitment field IDs, it is still preferable to use the actual mode's field IDs for creating and editing custom field content. The ID in the returned result is always the real mode ID.
    locationId No integer Location id
    jobPriorityId No integer Job priority id
    jobRankIds No array Job level id
    education No string Education requirement
    Range of values
    No limit
    Senior high school and below
    Technical secondary school
    Technical secondary school
    Junior college
    Bachelor degree
    Master degree
    Doctor degree
    sharedUserEmails No array Email of job requisition sharer.Recruiter, job requisition sharer, and job requisition creator cannot be the same person.
    sharedUserEmployeeIds No array Work number of job requisition sharer
    zhinengId No integer Functional ID
    minSalary No integer Salary floor
    maxSalary No integer Salary ceiling
    salaryUnit No integer Salary unit
    Optional values:
    6:Month
    7:Week
    8:Day
    9:Hour
    10:Every time
    payPeriod No integer Number of paid months
    minimum value:12
    Maximum value:24
    paymentMethod No integer Salary payment method
    Optional values:
    0:Daily settlement
    1:Weekly settlement
    2:Monthly settlement
    3:Completion completion
    assignmentFeedbackId No integer Screening Evaluation Form ID
    The screening evaluation form cannot be linked unless it is activated, and only forms available to the current department can be linked. If no department is specified, only the default screening evaluation form can be linked.

    Response

    Response body in JSON

    Field Type Description
    id integer hc id
    number string hc code
    jobName string hc name
    type string Requisition type
    needNumber integer No. of vacancy
    departmentId integer Department id
    commitment string Employment type
    Optional values are:
    Full-time
    Part-time
    Internship
    Others
    ownerId integer Recipient id
    ownerEmail integer Recipient email
    ownerEmployeeId integer Recipient employee No.
    managerIds array Person in charge id array
    managerEmails array Person in charge email array
    managerEmployeeIds array Person in charge employee No. array
    description string Requirement description
    status string In process status
    creatorId integer hc creator id
    creatorEmail String hc creator email
    hireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    orgId string Company id
    createAt string Creation timeDate format is: ISO8601
    updateAt string Update timeDate format is: ISO8601
    startDate string Start timeDate format is: ISO8601
    completeDate string End dateDate format is: ISO8601
    connectedJobIds array The id of associated position
    connectedJobs array The details of associated position
    usedNumber integer Number of used people (same as number of incumbents) that are associated with the job requisition and the number of candidates whose status is employed. If a candidate leaves after being employed, the number of used people will be correspondingly reduced. It is recommended to use "number of incumbents" to be consistent with the job requisition module of the system.
    remainNumber integer Remaining number=Recruit number-Number of used people
    currentEnrolledNumber integer Number of incumbents who are associated with the job requisition and the number of candidates whose status is employed. If a candidate leaves after being employed, the number of employees will be correspondingly reduced.
    departureNumber integer Number of separations, associated with the job requisition, and the number of candidates whose status is separated.
    customData object Custom field
    departmentCode string The code that used for sync department
    addressInfo array Location info
    jobPriority array Job priority information
    jobRanks array Job level
    education string Education requirement
    sharedUserEmails array Email of job requisition sharer
    sharedUserEmployeeIds array Work number of job requisition sharer
    zhineng object Functional information
    zhineng.id integer Functional ID
    zhineng.name string Functional name
    minSalary integer Salary floor
    maxSalary integer Salary ceiling
    salaryUnit integer Salary unit
    payPeriod integer Number of paid months
    paymentMethod integer Salary payment method

    Update Job requisition

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headcount/1 \
      -u 'your-api-key:' \
      -X PUT \
      -H 'content-type: application/json' \
      -d '
      {
        "jobName": "hcName",
        "needNumber": 10,
        "startDate": "2017-10-12T00:00:00.000Z",
        "customData": {
            "1": "test",
            "2": 123,
            "3":["1723553256175","1723553256176"]
        },
    
      }
      '
    

    > Response example

    {
      "headcount": {
        "id": 1,
        "number": "hc-automan",
        "jobName": "hcname",
        "type": "planned",
        "needNumber": 10,
        "departmentId": 1,
        "commitment": "fulltime",
        "ownerId": 1,
        "managerIds": [2],
        "managerEmails": ["hr@trymoka.com"],
        "managerEmployeeIds": ["0019"],
        "description": null,
        "status": "unstart",
        "creatorId": 7,
        "hireMode": 1,
        "orgId": "livingsimple",
        "createdAt": "2018-01-09T10:37:32.000Z",
        "updatedAt": "2018-01-09T10:37:32.000Z",
        "startDate": "2017-10-12",
        "completeDate": null,
        "connectedJobIds": [],
        "connectedJobs": [],
        "usedNumber": 0,
        "remainNumber": 5,
        "education": "Bachelor degree",
        "customData": {
            "3": [
              {
                "localeValues": [
                  {
                    "locale": "zh-CN",
                    "value": "value1"
                  },{
                    "locale": "en-US",
                    "value": "valueA"
                  }
                ],
                "optionId": "1723553256175"
              },
              {
                "localeValues": [
                  {
                    "locale": "zh-CN",
                    "value": "value2"
                  },{
                    "locale": "en-US",
                    "value": "valueB"
                  }
                ],
                "optionId": "1723553256176"
              }
            ],
            "2": "test value1",
            "1": "test value2"
        }
      }
    }
    

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/headcount/{hcId}

    Request URL parameter

    Field Type Description
    hcId integer Targeted hc id

    Request body

    Field Type Description
    jobName string hc name
    type string Requisition type
    needNumber integer No. of vacancy
    departmentCode string Department code, organizational structure synchronization department_code passed through the interface
    commitment string Employment type
    ownerEmail integer Recipient email
    managerEmails array Person in charge email
    managerEmployeeIds array Person in charge employee No.
    description string Requisition description, html string
    status string In process status
    creatorId integer hc creator id
    startData string Start time
    completeDate string End time
    connectedJobIds array The id of associated position
    customData object Custom field, in the form of key-value pairs. key is the custom field id, and value is the custom field value. If it is a multi-select field, the value is an array of option ID. Custom fields created before November 18, 2024, for social recruitment can have their IDs used to create/edit custom fields for campus recruitment needs (the database stores the actual campus recruitment IDs). Although there is a mapping relationship between social and campus recruitment field IDs, it is still preferable to use the actual mode's field IDs for creating and editing custom field content. The ID in the returned result is always the real mode ID.
    locationId integer Location id
    jobPriorityId integer Job priority id
    jobRankIds array Job level id
    education string Degree requirement, value range: no limit, senior high school and below, technical secondary school, junior college, bachelor degree, master degree, and doctor degree
    realCompleteDate string Actual completion date. This field takes effect when the status is "Completed"; no value is passed to use the update time by default.
    sharedUserEmails array Email of job requisition sharer.Recruiter, job requisition sharer, and job requisition creator cannot be the same person.
    sharedUserEmployeeIds array Work number of job requisition sharer
    zhinengId integer Functional ID
    minSalary integer Salary floor
    maxSalary integer Salary ceiling
    salaryUnit integer Salary unit
    Optional values:
    6:Month
    7:Week
    8:Day
    9:Hour
    10:Every time
    payPeriod integer Number of paid months
    minimum value:12
    Maximum value:24
    paymentMethod integer Salary payment method
    Optional values:
    0:Daily settlement
    1:Weekly settlement
    2:Monthly settlement
    3:Completion completion

    Response

    Response body in JSON

    Field Type Description
    id integer hc id
    number string hc code
    jobName string hc name
    type string Requisition type
    needNumber integer No. of vacancy
    departmentId integer Department id
    commitment string Employment type
    Optional value:
    Full-time
    Part-time
    Internship
    Others
    ownerId integer Recipient id
    ownerEmail integer Recipient email
    ownerEmployeeId integer Recipient employee No.
    managerIds array Person in charge id array
    managerEmails array Person in charge email array
    managerEmployeeIds array Person in charge employee No. array
    description string Requirement description
    status string In process status
    creatorId integer hc creator id
    hireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    orgId string Company id
    createAt string Creation timeDate format is: ISO8601
    updateAt string Update timeDate format is: ISO8601
    startData string Start timeDate format is: ISO8601
    completeDate string End dateDate format is: ISO8601
    connectedJobIds array The id of associated position
    connectedJobs array The details of associated position
    usedNumber integer Number of used people (same as number of incumbents) that are associated with the job requisition and the number of candidates whose status is employed. If a candidate leaves after being employed, the number of used people will be correspondingly reduced. It is recommended to use "number of incumbents" to be consistent with the job requisition module of the system.
    remainNumber integer Remaining number=Recruit number-Number of used people
    currentEnrolledNumber integer Number of incumbents who are associated with the job requisition and the number of candidates whose status is employed. If a candidate leaves after being employed, the
    departureNumber integer Number of separations, associated with the job requisition, and the number of candidates whose status is separated.
    customData object Custom field
    departmentCode string The code that used for sync department
    addressInfo array Location info
    jobPriority array Job priority information
    jobRanks array Job level
    education string Education requirement
    realCompleteDate string Actual completion date. This field takes effect when the status is "Completed"; no value is passed to use the update time by default.
    sharedUserEmails array Email of job requisition sharer
    sharedUserEmployeeIds array Work number of job requisition sharer
    zhineng object Functional information
    zhineng.id integer Functional ID
    zhineng.name string Functional name
    minSalary integer Salary floor
    maxSalary integer Salary ceiling
    salaryUnit integer Salary unit
    payPeriod integer Number of paid months
    paymentMethod integer Salary payment method

    Delete Job requisition

    > Request example

      $ curl https://api.mokahr.com/api-platform/v1/headcount/1\ \
        -u 'your-api_key:' \
        -X DELETE
    

    > Response example

    ok
    

    HTTP request

    DELETE https://api.mokahr.com/api-platform/v1/headcount/{hcId}

    Request URL parameter

    Field Type Description
    hcId integer Targeted hc id

    Get hc basic info list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headcount/minimal_headcounts\?currentHireMode\=1 \
      -u 'your_api_key:' \
      -X GET
    

    > Response example

    {
      "headcounts": [
        {
          "id": 1,
          "number": "AoTeMan001",
          "status": "unstart",
          "jobName": "野生奥特曼",
          "needNumber": 5,
          "departmentId": 1,
          "ownerId": 1,
          "orgId": "livingsimple"
        }
      ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/headcount/minimal_headcounts

    Request URL parameter

    Field Type Description
    currentHireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Response

    Response body in JSON

    Field Type Description
    headcounts array
    id integer hc id
    number string hc code
    status string In process status
    jobName string hc name
    needNumber integer No. of vacancy
    departmentId integer Department id
    departmentCode string The code that used for sync department
    ownerId integer Recipient id
    orgId string Company id

    Get specific job requisition details

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headcount/10 \
      -u 'your-api_key:' \
      -X GET
    

    > Response example

    {
      "headcount": {
        "id": 1,
        "number": "AoTeMan001",
        "jobName": "野生奥特曼",
        "type": "planned",
        "needNumber": 5,
        "departmentId": 1,
        "departmentCode": "7",
        "commitment": "fulltime",
        "ownerId": 1,
        "managerIds": [2],
        "description": null,
        "status": "unstart",
        "creatorId": 7,
        "hireMode": 1,
        "orgId": "livingsimple",
        "createdAt": "2018-01-09T10:37:32.000Z",
        "updatedAt": "2018-01-09T10:37:32.000Z",
        "startDate": null,
        "completeDate": null,
        "connectedJobIds": [],
        "connectedJobs": [],
        "usedNumber": 0,
        "remainNumber": 5,
        "customData": {
          "1": "123",
          "2": "222"
        },
        "ownerEmail": "hr@test.moka",
        "managerEmails": ["guoxing123@trymoka.com"],
        "managerEmployeeIds": ["0019"],
        "departmentCode": "7",
        "addressInfo": [
            {
                "id": 1,
                "country": "中国",
                "province": "北京City",
                "area": "海淀District",
                "address": "北京City海淀District海淀西大街"
            }
        ],
        "jobPriority": [
            {
                "id": 14,
                "name": "123",
                "isBuiltin": 0
            }
        ],
        "jobRanks": [
            {
                "id": 1,
                "name": "新人",
                "type": "p5",
                "level": 1,
                "hcId": 8
            },
            {
                "id": 3,
                "name": "总裁",
                "type": null,
                "level": 3,
                "hcId": 8
            }
        ]
      }
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/headcount/{hcId}

    Request URL parameter

    Field Type Description
    hcId integer hc id

    Response

    Response body in JSON

    Field Type Description
    id integer hc id
    number string hc code
    jobName string hc name
    type string Requisition type
    needNumber integer No. of vacancy
    departmentId integer Department id
    commitment string Employment type
    Optional value:
    Full-time
    Part-time
    Internship
    Others
    ownerId integer Recipient id
    ownerEmail string Recipient email
    ownerEmployeeId string Recipient employee No.
    managerIds array Person in charge id array
    managerEmails array Person in charge email array
    managerEmployeeIds array Person in charge employee No. array
    description string Requirement description
    status string In process status
    creatorId integer hc creator id
    creatorEmail String hc creator email
    hireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    orgId string Company id
    createdAt string Created time
    updatedAt string Update time
    startDate string Start time "2022-03-11"
    completeDate string End time
    connectedJobIds array The id of associated position
    connectedJobs array The details of associated position
    usedNumber integer Number of people used
    remainNumber integer Left people
    customData object The value of the custom field
    departmentCode string The code that used for sync department
    addressInfo array Location info
    jobPriority array Job priority information
    jobRanks array Job level
    minSalary integer Salary floor, unit: thousand (K)
    maxSalary integer Salary ceiling, unit: thousand (K)
    education string Education requirement,Range of values:No limit
    Senior high school and below
    Technical secondary school
    Technical secondary school
    Junior college
    Bachelor degree
    Master degree
    Doctor degree
    allCount integer Sent offers
    sendCount integer Pending offers
    rejectedCount integer Rejected offers
    pendingCheckin integer To be onboarded (The offer has sent and accepted by the Candidate and the Candidate status is to be onboarded)
    realCompleteDate string Actual finish time of job requisition
    approvalStatus integer Job requisition approval status 0,to initiate; 1,in process; 3,denied; 4,cancelled;
    isGlobal integer Whether to use campus recruitment and experienced hire at the same tiem
    sharedUserEmails array Email of job requisition sharer
    sharedUserEmployeeIds array Work number of job requisition sharer

    Obtain the details of the specified job requisition

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headcounts\?currentHireMode\=1\&status\=complete&pageNumber=1 \
      -u 'your-api_key:' \
      -X GET
    

    > Response example

    {
      "headcount": {
        "id": 1,
        "number": "AoTeMan001",
        "jobName": "野生奥特曼",
        "type": "planned",
        "needNumber": 5,
        "departmentId": 1,
        "commitment": "fulltime",
        "ownerId": 1,
        "description": null,
        "managerIds": [2],
        "managerEmails": ["hr@trymoka.com"],
        "managerEmployeeIds": ["0018"],
        "status": "complete",
        "creatorId": 7,
        "hireMode": 1,
        "orgId": "livingsimple",
        "createdAt": "2018-01-09T10:37:32.000Z",
        "updatedAt": "2018-01-09T10:37:32.000Z",
        "startDate": null,
        "completeDate": null,
        "connectedJobIds": [],
        "connectedJobs": [],
        "usedNumber": 0,
        "remainNumber": 5,
        "departmentCode": "7",
        "addressInfo": [
            {
                "id": 1,
                "country": "中国",
                "province": "北京City",
                "area": "海淀District",
                "address": "北京City海淀District海淀西大街"
            }
        ],
        "jobPriority": [
            {
                "id": 1,
                "name": "Urgent hiring",
                "isBuiltin": 1
            }
        ],
        "jobRanks": [
            {
                "id": 1,
                "name": "新人",
                "type": "p5",
                "level": 1,
                "hcId": 8
            },
            {
                "id": 3,
                "name": "总裁",
                "type": null,
                "level": 3,
                "hcId": 8
            }
        ]
      }
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/headcounts

    Request URL parameter

    Field Type Description
    currentHireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    status string Status
    pageNumber intger Page tabs, indicating which pages of data to get (20 data responded per page)

    Response

    Response body in JSON

    Field Type Description
    id integer hc id
    number string hc code
    jobName string hc name
    type string Requisition type
    needNumber integer No. of vacancy
    departmentId integer Department id
    commitment string Employment type, optional values are:
    Full-time
    Part-time
    Internship
    Others
    ownerId integer Recipient id
    managerIds array Person in charge id array
    managerEmails array Person in charge email array
    managerEmployeeIds array Person in charge employee No. array
    description string Requirement description
    status string In process status
    creatorId integer hc creator id
    hireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    orgId string Company id
    createAt string Creation timeDate format is: ISO8601
    updateAt string Update timeDate format is: ISO8601
    startData string Start timeDate format is: ISO8601
    completeDate string End dateDate format is: ISO8601
    connectedJobIds array The id of associated position
    connectedJobs array The details of associated position
    usedNumber integer Number of people used
    remainNumber integer Left people
    departmentCode string The code that used for sync department
    addressInfo array Location info
    jobPriority array Job priority information
    jobRanks array Job level
    sharedUserEmails array Email of job requisition sharer
    sharedUserEmployeeIds array Work number of job requisition sharer

    Get the number of job requisition

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headcount_status/count\?currentHireMode\=1 \
      -u 'your-api_key:' \
      -X GET
    

    > Response example

    {
      "statusCount": {
        "complete": 1,
        "suspend": 1,
        "unstart": 22
      }
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/headcount_status/count

    Request URL parameter

    Field Type Description
    currentHireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Response

    Response body in JSON

    Field Type Description
    complete integer The number of complete, if there is no field, it will be 0

    Get custom field list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/hc_fields \
      -u 'your_api_key:' \
      -X GET
    

    > Response example

    [
      {
        "id": 1,
        "name": "Requisition type",
        "type": "select_info",
        "detail": null,
        "isRequired": 1,
        "isVisible": 1,
        "isBuiltin": 1
      },
      {
        "id": 2,
        "name": "select",
        "type": "select_info",
        "detail": [
            "1",
            "2"
        ],
        "isRequired": 0,
        "isVisible": 1,
        "isBuiltin": 0
      },
      {
        "id": 3,
        "name": "test multi select info",
        "type": "multi_select_info",
        "multiDetail": [
          {
            "localeValues": [
              {
                "locale": "zh-CN",
                "value": "value1"
              },{
                "locale": "en-US",
                "value": "valueA"
              }
            ],
            "optionId": "1723553256175"
          },
          {
            "localeValues": [
              {
                "locale": "zh-CN",
                "value": "value2"
              },{
                "locale": "en-US",
                "value": "valueB"
              }
            ],
            "optionId": "1723553256176"
          }
        ],
        "isApproval": 1,
        "isBuiltin": 0,
        "isRequired": 0,
        "isVisible": 1
      }
    
    ]
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/hc_fields

    Request URL parameter

    Field Type Description
    currentHireMode integer Recruitment mode,default experienced hires
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Response

    Response body in JSON

    Field Type Description
    id integer Field id, used to creat and update new custom field
    name string The displayed name of field
    type string Field type
    select_info: Selection type
    multi_select_info: Multi-selection type
    string_info: String type
    date_info:Date type
    detail array Optional question under select_info
    multiDetail array Contains an array of multi-select item details under multi_select_info
    isRequired integer Required
    isVisible integer Whether to display
    isBuiltin integer Whether it is built-in

    Get job requisition info at specific time

    > Request example

    curl --location --request GET 'https://api.mokahr.com/api-platform/v1/data/headcounts?fromTime=2018-1-1&limit=100' \
    --header 'Authorization: Basic aHRuYlJqcGhyRDh***FWR0Q3dUw6'
    

    > Response example

    {
        "data": [
            {
                "id": 367824,
                "orgId": "orgid-test",
                "number": "545454156",
                "startDate": "2022-03-24T16:00:00.000Z",
                "completeDate": null,
                "needNumber": 3232,
                "description": "
                                                     <p>
                                                      荒天帝和火灵儿的招聘Requirement description
                                                     </p>
                                                     ",
                "updatedAt": "2022-03-25T06:25:36.000Z",
                "connectedJobIds": []
            },
            {
                "id": 180790,
                "orgId": "orgid-test",
                "number": "001",
                "startDate": null,
                "completeDate": null,
                "needNumber": 1,
                "description": null,
                "updatedAt": "2022-03-29T09:03:00.000Z",
                "connectedJobIds": [
                    "6179489d-0a******8962db0f7",
                    "0cd0ed7d-1***********5-7d63a4117f63",
                    "6d**********9c3891d9c8"
                ]
            }
        ],
        "code": 0,
        "msg": "success"
    }
    

    Get HeadCount info

    HTTP request

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

    Query

    Field Required Type Description
    fromTime Yes string The start time of the data, the fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included.
    next Yes string Paging parameter, if there is more data to be pulled, there will be a next field in the response json, and the next request only needs to add this next parameter to the query. The fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included. If there is no next field in the response, it means that there is no more data
    limit No string Number of entries per page for paging, default 100, max 500.

    Response

    Response body in JSON

    Field Type Description
    id integer HC unique id
    number string HC code
    startDate string HC start time
    completeDate string HC goal finish time
    needNumber string HC No. of vacancy
    description strring HC requirement description
    updatedAt string Last update time of this data
    connectedJobIds array Position id list associated to hc

    Query the verification status of recruitment needs

    Request example

    $ curl -X POST \
      https://api.mokahr.com/api-platform/v1/headcounts/getHeadcountVerificationInfo \
      -u 'your-api-key:' \
      -H 'Content-Type: application/json' \
      -d '{"id": 100001}'
    

    Response example

    {
        "data": {
            "id": 1234567890,
            "number": "A123456",
            "needNumber": 5,
            "jobName": "软件工程师",
            "inProcessOfferApplicationIds": [
                1001,
                1002,
                1003
            ],
            "hireApplicationIds": [
                2001,
                2002
            ]
        },
        "code": 0,
        "msg": "success"
    }
    

    Obtain the verification status of recruitment needs

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/headcounts/getHeadcountVerificationInfo

    Request body parameter

    Field Required Type Description
    id Yes integer HC unique ID

    Response

    Response body in JSON

    Field Type Description
    id integer Recruitment demand ID
    number string Recruitment Request Number
    needNumber integer No of the Recruited
    jobName string Position
    inProcessOfferApplicationIds array List of offer application IDs currently being processed in the process
    hireApplicationIds array List of IDs for Employment Application

    Candidate API

    This part of the API is mainly used to obtain the Candidate custom module and custom field information configured in the system

    Get Candidate info v2 interface

    HTTP request

    POST https://api.mokahr.com/api-platform/v2/data/ehrApplications

    > Request example (application/json)

    $ curl https://api.mokahr.com/api-platform/v2/data/ehrApplications \
       -u 'your_api_key:' \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{
        "applicationIds":[236718928]
    }'
    

    > Response示for example

    {
        "code": 200,
        "msg": "success",
        "data": [
            {
                "basicInfo": {
                    "applicationId": 200012943,
                    "campusSiteId": 0,
                    "archived": true,
                    "invitationUpdateStatus": 0,
                    "movedAt": "2021-04-22T11:47:05.000Z",
                    "sourceId": 200000480,
                    "createdAt": "2021-01-26T10:48:03.000Z",
                    "updatedAt": "2021-06-09T06:14:38.000Z",
                    "standardResumeUrl": "https://moka-test-public.oss-cn-beijing.aliyuncs.com/7402a966b65b438db315d9b339143e6d.pdf?Expires=1626266775&OSSAccessKeyId=LTAIoEXIQWCGUAZO&Signature=K1qXMEitIKuPxr1gzxa5%2Bz6Gylc%3D&timestamp=1626263175803",
                    "sourceName": "拉勾",
                    "ehrCandidateExternalLink": "https://staging003.mokahr.com/forward/Candidate/info?access_token=9676f03ac311426e9ff6f74e9851d312916110d27d064a90aca3dbe9838f2571",
                    "archivedAt": null,
                    "archiveReasonId": null,
                    "referrer": null,
                    "archiveReasonsDetails": null,
                    "probation": null,
                    "headcountId": null,
                    "headcountNumber": null,
                    "headcountName": null,
                    "resumeKey": null,
                    "resumeUrl": null,
                    "pipelineId": 410030481,
                    "stageId": 410040910,
                    "sourceId": 410040910,
                    "archiveReasons": null,
                    "talentPoolsList": [
                        {
                            "talentPoolId": 200000140,
                            "name": "系统公共Talent pool",
                            "description": "所有HR权限及以上用户可见,用户可浏览公共Talent pool中所有Candidate"
                        }
                    ],
                    "hireMode": 1,
                    "stage": {
                        "name": "沟通offer",
                        "id": 200000088,
                        "type": 101
                    },
                    "operationRecord": null,
                    "sourceList": [
                        {
                            "name": "招聘网站",
                            "isBuiltin": 1,
                            "id": null
                        },
                        {
                            "id": 200000480,
                            "name": "拉勾",
                            "isBuiltin": 1
                        },
                        {
                            "id": null,
                            "name": null,
                            "isBuiltin": null
                        }
                    ],
                    "attachments": [],
                    "remarks": [
                        {
                            "content": "这Yes个Note",
                            "created_at": "2021-02-02T06:30:45.000Z",
                            "creator": {
                                "name": "简彦明",
                                "employeeId": "",
                                "id": 200001549,
                                "email": "jianyanming@mokahr.com",
                                "number": null
                            },
                            "is_private": false,
                            "type": "人工填写"
                        }
                    ],
                    "owner": {
                        "name": "简彦明",
                        "email": "jianyanming@mokahr.com",
                        "employeeId": "",
                        "phone": null,
                        "number": null
                    },
                    "assignments": null,
                    "operator": null,
                    "birthYear": 1990,
                    "CandidateId": 200012616,
                    "sourceType": 2,
                    "name": "全Field",
                    "phone": "17787871675",
                    "email": "17787871675@163.com",
                    "gender": "Male",
                    "birthDate": "1990-03-07",
                    "ethnic": "汉族",
                    "certificateType": 1,
                    "citizenId": "110101199003079251",
                    "nationality": "安哥拉",
                    "nativePlace": "北京City 西城District",
                    "experience": 4,
                    "location": "北京Location",
                    "lastCompany": "Recent company",
                    "academicDegree": "Doctor degree",
                    "lastSpeciality": "计算机软件与理论",
                    "nativePlaceCode": 110102,
                    "nationalityCode": 1,
                    "genderCode": 0,
                    "academicDegreeCode": 7,
                    "ethnicCode": 1,
                    "industry": "Industry",
                    "forwardIndustry": "期望行业",
                    "lastUpdate": "2020-02-02",
                    "startFrom": "2021-02-02",
                    "skill": "Skill",
                    "awards": "Awards",
                    "personalInterests": "Hobby",
                    "lastWorkedJobTitle": "Job title",
                    "graduateDate": "2018-06-01T00:00:00.000Z",
                    "salary": "当前Salary",
                    "aimSalary": "Preferred salary",
                    "forwardLocation": "Preferred city",
                    "personal": "Self- description\n",
                    "blacklistTags": null,
                    "blacklistDetail": null,
                    "personalUrl": null,
                    "portraitUrl": null,
                    "married": null,
                    "customFields": [
                        {
                            "name": "Department",
                            "value": "Department",
                            "section": "experienceInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "工作City",
                            "value": "工作City",
                            "section": "experienceInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "所属行业",
                            "value": "所属行业",
                            "section": "experienceInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "Education experienceDescription",
                            "value": "Education experienceDescription\n",
                            "section": "educationInfo",
                            "index": 0,
                            "type": "text_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "教育月",
                            "value": "2015-07",
                            "section": "educationInfo",
                            "index": 0,
                            "type": "date_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "Language skill",
                            "value": "Language skill",
                            "section": "languageInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "Awards2",
                            "value": "Awards2",
                            "section": "awardInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "当前居住地",
                            "value": "当前居住地",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "当前行业",
                            "value": "当前行业",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "当前职位",
                            "value": "当前职位",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "期望职业",
                            "value": "期望职业",
                            "section": "jobIntention",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "所获奖励",
                            "value": "所获奖励",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "所获证书",
                            "value": "所获证书",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "投递From",
                            "value": "微信",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "select_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "工作年限",
                            "value": "工作年限",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "投递 Date",
                            "value": "2021-01-26",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "day_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "当前Salary",
                            "value": "当前Salary",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "毕业院校",
                            "value": "毕业院校",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "Language skill",
                            "value": "Language skill",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "Nationality",
                            "value": "中国",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "MajorSkill",
                            "value": "MajorSkill",
                            "section": "basicInfo",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "Self- description2",
                            "value": "Self- description2",
                            "section": "selfDescription",
                            "index": 0,
                            "type": "string_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "测试时间2",
                            "value": "2017-01",
                            "section": "测试模块",
                            "index": 0,
                            "type": "date_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "测试时间3",
                            "value": "2021-06-16",
                            "section": "测试模块",
                            "index": 0,
                            "type": "day_info",
                            "customFieldId": null,
                            "now": null,
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "测试 Time period",
                            "value": {
                                "endDate": "2019-01",
                                "startDate": "2018-01"
                            },
                            "now": false,
                            "section": "测试模块",
                            "index": 0,
                            "type": "date_group_info",
                            "customFieldId": null,
                            "codes": null,
                            "code": null
                        }
                    ],
                    "label": null,
                    "educationInfo": [
                        {
                            "id": "200018307",
                            "startDate": "2014-01",
                            "endDate": "2018-01",
                            "now": false,
                            "school": "北京科技大学",
                            "speciality": "计算机科学与技术",
                            "academicDegree": "Master degree"
                        }
                    ],
                    "experienceInfo": [
                        {
                            "id": "200011041",
                            "startDate": "2016-01",
                            "endDate": "2017-01",
                            "now": false,
                            "company": "Company name",
                            "title": "Job title",
                            "location": "Work location",
                            "industry": "Industry",
                            "leader": "汇报Object",
                            "department": "Department",
                            "salary": "Salary",
                            "summary": "Job responsibility\n",
                            "reasonForLeaving": "Reason for resignation",
                            "underlingNumber": "6",
                            "type": "Company type",
                            "size": "Company size"
                        }
                    ],
                    "awardInfo": [
                        {
                            "id": "200000781",
                            "awardDate": "2017-01",
                            "awardName": "Country奖学金"
                        }
                    ],
                    "projectInfo": [
                        {
                            "id": "200008354",
                            "startDate": "2017-01",
                            "endDate": "2021-07",
                            "now": true,
                            "projectName": "Project name",
                            "title": "Job title",
                            "projectDescription": "Project description\n",
                            "responsibilities": "Responsibility in project\n"
                        }
                    ],
                    "languageInfo": [
                        {
                            "id": "200000866",
                            "language": "Language type",
                            "level": "良好",
                            "listenAndSpeak": "一般",
                            "readAndWrite": "一般"
                        }
                    ],
                    "practiceInfo": [
                        {
                            "id": "200001954",
                            "startDate": "2018-01",
                            "endDate": "2019-01",
                            "company": "Company name",
                            "title": "Job title",
                            "location": "Work location",
                            "industry": "Industry",
                            "leader": "汇报Object",
                            "department": "Department",
                            "salary": "Salary",
                            "summary": "Job responsibility\n",
                            "size": "Company size"
                        }
                    ]
                },
                "offerInfo": {
                    "applicationId": 200012943,
                    "status": "pending",
                    "approvalStatus": "UNINITIATED",
                    "checkinDate": "2021-06-17T16:00:00.000Z",
                    "salaryNumber": "11",
                    "locationString": "上海City 黄浦District 黄浦江",
                    "jobRankLevel": 2,
                    "jobRankName": "资深",
                    "dutyLevelName": "",
                    "salaryType": 3,
                    "offerAttachmentUrl": "https://moka-test.oss-cn-beijing.aliyuncs.com/export_files_cache/sdicfund/offers/2dce43984bdf9a77e2e3823b8110672d.pdf?Expires=1626266774&OSSAccessKeyId=LTAIoEXIQWCGUAZO&Signature=3kwpFQImRTRKIPk7bpCaeb4sypo%3D&response-content-disposition=attachment%3B%20filename%3D%25E5%2585%25A8%25E5%25AD%2597%25E6%25AE%25B5_Offer%25E4%25BF%25A1%25E6%2581%25AF.pdf%3B%20&timestamp=1626263174601",
                    "finishedAt": null,
                    "jobRankType": null,
                    "creator": {
                        "name": "简彦明",
                        "email": "jianyanming@mokahr.com",
                        "employeeId": "",
                        "phone": null,
                        "number": null
                    },
                    "hcInfo": {
                        "id": 200001747,
                        "name": "hc",
                        "number": "1111",
                        "status": "ongoing",
                        "manager": {
                            "name": "简彦明",
                            "employeeId": "",
                            "id": 200001549,
                            "email": "jianyanming@mokahr.com"
                        },
                        "department": null
                    },
                    "department": {
                        "departmentName": "国投公司",
                        "departmentPath": "国投公司",
                        "id": "200031249",
                        "departmentCode": null,
                        "parentAPICode": null
                    },
                    "offerHistoryList": [
                        {
                            "sentAt": "2022-12-28T13:08:51.000Z",
                            "sentUser": {
                                "number": "78293365",
                                "phone": "13311334334",
                                "name": "刘阳",
                                "employeeId": "78293365",
                                "id": 3551342,
                                "email": "liuceshi@mokahr.com"
                            },
                            "status": "pending",
                            "operationType": null
                        }
                    ],
                    "customFields": [
                        {
                            "name": "测试Custom field",
                            "value": "2016-01 2017-01",
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "测试Custom field2",
                            "value": "2021-01",
                            "codes": null,
                            "code": null
                        },
                        {
                            "name": "测试Custom field3",
                            "value": "2021-06-09",
                            "codes": null,
                            "code": null
                        }
                    ]
                },
                "interviewInfo": [
                    {
                        "noInterview": false,
                        "applicationId": 200012943,
                        "groupInterviewId": 200003333,
                        "groupId": "de1d030ec7394b6eb07f70977f712852a2100b9198754c0b9a14d9ad71ac50f5",
                        "status": "Finished",
                        "CandidateAttendStatus": "No feedback",
                        "interviewType": "On-site interview",
                        "jobType": "0",
                        "locationId": 200000071,
                        "roundId": 1,
                        "roundName": "1st round",
                        "roundEnglishName": "1st round",
                        "createAt": "2021-01-29T09:35:26.000Z",
                        "startTime": "2021-01-29T10:00:00.000Z",
                        "duration": 30,
                        "interviewFeedbackUrl": "https://staging003.mokahr.com/api/outer/ats-interview/interview/interview-applications/exportPdf/withKey?sign=63e0ef16f4e98d56dedca33c83e2cec9&appSecret=dc07abc6-ad14-4fa6-ba4a-51bf83a0e343&applicationId=200012943&userId=&orgId=sdicfund&timestamp=1626263174366",
                        "locationCityId": 110108,
                        "locationCountry": "中国",
                        "locationAddress": "北京City 海淀District 国投创新的地址",
                        "stageId": 200000087,
                        "cancelReason": null,
                        "signInStatus": null,
                        "locationInfo": null,
                        "meetingRoomId": null,
                        "meetingRoomName": null,
                        "interviewArranger": {
                            "name": "简彦明",
                            "email": "jianyanming@mokahr.com",
                            "employeeId": "",
                            "phone": null,
                            "number": null
                        },
                        "interviewerFeedbacks": [
                            {
                                "interviewer": {
                                    "phone": "18734837688",
                                    "name": "耿凯凯",
                                    "employeeId": "",
                                    "id": 200000307,
                                    "email": "1581904186@qq.com"
                                },
                                "participated": "未填写反馈",
                                "resultName": null,
                                "resultType": null,
                                "feedback": null,
                                "feedbackTemplateResult": null,
                                "items": null
                            }
                        ]
                    },
                    {
                        "noInterview": false,
                        "applicationId": 200012943,
                        "groupInterviewId": 200003334,
                        "groupId": "d61f4e46171d44c18980a3128bf861033efc8fe67c544c3db0e2c1d10883919c",
                        "status": "Finished",
                        "CandidateAttendStatus": "Accepted",
                        "interviewType": "On-site interview",
                        "jobType": "0",
                        "locationId": 200002114,
                        "roundId": 2,
                        "roundName": "2nd round",
                        "roundEnglishName": "2nd round",
                        "createAt": "2021-01-29T09:35:36.000Z",
                        "startTime": "2021-01-29T10:00:00.000Z",
                        "duration": 30,
                        "interviewFeedbackUrl": "https://staging003.mokahr.com/api/outer/ats-interview/interview/interview-applications/exportPdf/withKey?sign=63e0ef16f4e98d56dedca33c83e2cec9&appSecret=dc07abc6-ad14-4fa6-ba4a-51bf83a0e343&applicationId=200012943&userId=&orgId=sdicfund&timestamp=1626263174366",
                        "locationCityId": 310101,
                        "locationCountry": "中国",
                        "locationAddress": "上海City 黄浦District 黄浦江",
                        "stageId": 200000087,
                        "cancelReason": null,
                        "signInStatus": null,
                        "locationInfo": null,
                        "meetingRoomId": null,
                        "meetingRoomName": null,
                        "interviewArranger": {
                            "name": "简彦明",
                            "email": "jianyanming@mokahr.com",
                            "employeeId": "",
                            "phone": null,
                            "number": null
                        },
                        "interviewerFeedbacks": [
                            {
                                "interviewer": {
                                    "name": "张乔",
                                    "employeeId": "",
                                    "id": 200000317,
                                    "email": "zhangqiao@mokahr.com"
                                },
                                "resultName": " Satisfaction",
                                "resultType": 1,
                                "feedback": "综合评价",
                                "participated": "已填写反馈",
                                "feedbackTemplateResult": null,
                                "items": null
                            }
                        ]
                    },
                    {
                        "noInterview": false,
                        "applicationId": 200012943,
                        "groupInterviewId": 200003355,
                        "groupId": "d50dca4d81364ca0a2d3f6a0d91f118a245e3afbe8f74a63bd45493b302f7fb1",
                        "status": "Cancelled",
                        "CandidateAttendStatus": "No feedback",
                        "interviewType": "On-site interview",
                        "jobType": "0",
                        "locationId": 200002114,
                        "roundId": 2,
                        "roundName": "2nd round",
                        "roundEnglishName": "2nd round",
                        "createAt": "2021-02-01T11:33:43.000Z",
                        "startTime": "2021-02-01T12:00:00.000Z",
                        "duration": 30,
                        "interviewFeedbackUrl": "https://staging003.mokahr.com/api/outer/ats-interview/interview/interview-applications/exportPdf/withKey?sign=63e0ef16f4e98d56dedca33c83e2cec9&appSecret=dc07abc6-ad14-4fa6-ba4a-51bf83a0e343&applicationId=200012943&userId=&orgId=sdicfund&timestamp=1626263174366",
                        "locationCityId": 310101,
                        "locationCountry": "中国",
                        "locationAddress": "上海City 黄浦District 黄浦江",
                        "stageId": 200000087,
                        "cancelReason": null,
                        "signInStatus": null,
                        "locationInfo": null,
                        "meetingRoomId": null,
                        "meetingRoomName": null,
                        "interviewArranger": {
                            "name": "简彦明",
                            "email": "jianyanming@mokahr.com",
                            "employeeId": "",
                            "phone": null,
                            "number": null
                        },
                        "interviewerFeedbacks": [
                            {
                                "interviewer": {
                                    "phone": "15565761890",
                                    "name": "马田",
                                    "employeeId": "",
                                    "id": 200000188,
                                    "email": "matian@sdicfund.com"
                                },
                                "participated": "未填写反馈",
                                "resultName": null,
                                "resultType": null,
                                "feedback": null,
                                "feedbackTemplateResult": null,
                                "items": null
                            }
                        ]
                    },
                    {
                        "noInterview": true,
                        "applicationId": 200012943,
                        "createAt": "2021-02-01T12:23:01.000Z",
                        "interviewFeedbackUrl": "https://staging003.mokahr.com/api/outer/ats-interview/interview/interview-applications/exportPdf/withKey?sign=63e0ef16f4e98d56dedca33c83e2cec9&appSecret=dc07abc6-ad14-4fa6-ba4a-51bf83a0e343&applicationId=200012943&userId=&orgId=sdicfund&timestamp=1626263174366",
                        "cancelReason": null,
                        "groupInterviewId": null,
                        "groupId": null,
                        "status": null,
                        "CandidateAttendStatus": null,
                        "signInStatus": null,
                        "interviewType": null,
                        "jobType": null,
                        "locationId": null,
                        "locationInfo": null,
                        "meetingRoomId": null,
                        "meetingRoomName": null,
                        "roundId": null,
                        "roundName": null,
                        "roundEnglishName": null,
                        "startTime": null,
                        "duration": null,
                        "locationCityId": null,
                        "locationCountry": null,
                        "locationAddress": null,
                        "stageId": null,
                        "interviewArranger": null,
                        "interviewerFeedbacks": [
                            {
                                "interviewer": {
                                    "phone": "13480783214",
                                    "name": "houlei",
                                    "employeeId": "",
                                    "id": 200012438,
                                    "email": "houlei@mokahr.com"
                                },
                                "resultName": " Satisfaction",
                                "resultType": 1,
                                "feedback": "None面试反馈",
                                "feedbackTemplateResult": null,
                                "items": null,
                                "participated": null
                            }
                        ]
                    },
                    {
                        "noInterview": true,
                        "applicationId": 200012943,
                        "createAt": "2021-04-19T06:00:13.000Z",
                        "interviewFeedbackUrl": "https://staging003.mokahr.com/api/outer/ats-interview/interview/interview-applications/exportPdf/withKey?sign=4917ef78e9becbc120cd1a3a9947b554&appSecret=dc07abc6-ad14-4fa6-ba4a-51bf83a0e343&applicationId=200012943&userId=&orgId=sdicfund&timestamp=1626263174367",
                        "cancelReason": null,
                        "groupInterviewId": null,
                        "groupId": null,
                        "status": null,
                        "CandidateAttendStatus": null,
                        "signInStatus": null,
                        "interviewType": null,
                        "jobType": null,
                        "locationId": null,
                        "locationInfo": null,
                        "meetingRoomId": null,
                        "meetingRoomName": null,
                        "roundId": null,
                        "roundName": null,
                        "roundEnglishName": null,
                        "startTime": null,
                        "duration": null,
                        "locationCityId": null,
                        "locationCountry": null,
                        "locationAddress": null,
                        "stageId": null,
                        "interviewArranger": null,
                        "interviewerFeedbacks": [
                            {
                                "interviewer": {
                                    "name": "简彦明",
                                    "employeeId": "",
                                    "id": 200001549,
                                    "email": "jianyanming@mokahr.com"
                                },
                                "resultName": " Satisfaction",
                                "resultType": 1,
                                "feedback": "",
                                "feedbackTemplateResult": {
                                    "description": "带系数",
                                    "id": 410004382,
                                    "items": [
                                        {
                                            "calcScoreType": "total",
                                            "description": "",
                                            "resultScore": 2,
                                            "subjects": [
                                                {
                                                    "arrangeType": 0,
                                                    "description": "",
                                                    "isRequired": false,
                                                    "needReason": true,
                                                    "result": 1,
                                                    "scoreType": 5,
                                                    "title": "第一个题目",
                                                    "type": 1
                                                },
                                                {
                                                    "arrangeType": 0,
                                                    "description": "",
                                                    "isRequired": false,
                                                    "needReason": false,
                                                    "result": 1,
                                                    "scoreType": 5,
                                                    "title": "第二个题目",
                                                    "type": 1
                                                }
                                            ],
                                            "title": "一般"
                                        },
                                        {
                                            "description": "没有系数,不计算得分",
                                            "subjects": [
                                                {
                                                    "arrangeType": 0,
                                                    "description": "",
                                                    "isRequired": false,
                                                    "needReason": true,
                                                    "reason": "123",
                                                    "result": 1,
                                                    "scoreType": 5,
                                                    "title": "没有系数第一题",
                                                    "type": 1
                                                },
                                                {
                                                    "arrangeType": 0,
                                                    "description": "",
                                                    "isRequired": false,
                                                    "needReason": false,
                                                    "result": 1,
                                                    "scoreType": 5,
                                                    "title": "第二题",
                                                    "type": 1
                                                }
                                            ],
                                            "title": "第二个大模块"
                                        },
                                        {
                                            "calcScoreType": "avg",
                                            "description": "Average",
                                            "resultScore": 1,
                                            "subjects": [
                                                {
                                                    "arrangeType": 0,
                                                    "description": "",
                                                    "isRequired": false,
                                                    "needReason": false,
                                                    "result": 1,
                                                    "scoreType": 5,
                                                    "title": "平均第一题",
                                                    "type": 1
                                                },
                                                {
                                                    "arrangeType": 0,
                                                    "description": "",
                                                    "isRequired": false,
                                                    "needReason": false,
                                                    "result": 1,
                                                    "scoreType": 5,
                                                    "title": "平均第二题",
                                                    "type": 1
                                                }
                                            ],
                                            "title": "第三个大模块"
                                        }
                                    ],
                                    "name": " 一般评价表",
                                    "totalWeightScore": 0,
                                    "version": "1.0"
                                },
                                "items": null,
                                "participated": null
                            }
                        ]
                    }
                ],
                "shigongInfo": null,
                "examInfo": {
                    "applicationId": 200012943,
                    "exams": [
                        {
                            "applicationId": 200012943,
                            "createTime": "2021-02-01T03:36:38.000Z",
                            "examAttachments": [
                                {
                                    "attachmentName": "创建录用流程并获取url接口Illustration_csx(2)(1).docx",
                                    "attachmentUrl": "https://moka-test.oss-cn-beijing.aliyuncs.com/bf7eba37-760b-4487-954f-9fa5975e272e.docx?Expires=1626266774&OSSAccessKeyId=LTAIoEXIQWCGUAZO&Signature=DZVROJ%2FFDPCfLu1%2FZ3E61PwbTcM%3D&response-content-disposition=attachment%3B%20filename%3D%25E5%2588%259B%25E5%25BB%25BA%25E5%25BD%2595%25E7%2594%25A8%25E6%25B5%2581%25E7%25A8%258B%25E5%25B9%25B6%25E8%258E%25B7%25E5%258F%2596url%25E6%258E%25A5%25E5%258F%25A3%25E8%25AF%25B4%25E6%2598%258E_csx%282%29%281%29.docx%3B%20&timestamp=1626263174386",
                                    "jobId": "0978992c-2f09-465f-926d-50c9bc38ec36",
                                    "applicationId": 200012943
                                }
                            ],
                            "jobId": "0978992c-2f09-465f-926d-50c9bc38ec36",
                            "name": "地点",
                            "result": "33",
                            "source": "手动上传考试",
                            "type": "exam"
                        }
                    ],
                    "surveys": [
                        {
                            "name": "这Yes被调",
                            "date": "2021-02-01T03:35:43.000Z",
                            "result": "ok",
                            "attachmentName": "创建录用流程并获取url接口Illustration_csx(2)(1).docx",
                            "attachmentUrl": "https://moka-test.oss-cn-beijing.aliyuncs.com/c8d0da08-3ea6-4cf2-a05a-7a18257be4c1.docx?Expires=1626266774&OSSAccessKeyId=LTAIoEXIQWCGUAZO&Signature=ighV1nN%2B3JeS%2BiCiix%2BiqGoAV6k%3D&response-content-disposition=attachment%3B%20filename%3D%25E5%2588%259B%25E5%25BB%25BA%25E5%25BD%2595%25E7%2594%25A8%25E6%25B5%2581%25E7%25A8%258B%25E5%25B9%25B6%25E8%258E%25B7%25E5%258F%2596url%25E6%258E%25A5%25E5%258F%25A3%25E8%25AF%25B4%25E6%2598%258E_csx%282%29%281%29.docx%3B%20&timestamp=1626263174386",
                            "jobId": "0978992c-2f09-465f-926d-50c9bc38ec36",
                            "applicationId": 200012943,
                            "source": null
                        }
                    ]
                },
                "jobInfo": {
                    "id": "0978992c-2f09-465f-926d-50c9bc38ec36",
                    "headcountInfo": [
                        {
                            "customFields": [],
                            "id": 200001747,
                            "jobId": "0978992c-2f09-465f-926d-50c9bc38ec36",
                            "name": "hc",
                            "number": "1111",
                            "status": "ongoing"
                        }
                    ],
                    "mjCode": "MJ000008",
                    "jobRanksInfo": [
                        {
                            "level": 2,
                            "name": "资深"
                        }
                    ],
                    "hireMode": 1,
                    "title": "测试,etc.,etc.",
                    "commitment": " Full-time",
                    "number": null,
                    "status": "open",
                    "attributeId": null,
                    "attributeName": null,
                    "label": null,
                    "category": null,
                    "jobDescription": "
                                                     <p>
                                                      赛拉开地方啦地方那可能地方
                                                     </p>
                                                     ",
                    "openedAt": "2020-08-02T16:00:00.000Z",
                    "campusSiteIds": [],
                    "campusSites": [],
                    "finishedAt": null,
                    "department": {
                        "info": {
                            "departmentName": "国投公司",
                            "departmentPath": "国投公司",
                            "id": "200031249"
                        },
                        "name": "国投公司",
                        "parentId": null
                    },
                    "stores": [],
                    "customFields": [
                        {
                            "name": "Salary",
                            "value": ""
                        },
                        {
                            "name": "Education",
                            "value": ""
                        },
                        {
                            "name": "内推金额",
                            "value": ""
                        },
                        {
                            "name": "job时间2",
                            "value": "2021-06-09"
                        },
                        {
                            "name": "所属公司",
                            "value": ""
                        },
                        {
                            "name": "job时间",
                            "value": "2019-01"
                        }
                    ],
                    "jobManager": {
                        "name": "刘江伟",
                        "phone": null,
                        "number": null,
                        "email": "liujiangwei@mokahr.com",
                        "employeeId": ""
                    },
                    "jobAssistants": [
                        {
                            "name": "简彦明",
                            "phone": null,
                            "number": null,
                            "email": "jianyanming@mokahr.com",
                            "employeeId": ""
                        }
                    ],
                    "jobHiringManagers": [],
                    "jobInterviewers": []
                }
            }
        ],
        "next": "eyJsaW1pdCI6MSwibmV4dElkIjoyMDAwMjM0ODksIm5leHRVcGRhdGVBdCI6IjIwMjEtMDctMDFUMTc6NDU6NTAiLCJvcmdJZCI6InNkaWNmdW5kIn0="
    }
    

    Request body parameter(application/json)

    Field Required Type Description
    email No string Candidate email
    applicationIds No array[integer] Application id
    invitationUpdateStatus No integer Invitation to update status
    limit No integer Number of entries per page for paging, default 20, max 20.
    next No string Paging parameter, only pass one
    phone No string Candidate phone
    offerAttachment No boolean The offer attachment download link is only responded when true, and is valid for one hour.
    applicationForm No boolean Only respond the Candidate custom registration form if it is true
    pipelineIds No array[integer] Process ids
    stageIds No array[integer] Stage ids
    updateAtStartTime No string Update start time, pass Beijing time in format YYYY-MM-DDTHH:mm:ss.sssZ
    updateAtEndTime No string Update end time, pass Beijing time in format YYYY-MM-DDTHH:mm:ss.sssZ
    needAttachment No boolean Whether to respond attachment, default is true. If true respond attachment, if false not respond attachment.
    archived No boolean Whether to archive application. true/false(true archived,false not archived)
    hireMode No integer Recruitment mode. 1/2 (1 experienced hires, 2 campus recruitment, pass others means not pass)
    applicationCreateStartTime No long Data create begin time (timestamp format, refers to the time when the application was first saved to the database)
    applicationCreateEndTime No long Data create end time(timestamp format, refers to the time when the application was first saved to the database)
    applicationAppliedAtStartTime No long Application create begin time(timestamp format, refers to the application date displayed in the system)
    applicationAppliedAtEndTime No long Application create end time(timestamp format, refers to the application date displayed in the system)

    Response

    Response body in JSON

    Field Type Description
    code integer Return code: non-200 means error
    msg string Error info
    next string If it returns, it will be automatically paginated next time it is requested
    data array Returned data details
    data[].basicInfo Object Candidate application info
    data[].basicInfo.CandidateId integer The unique id of Candidate in Moka
    data[].basicInfo.pipelineId long Recruitment process id of the application
    data[].basicInfo.stageId long Stage id of the application
    data[].basicInfo.sourceId long Source id of the application
    data[].basicInfo.applicationId integer Candidate application ID
    data[].basicInfo.aimWorkCity string Candidate preferred city
    data[].basicInfo.name string Name
    data[].basicInfo.phone string Phone number
    data[].basicInfo.prefixPhone string Country calling code
    data[].basicInfo.email string Email
    data[].basicInfo.gender string Gender, one of the values: male, female
    data[].basicInfo.birthDate string Birthdate
    data[].basicInfo.ethnic string Ethnicity
    data[].basicInfo.certificateType integer Certificate type
    Optional values are:
    1: id card
    2: Hong Kong id card
    3: Macau id card
    4:Taiwan id card
    5: Passport
    6: Other identity document
    7: Exit-Entry Permit for Travelling to and from Hong Kong and Macau (EEP)
    8: The Mainland Travel Permit for Taiwan Residents
    9: Foreigners' Work Permit
    10`:Residence Permit for Foreigner
    data[].basicInfo.citizenId string identification No.
    data[].basicInfo.nationality string Country/Region
    data[].basicInfo.nativePlace string Birthplace
    data[].basicInfo.experience integer Work experienceOptional values are:
    0:Graduates
    -1:Current students
    OthersNumber:represents specific year
    data[].basicInfo.skill string Skill
    data[].basicInfo.awards string Awards
    data[].basicInfo.personalInterests string Hobby
    data[].basicInfo.lastWorkedJobTitle string Current position
    data[].basicInfo.graduateDate string Graduation time
    data[].basicInfo.personal string Self- description
    data[].basicInfo.location string Location,such as Beijing
    data[].basicInfo.academicDegree string Highest degree, one of the followings: Bachelor, Master, Doctor, Senior high school, Junior college, Technical secondary school, MBA, Others
    data[].basicInfo.lastCompany string Recent company,optional values are:nullno recent company,xxxServed company name
    data[].basicInfo.lastSpeciality string Recent graduate major
    data[].basicInfo.industry string Industry
    data[].basicInfo.forwardIndustry string Preferred industry
    data[].basicInfo.startFrom string On-duty time
    data[].basicInfo.salary string Current salary
    data[].basicInfo.aimSalary string Preferred salary
    data[].basicInfo.forwardLocation string Preferred city
    data[].basicInfo.ethnicCode integer Ethnicity code(null if Ethnicity is empty, see attachment for code details)
    data[].basicInfo.nativePlaceCode integer Birthplace code (null if native place is empty, see attachment for code details)
    data[].basicInfo.nationalityCode integer Nationality code(null if nationality is empty, see attachment for code details)
    data[].basicInfo.genderCode integer Gender code(null if gender is empty, see attachment for code details)
    data[].basicInfo.academicDegreeCode integer Recent graduate major
    data[].basicInfo.lastUpdate string Update resume time
    data[].basicInfo.blacklistTags string Blacklist tag(only in blacklist talent pool)
    data[].basicInfo.blacklistDetail string Blacklist reason(only in blacklist talent pool)
    data[].basicInfo.married string Marital status
    Optional values are:'Married'
    'Single'
    'Divorced'
    'Widowed'
    'CIVILUNION'
    'COHABITATING'
    'MARRIED'
    'DIVORCED'
    'ENGAGED'
    'SEPARATED'
    'SINGLE'
    'WIDOWED'
    data[].basicInfo.political string Political status
    data[].basicInfo.customFields array Custom field list
    data[].basicInfo.customFields[].builtinInfoId Long Locate the custom information and its module, such as which specific work experience or education experience corresponds to a certain custom information, etc.
    data[].basicInfo.customFields[].customFieldId Long Custom fieldID
    data[].basicInfo.customFields[].name String Custom field name
    data[].basicInfo.customFields[].value Booleanor*String* Custom field value,这个根据Field typeResponse不同Type的Value
    data[].basicInfo.customFields[].now String This field exists when the custom field is a time period, indicating whether the end time is "today". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    data[].basicInfo.customFields[].section String Field attribution, the declaration is a custom field under which of the followings custom field: basicInfo Basic information jobIntention Preferred jobexperienceInfo Work experience educationInfo Educational background practiceInfo Intern experienceprojectInfo Project experience languageInfo Language skill selfDescription Self- description awardInfo Awards
    data[].basicInfo.customFields[].index number Index. For modules with multiple data such as experienceInfo, educationInfo or custom modules (e.g. emergency contacts), index indicates that this field is the custom field information of which piece of data.
    data[].basicInfo.customFields[].codes array['String'] The code of options value of choice question
    data[].basicInfo.label array Candidate tag
    data[].basicInfo.label[].id integer Tag id
    data[].basicInfo.label[].label string Tag name
    data[].basicInfo.label[].type number TagType
    Optional values are:
    1:Smart tag
    2:Manual tag
    data[].basicInfo.educationInfo[] array Education experience
    data[].basicInfo.educationInfo[].id string Education experience id
    data[].basicInfo.educationInfo[].startDate string School start date,accurate to month. , such as2010-09, 2008
    data[].basicInfo.educationInfo[].endDate string School end date,accurate to month. , such as2010-09, 2008
    data[].basicInfo.educationInfo[].now boolean Identifies whether the end time is "to date". When the end time is now,now=true, the value of endDate may be any value at this time, just ignore endDate
    data[].basicInfo.educationInfo[].school string School
    data[].basicInfo.educationInfo[].speciality string Major
    data[].basicInfo.educationInfo[].academicDegree string Degree, one of the followings: Bachelor, Master, Doctor, Senior high school, Junior college, Technical secondary school, MBA, Others
    data[].basicInfo.awardInfo[] array Awards
    data[].basicInfo.awardInfo[].id string Awards id
    data[].basicInfo.awardInfo[].awardDate string Winning date
    data[].basicInfo.awardInfo[].awardName string Award name
    data[].basicInfo.projectInfo array Project experience
    data[].basicInfo.projectInfo[].id string Project experience id
    data[].basicInfo.projectInfo[].startDate string Project start date,accurate to month. , such as2010-09, 2008
    data[].basicInfo.projectInfo[].endDate string Project end date,accurate to month. , such as2010-09, 2008
    data[].basicInfo.projectInfo[].now boolean Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    data[].basicInfo.projectInfo[].projectName string Project name
    data[].basicInfo.projectInfo[].title string Job title and duty
    data[].basicInfo.projectInfo[].projectDescription string Project description
    data[].basicInfo.projectInfo[].responsibilities string Responsibility in project
    data[].basicInfo.languageInfo array Language skill
    data[].basicInfo.languageInfo[].id string Language skill id
    data[].basicInfo.languageInfo[].language string Language type
    data[].basicInfo.languageInfo[].level string Proficiency
    data[].basicInfo.languageInfo[].listenAndSpeak string Listening and speaking
    data[].basicInfo.languageInfo[].readAndWrite string Reading and writing
    data[].basicInfo.practiceInfo[] array Intern experience
    data[].basicInfo.practiceInfo[].id string Intern experience id
    data[].basicInfo.practiceInfo[].startDate string Intern start time
    data[].basicInfo.practiceInfo[].endDate string Intern end time
    data[].basicInfo.practiceInfo[].company string Company name
    data[].basicInfo.practiceInfo[].title string Job title
    data[].basicInfo.practiceInfo[].location string Work location
    data[].basicInfo.practiceInfo[].industry string Industry
    data[].basicInfo.practiceInfo[].leader string Report to
    data[].basicInfo.practiceInfo[].department string Department
    data[].basicInfo.practiceInfo[].salary string Salary
    data[].basicInfo.practiceInfo[].summary string Job responsibility
    data[].basicInfo.practiceInfo[].type string Company type
    data[].basicInfo.practiceInfo[].size string Company size
    data[].basicInfo.interestSource[].id Ingeger id
    data[].basicInfo.interestSource[].name string name
    data[].basicInfo.interestSource[].email string email
    data[].basicInfo.experienceInfo[] array Work experience
    data[].basicInfo.experienceInfo[].id string Work experience id
    data[].basicInfo.experienceInfo[].startDate string Work start time,accurate to month. , such as2010-09, 2008
    data[].basicInfo.experienceInfo[].endDate string Work end time,accurate to month. , such as2010-09, 2008
    data[].basicInfo.experienceInfo[].now boolean Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    data[].basicInfo.experienceInfo[].company string Company name
    data[].basicInfo.experienceInfo[].title string Job title
    data[].basicInfo.experienceInfo[].location string Work location
    data[].basicInfo.experienceInfo[].industry string Industry
    data[].basicInfo.experienceInfo[].leader string 汇报Object
    data[].basicInfo.experienceInfo[].department string Department
    data[].basicInfo.experienceInfo[].salary string Salary
    data[].basicInfo.experienceInfo[].summary string Job responsibility
    data[].basicInfo.experienceInfo[].reasonForLeaving string Reason for resignation
    data[].basicInfo.experienceInfo[].underlingNumber string No.of subordinate
    data[].basicInfo.experienceInfo[].type string Company type
    data[].basicInfo.experienceInfo[].size string Company size
    data[].basicInfo.archived boolean Whether to archive the application
    data[].basicInfo.archivedAt string Archive application time
    data[].basicInfo.archiveReasonId integer Reason for archiveID
    data[].basicInfo.archiveReasons string Reason for archive
    data[].basicInfo.archiveReasonsDetails string Reason for archive details
    data[].basicInfo.talentPoolsList Array Candidate's talent pool
    data[].basicInfo.talentPoolsList[].talentPoolId integer Talent pool id
    data[].basicInfo.talentPoolsList[].name string Talent pool name
    data[].basicInfo.talentPoolsList[].description string Talent pool description
    data[].basicInfo.personalUrl string Personal link
    data[].basicInfo.portraitUrl string The link of Candidate's portrait is valid for 1 hour
    data[].basicInfo.standardResumeUrl string Download link of standard resume
    data[].basicInfo.resumeUrl string Download link of original resume
    data[].basicInfo.ehrCandidateExternalLink string The link of candidate details can be opened and viewed directly in the browser, and the link is valid for 14 days by default
    data[].basicInfo.invitationUpdateStatus integer Invitation to update status
    Optional values are:
    0:Not invited
    1: not update
    2: updated
    data[].basicInfo.movedAt string Stage moving time
    data[].basicInfo.createdAt string Candidate application created time
    data[].basicInfo.updatedAt string Candidate application update time
    data[].basicInfo.appliedAt string apply time
    data[].basicInfo.campusSiteId number application的Campus recruitment station Title,hireMode=2时存在
    data[].basicInfo.referrer object Referrer info
    data[].basicInfo.referrer.name string Referrer name
    data[].basicInfo.referrer.email string Referrer email
    data[].basicInfo.referrer.phone string Referrer phone
    data[].basicInfo.referrer.number string Employee No. of referrer,optional values are:null no employee No.,xxxEmployee No.
    data[].basicInfo.referrer.employeeId string Employee No. of referrer2
    data[].basicInfo.assignments[] array Referrer info
    data[].basicInfo.assignments[].assigneeId Long Referee
    data[].basicInfo.assignments[].assignerId Long Referrer
    data[].basicInfo.assignments[].result string Referral result
    data[].basicInfo.assignments[].sentAt date The time when the notification was sent to the forwarded person
    data[].basicInfo.campusSiteId integer application的Campus recruitment station id
    data[].basicInfo.sourceType integer From
    Optional values are:
    1:represents Active search
    2:represents Direct delivery
    3:represents Talent recommendation.
    data[].basicInfo.sourceList Array Source level,the group will in numerical order, such as Tier-1 source, Tier-2 level, Tier-3 level
    data[].basicInfo.sourceList[].id integer Source id (Tier-1 level doesn't exist)
    data[].basicInfo.sourceList[].name string Source name
    data[].basicInfo.sourceList[].isBuiltin number Whether the system has a built-in channel
    data[].basicInfo.hireMode integer Recruitment mode
    Optional value:
    1:experienced hires
    2:Campus recruitment
    data[].basicInfo.pipeline object application of the process
    data[].basicInfo.pipeline.name string Process name
    data[].basicInfo.pipeline.id integer Process id
    data[].basicInfo.stage object Stage
    data[].basicInfo.stage.id integer Stage id
    data[].basicInfo.stage.name string Stage name (after archiving is the stage name before archiving)
    data[].basicInfo.stage.type integer Current stage type
    Optional values are:
    100:Initial screen
    101:Offer
    102:To be onboarded
    200:Selected
    201:Interview
    202:Test
    205:No type
    206:Work trail
    data[].basicInfo.probation integer Probationary period
    data[].basicInfo.headcountId integer Onboarding HC ID
    data[].basicInfo.headcountNumber string Onboarding HC code
    data[].basicInfo.headcountName string Onboarding HC name
    data[].basicInfo.attachments array The Candidate's attachment
    data[].basicInfo.attachments[].applicationId integer Application id
    data[].basicInfo.attachments[].name string The doc. name of Candidate's attachment(with file suffix)
    data[].basicInfo.attachments[].applyFormId number
    Registration form template id
    data[].basicInfo.attachments[].size integer Candidate attachment size
    data[].basicInfo.attachments[].createTime string Attachment upload or generation time
    data[].basicInfo.attachments[].url string The download url of Candidate attachment
    data[].basicInfo.attachments[].customFieldId integer Custom attachment field ID
    data[].basicInfo.attachments[].customFieldName string Custom attachment field names
    data[].basicInfo.attachments[].type string Candidate attachment type
    Optional values are:
    Candidate_UPLOAD_ATTACHMENT Upload by candidate
    UPLOAD_PORTRAIT Candidate portrait
    HR_UPLOAD_ATTACHMENT Upload manually by HR
    HM_UPLOAD_ATTACHMENT Manual upload on the HR side
    INTERVIEW_ACCEPT Attachment of the registration form generated by the candidate accepted interview
    INTERVIEW_SIGNIN Registration form attachment generated by candidate interview sign-in
    OFFER_ACCEPT Attachment of the registration form generated by the candidate accepted offer
    MERGE_APPLICATION_ATTACHMENT Attachments generated by mergering candidates
    INVITE_UPDATE_RESUME Invite Candidates to update the registration form for resume generation
    data[].basicInfo.remarks array Candidate note
    data[].basicInfo.remarks[].creator object The creator info of note
    data[].basicInfo.remarks[].creator.name string The creator name of note
    data[].basicInfo.remarks[].creator.phone string The creator phone of note
    data[].basicInfo.remarks[].creator.email string The creator email of note
    data[].basicInfo.remarks[].creator.number string The creator's employee No. of note
    data[].basicInfo.remarks[].creator.employeeId string The creator's employee No. of note2
    data[].basicInfo.remarks[].content string Note content
    data[].basicInfo.remarks[].targets array The information of the person who mentioned by '@' in the note, which format is the same as the creator' s information
    data[].basicInfo.remarks[].isPrivate boolean Whether the not is private
    data[].basicInfo.remarks[].type string Note type: manually
    data[].basicInfo.remarks[].createdAt string Time for creating note
    data[].basicInfo.owner object Candidate owner
    data[].basicInfo.owner.name string Candidate owner name
    data[].basicInfo.owner.phone string Candidate owner phone
    data[].basicInfo.owner.email string Candidate owner email
    data[].basicInfo.owner.number string Candidate owner employee No.
    data[].basicInfo.owner.employeeId string Candidate owner employee No.2
    data[].basicInfo.idCardFrontList string Upload id card picture (portrait side)
    data[].basicInfo.idCardBackList string Upload id card picture (national emblem side)
    data[].basicInfo.idCardSignOrganization string Issuing authority of id card
    data[].basicInfo.idCardValidity string id card validity period
    customAttachmentList obj All attachments of Candidate's standard resume
    customAttachmentList.customUpload+customId ary The key of the attachment of the Candidate's standard resume is composed of customUpload (fixed string) + customid
    customAttachmentList.customUpload+customId[].attachmentName string Attachment name
    customAttachmentList.customUpload+customId[].attachmentSize number Attachment size (byte)
    customAttachmentList.customUpload+customId[].CandidateId number Candidate id
    customAttachmentList.customUpload+customId[].customId number Custom field id
    customAttachmentList.customUpload+customId[].downloadUrl string The download address will invalid in 24 hours
    customAttachmentList.customUpload+customId[].createdAt string Created time of attachment (timestamp format)
    data[].offerInfo object Offer info
    data[].offerInfo.applicationId integer Application id
    data[].offerInfo.approvalStatus string Approval status
    Optional values are:
    UNINITIATED: Uninitiated
    INPROGRESS: In process
    APPROVED: Approved
    REJECTED: Denied
    RECALLED: Withdrawn
    data[].offerInfo.status string Optional values are:
    notCreated: To be created
    pending : To be sent
    sent:Pending
    accepted : Accepted
    rejected: Rejected
    data[].offerInfo.finishedAt string Accept offer time
    data[].offerInfo.checkinDate string Estimated start time
    data[].offerInfo.creator object Offer creator info
    data[].offerInfo.creator.name string Offer creator name
    data[].offerInfo.creator.email string Offer creator email
    data[].offerInfo.creator.phone string offer creator phone number
    data[].offerInfo.creator.number string offerCreator employee No.
    data[].offerInfo.creator.employeeId string offerCreator employee No.2
    data[].offerInfo.attachment array Offer attachment list
    data[].offerInfo.attachment[].name string Offer attachment name
    data[].offerInfo.attachment[].size number Offer attachment size
    data[].offerInfo.attachment[].downloadUrl string The offer attachment download link is valid for one hour.
    data[].offerInfo.attachment[].attachmentType integer Offer attachment type
    Optional values are:
    0:Attachment for Candidate
    1:Attachments sent to approvers
    2:Offer attachment
    data[].offerInfo.offerHistoryList array offer sending record
    data[].offerInfo.offerHistoryList[].sentAt string offer sending time
    data[].offerInfo.offerHistoryList[].sentUser object offer sender info
    data[].offerInfo.offerHistoryList[].sentUser.name string offer sender name
    data[].offerInfo.offerHistoryList[].sentUser.email string offer sender email
    data[].offerInfo.offerHistoryList[].sentUser.phone string offer sender phone number
    data[].offerInfo.offerHistoryList[].sentUser.number string offer sender employee No.
    data[].offerInfo.offerHistoryList[].sentUser.employeeId string offer sender employee No.2
    data[].offerInfo.offerHistoryList[].status string Accepted: acceptedRejected: rejected
    data[].offerInfo.offerHistoryList[].operationType integer Operation type
    Optional values are:
    1:Candidate
    2:Manual mark by HR
    3:API mark
    data[].offerInfo.hcInfo object The headcount info selected by offer
    data[].offerInfo.hcInfo.id integer The headcount id selected by offer
    data[].offerInfo.hcInfo.number string The headcount code selected by offer
    data[].offerInfo.hcInfo.name string The headcount name selected by offer
    data[].offerInfo.hcInfo.status string The headcount status selected by offer
    data[].offerInfo.hcInfo.ownerEmployeeId string The headcount selected by the offer is responsible for the manual number
    data[].offerInfo.hcInfo.department object Offer selected Headcount department information
    data[].offerInfo.hcInfo.department.departmentName string Department name
    data[].offerInfo.hcInfo.department.departmentCode string Department code
    data[].offerInfo.hcInfo.department.departmentPath string Department path
    data[].offerInfo.hcInfo.department.parentAPICode string Upper-department code
    data[].offerInfo.hcInfo.manager object Information about the person in charge of the Headcount selected by the offer
    data[].offerInfo.hcInfo.manager.name string Name
    data[].offerInfo.hcInfo.manager.email string Email
    data[].offerInfo.hcInfo.manager.phone string Phone number
    data[].offerInfo.hcInfo.manager.number string Employee No.
    data[].offerInfo.hcInfo.manager.employeeId string Employee No.2
    data[].offerInfo.locationString string Onboard Location
    data[].offerInfo.dutyLevelName string Position level name
    data[].offerInfo.createdAt string Offer creation time
    data[].offerInfo.finishedAt string Offer acceptance time
    data[].offerInfo.jobRankType string Job level type
    data[].offerInfo.jobRankLevel number Job level
    data[].offerInfo.jobRankName string Job level title
    data[].offerInfo.salaryType integer Salary type
    Optional value
    1: Hourly salary
    2: Daily salary
    3:Hourly salary
    4:Annual salary
    data[].offerInfo.salaryNumber string Salary value
    data[].offerInfo.department object onboarded department info
    data[].offerInfo.department.id string onboarded department id
    data[].offerInfo.department.departmentName string Onboarding department name
    data[].offerInfo.department.departmentCode string onboarded department code
    data[].offerInfo.department.departmentPath string The full path of onboarding department
    data[].offerInfo.department.parentAPICode string Parent department code
    data[].offerInfo.customFields array Offer custom field
    data[].offerInfo.customFields[].name string Offer custom field name
    data[].offerInfo.customFields[].value string Offer custom field value
    data[].offerInfo.customFields[].codes string Custom code for multiple choice questions (valid for multiple choice questions with code)
    data[].offerInfo.attachmentList array Offer attachment list
    data[].offerInfo.attachmentList[].name string Offer attachment name
    data[].offerInfo.attachmentList[].size number Offer attachment size
    data[].offerInfo.attachmentList[].downloadUrl string The download link of offer attachment,only valid for 1 hour
    data[].offerInfo.attachmentList[].attachmentType number Offer attachment type
    Optional values are:
    0:Attachment for Candidate
    1:Attachment sent to approver
    2:Offer attachment
    data[].interviewInfo array Interview info
    data[].interviewInfo[].applicationId number Application id
    data[].interviewInfo[].groupInterviewId number Interview id
    data[].interviewInfo[].groupId string Interview group id
    data[].interviewInfo[].noInterview boolean Whether there is no interview feedback
    data[].interviewInfo[].status string Interview status:Cancelled, unfinished, Finished
    data[].interviewInfo[].attendStatus string CandidateInterview status:No feedback, No show, Rejected, Accepted
    data[].interviewInfo[].signInStatus string Interview check-in status: signed in, not signed in
    data[].interviewInfo[].jobType string Video interview package type eg: 'technical', 'non-technical', etc.
    data[].interviewInfo[].interviewType integer Interview type. 1:On-site interview 3:Phone interview 4、Video interview
    data[].interviewInfo[].jobType string Video interview package -> When the interview type is video interview, this item may have a value
    data[].interviewInfo[].locationId integer Interview location ID
    data[].interviewInfo[].locationCountry string Interview location -Country
    data[].interviewInfo[].locationAddress string Interview location -Full address
    data[].interviewInfo[].locationCityId integer Interview location -CityID
    data[].interviewInfo[].meetingRoomId integer Meeting room ID
    data[].interviewInfo[].meetingRoomName string Meeting room title
    data[].interviewInfo[].participated string Interview Feedback Category -> Interview Not Conducted, Feedback Filled, Feedback Not Filled
    data[].interviewInfo[].roundId integer Interview roundsID
    data[].interviewInfo[].roundName string Interview rounds title
    data[].interviewInfo[].roundEnglishName string Round English title
    data[].interviewInfo[].createAt string Time for creating interview
    data[].interviewInfo[].startTime string Interview start time
    data[].interviewInfo[].duration integer Interview duration
    data[].interviewInfo[].interviewArranger object Interview IC
    data[].interviewInfo[].interviewArranger.name string Interview IC name
    data[].interviewInfo[].interviewArranger.email string Interview IC email
    data[].interviewInfo[].interviewArranger.phone string Interview IC phone number
    data[].interviewInfo[].interviewArranger.number string Interview IC employee No.
    data[].interviewInfo[].interviewArranger.employeeId string Interview IC employee No. 2
    data[].interviewInfo[].satisfactionRecord object Information about interview satisfaction
    data[].interviewInfo[].satisfactionRecord.sendTime string The sending time of interview satisfaction evaluation
    data[].interviewInfo[].satisfactionRecord.isAnonymous Boolean Whether to anonymously evaluate
    data[].interviewInfo[].satisfactionRecord.content string Evaluation content, json format: {"customFields":[{"options":[//options"option 1","option 2","option 3"],"subTitle":"single-choice question description 111", //Subtitle "title": "Multiple-choice question", //Title "type": "single", //Type single multiple-choice question, mutiSelect multiple-response question, describe description question "value": "0"// Single choice value (subscript starts from 0)},{"options":["option 11","option 22","option 33","option 44"],"subTitle":"Multiple response description 333 ","title":"multiple response","type":"mutiSelect",//multiple response "value":"[0,2,1]"//multiple response value (subscript starts from 0, Unordered)},{"subTitle":"Description question description 4444","title":"Description question","type":"describe",//Description question "value":"Description question result"//Description The value of the title}],"essaySectionTitle":"Other evaluations",//Other evaluations (can be displayed through the switch configuration when setting the evaluation table) "essayValue":"Other evaluation results"//The corresponding value of other evaluations}
    data[].interviewInfo[].satisfactionRecord.satisfactionDimensions array array of dimensions (interview process)
    data[].interviewInfo[].satisfactionRecord[].name string Dimension name
    data[].interviewInfo[].satisfactionRecord[].name string Dimension corresponded value
    data[].interviewInfo[].interviewerFeedbacks array Interviewer feedback list
    data[].interviewInfo[].interviewerFeedbacks[].interviewer object Interviewer info
    data[].interviewInfo[].interviewerFeedbacks[].interviewer.name string Interviewer name
    data[].interviewInfo[].interviewerFeedbacks[].interviewer.email string Interviewer email
    data[].interviewInfo[].interviewerFeedbacks[].interviewer.phone string Interviewer phone
    data[].interviewInfo[].interviewerFeedbacks[].interviewer.employeeId string Interviewer employee No.2
    data[].interviewInfo[].interviewerFeedbacks[].interviewer.number string Interviewer employee No.
    data[].interviewInfo[].interviewerFeedbacks[].resultName string Interview feedback
    data[].interviewInfo[].interviewerFeedbacks[].resultType integer Type of interview feedback result 0: Dissatisfied 1: Satisfaction
    data[].interviewInfo[].interviewerFeedbacks[].feedback string Interview feedback content
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTime string Interview feedback time
    data[].interviewInfo[].interviewerFeedbacks[].totalWeightScore string Weight interview evaluation form total score
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult array Information of interview evaluation
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].title string Module title
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].description string Template description
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].result string Module score
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].calcScoreType string avg: Average, total: Total score (valid when type=1 )
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects array Information for each sub-question under the module
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects[].type integer Question type
    Optional value:
    1:Scoring question
    2: Multiple choice
    3: Description
    4: Multiple response
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects[].title string Sub-question title
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects[].description string Sub-question description
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects[].result integer Sub-question results: Scoring title is the value of the selected score; single-choice question is the index value of the option, starting from 0; description title is the string of description; multiple-choice question is an array of index values. type=2 single-choice question, return Value is "result": 0, question type=4 multiple-choice question return value is "result": [1,2]
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects[].reason string Score review
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects[].options array Array of option strings (valid when type is 2)
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects[].ratio double Common evaluation form coefficient
    data[].interviewInfo[].interviewerFeedbacks[].feedbackTemplateResult[].subjects[].weight integer Weights
    data[].interviewInfo[].interviewFeedbackUrl string The interview feedback summary file (only includes the interview feedback generated by the candidate under this application) download link, HTTP GET request to this URL can download the interview feedback summary file, this link is time-sensitive, the expiration time is 1 hour, and needs to be received Download and save on server as soon as possible after request
    data[].shigongInfo object Work trial info
    data[].shigongInfo.applicationId integer Application id
    data[].shigongInfo.shigongs array Work trial info
    data[].shigongInfo.shigongs[].startTime string Work trial start time
    data[].shigongInfo.shigongs[].endTime string Work trial end time
    data[].shigongInfo.shigongs[].location string Work trial location
    data[].shigongInfo.shigongs[].manager object Work trial IC info
    data[].shigongInfo.shigongs[].manager.name string Work trial IC name
    data[].shigongInfo.shigongs[].manager.email string Work trial IC email
    data[].shigongInfo.shigongs[].manager.phone string Work trial IC Phone number
    data[].shigongInfo.shigongs[].manager.number string Work trial IC employee No.
    data[].shigongInfo.shigongs[].manager.employeeId string Work trial IC employee No. 2
    data[].shigongInfo.shigongs[].shigongStatus string Work trial status
    Not scheduled
    Waiting feedback
    Satisfaction
    Dissatisfied
    data[].shigongInfo.shigongs[].feedback string Work trial feedback info
    data[].shigongInfo.shigongs[].protocolStatus string Work trial agreement status
    data[].shigongInfo.shigongs[].signStatus string Check-in status
    data[].examInfo object Exam info
    data[].examInfo.applicationId integer Application id
    data[].examInfo.exams array Exam&assessment info
    data[].examInfo.exams[].name string Exam&assessment name
    data[].examInfo.exams[].createTime string Exam start time
    data[].examInfo.exams[].type string Exam&assessment Type
    exam
    evaluation
    data[].examInfo.exams[].source string Exam&assessment agency
    data[].examInfo.exams[].result String Exam&assessment result
    data[].examInfo.exams[].detailResult string Exam&assessment details result
    data[].examInfo.exams[].examAttachments array Exam&assessment attachment
    data[].examInfo.exams[].examAttachments[].attachmentName string Exam&assessment Attachment name
    data[].examInfo.exams[].examAttachments[].attachmentUrl string Exam&assessment attachment link
    data[].examInfo.exams[].examAttachments[].jobId string The position id that initiated exam&assessment
    data[].examInfo.exams[].examAttachments[].applicationId string The application id that initiated exam&assessment
    data[].examInfo.exams[].examAttachments[].result string Exam&assessment result
    data[].examInfo.exams[].examAttachments[].detailResult string Exam&assessment details result
    data[].examInfo.exams[].reportLinks array Exam&assessment report link
    data[].examInfo.exams[].reportLinks[].applicationId string The application id that initiated exam&assessment
    data[].examInfo.exams[].reportLinks[].jobId string The position id that initiated exam&assessment
    data[].examInfo.exams[].reportLinks[].name string Exam&assessment Title
    data[].examInfo.exams[].reportLinks[].reportLink string Exam&assessment report link
    data[].examInfo.exams[].reportLinks[].result string Exam&assessment result
    data[].examInfo.exams[].reportLinks[].detailResult string Exam&assessment details result
    data[].examInfo.exams[].reportLinks[].type string Exam type (Exam or assessment)
    data[].examInfo.surveys array Pre-employment screening (PES) info
    data[].examInfo.surveys[].name string Pre-employment screening (PES) name
    data[].examInfo.surveys[].date string Pre-employment screening (PES) date
    data[].examInfo.surveys[].source string Pre-employment screening (PES) agency
    data[].examInfo.surveys[].result string Pre-employment screening (PES) result
    data[].examInfo.surveys[].url string The link of PES report
    data[].examInfo.surveys[].attachmentName string Pre-employment screening (PES) attachment
    data[].examInfo.surveys[].attachments[] array PES multiple attachments (the new version of the single attachment and multiple attachments are in this attachment collection. The original single attachment results are only used for historical compatibility)
    data[].examInfo.surveys[].attachments[].url string The link of PES report
    data[].examInfo.surveys[].attachments[].attachmentName string Attachment name
    data[].jobInfo object Position info
    data[].jobInfo.id string Position id
    data[].jobInfo.mjCode string Position No.,publishing to external systems remains the same
    data[].jobInfo.title string Job title
    data[].jobInfo.department object Department
    data[].jobInfo.department.info object Department details info
    data[].jobInfo.department.info.departmentCode string Department code,department id in the client system
    data[].jobInfo.department.info.id string DepartmentID,department id in the Moka system
    data[].jobInfo.department.info.departmentName string Department name
    data[].jobInfo.department.info.departmentPath string The full path of the department where the position is located, from superior to subordinate, separated by /
    data[].jobInfo.department.name string Parent department name
    data[].jobInfo.department.parentId string Parent department ID,department id in the Moka system
    data[].jobInfo.commitment string Employment type
    Optional value:
    Full-time
    Part-time
    Internship
    Other
    data[].jobInfo.stores array Store name
    data[].jobInfo.number number No.of vacancy
    data[].jobInfo.status string Position status
    Optional value
    open:open
    closed:Close
    data[].jobInfo.jobRanksInfo[].name string Job level name
    data[].jobInfo.jobRanksInfo[].type string Job level type
    data[].jobInfo.jobRanksInfo[].level number Job level grade
    data[].jobInfo.priorityId integer Job priority id
    data[].jobInfo.priorityName string Job priority title
    data[].jobInfo.competencyType string Function type
    data[].jobInfo.category string Job category
    data[].jobInfo.jobDescription string Job description
    data[].jobInfo.customFields array job custom field
    data[].jobInfo.customFields[].name string job custom field name
    data[].jobInfo.customFields[].value string job custom field value
    data[].jobInfo.startTime string Start recruitment time
    data[].jobInfo.completeTime string Estimated finish time
    data[].jobInfo.jobManager object Recruiter
    data[].jobInfo.jobManager.name string Recruiter name
    data[].jobInfo.jobManager.phone string The phone of position leader
    data[].jobInfo.jobManager.email string Position leader email
    data[].jobInfo.jobManager.number string Position leader phone employee No.
    data[].jobInfo.jobManager.employeeId string Position leader phone employee No.2
    data[].jobInfo.jobAssistants array Position assistant
    data[].jobInfo.jobAssistants[].name string Position assistant name
    data[].jobInfo.jobAssistants[].phone string Position assistant phone
    data[].jobInfo.jobAssistants[].email string Position assistant email
    data[].jobInfo.jobAssistants[].number string Position assistant employee No.
    data[].jobInfo.jobAssistants[].employeeId string Position assistant employee No.2
    data[].jobInfo.jobHiringManager array Hiring manager
    data[].jobInfo.jobHiringManager[].name string Hiring manager name
    data[].jobInfo.jobHiringManager[].email string Hiring manager email
    data[].jobInfo.jobHiringManager[].phone string Hiring manager phone
    data[].jobInfo.jobHiringManager[].number string Hiring manager employee No.
    data[].jobInfo.jobHiringManager[].employeeId string Hiring manager employee No.2
    data[].jobInfo.jobInterviewers array Interviewer
    data[].jobInfo.jobInterviewers[].name string Interviewer name
    data[].jobInfo.jobInterviewers[].email string Interviewer email
    data[].jobInfo.jobInterviewers[].phone string Interviewer phone
    data[].jobInfo.jobInterviewers[].number string Interviewer employee No.
    data[].jobInfo.jobInterviewers[].employeeId string Interviewer employee No.2
    data[].jobInfo.campusSiteIds array Campus recruitment station id
    data[].jobInfo.campusSites array Campus recruitment station
    data[].jobInfo.hireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    data[].jobInfo.headcountInfo array HC information associated with the position
    data[].jobInfo.headcountInfo[].id number Headcount ID
    data[].jobInfo.headcountInfo[].number string Headcount code
    data[].jobInfo.headcountInfo[].name string Headcount name
    data[].jobInfo.headcountInfo[].status string Headcount status
    data[].jobInfo.headcountInfo[].customFields[].name string HCCustom field name
    data[].jobInfo.headcountInfo[].customFields[].value string HCCustom field value
    data[].activities.operator object Operator info
    data[].activities.operator.id integer Operator id in Moka
    data[].activities.operator.name string Operator name
    data[].activities.operator.email string Operator infoEmail
    data[].activities.operator.phone string Operator info Phone number
    data[].activities.operator.number string Operator No.1
    data[].activities.operator.employeeId string Operator No.2
    data[].activities.type string 日志Type
    Optional values are:
    ADD_Candidate: Add candidate
    MOVE_STAGE: Moving stage
    data[].activities.createAt string Event start time
    data[].activities.toStageName string Stage name after moving
    data[].activities.fromStageName string Stage name before moving
    data[].activities.toStageId integer Stage id after moving
    data[].activities.fromStageId integer Stage id before moving
    data[].activities.source string applicationFrom
    data[].customstyleAttachments object Custom application registration form
    data[].customstyleAttachments.type string attachmentType固定doc
    data[].customstyleAttachments.createTime string Time string
    data[].customstyleAttachments.customFieldName string CustomAttachment name
    data[].customstyleAttachments.url string Download link of attachment

    Get all candidate info of each stages

    This interface only returns basic information and does not return attachment links.

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/data/moved_applications
    

    > Response example

    [
        {
            "applicationId": 23191,
            "CandidateId": 12552,
            "moved_at": "2019-01-25T10:25:36.000Z",
            "name": "曹大帅",
            "phone": "15013186607",
            "email": "1170616425@qq.com",
            "gender": "Male",
            "birthYear": 1991,
            "birthDate": "2020-03-17T00:00:00.000Z",
            "nationality": null,
            "experience": 2,
            "ethnic": null,
            "citizenId": null,
            "nativePlace": "",
            "location": "湖北-武汉",
            "source": "智联",
            "sourceType": 2,
            "academicDegree": "Master degree",
            "lastSpeciality": "人力资源管理",
            "married": "Single",
            "jobCommitment": " Full-time",
            "hireMode": 1,
            "departmentCode": null,
            "parentDepartmentCode": null,
            "resumeKey": "1f0f3d5f-17d4-4e21-a135-a8dbb8648297.html",
            "stageName": "用人Department筛选",
            "stageType": 200,
            "nativePlaceCode": null,
            "nationalityCode": null,
            "genderCode": 0,
            "academicDegreeCode": 5,
            "ethnicCode": null,
            "job": {
                "title": "5432154321543215432154321v543215432154321",
                "department": null,
                "departmentCode": null,
                "parentDepartmentCode": null,
                "competencyType": null,
                "jobId": "ea932057-2637-4408-98a2-a3366b4ade14"
            },
            "jobManager": {
                "name": "Moka小助手",
                "email": "why947608878@163.com",
                "phone": "18610778251",
                "employeeId": "01"
            },
            "resumeUrl": "",
            "educationInfo": [
                {
                    "id": 35764,
                    "startDate": "2014-09",
                    "endDate": "2017-06",
                    "school": "长江大学",
                    "speciality": "农业经济管理",
                    "academicDegree": "Master degree",
                    "startTime": 1409500800,
                    "endTime": 1496246400,
                    "now": false
                },
                {
                    "id": 35765,
                    "startDate": "2010-09",
                    "endDate": "2014-06",
                    "school": "长江大学",
                    "speciality": "人力资源管理",
                    "academicDegree": "Bachelor degree",
                    "startTime": 1283270400,
                    "endTime": 1401552000,
                    "now": false
                }
            ],
            "experienceInfo": [],
            "awardInfo": [],
            "customFields": [],
            "referrer": null,
            "headcountInfo": [],
            "jobRanksInfo": [],
            "offer": null,
            "projectInfo": [
                {
                    "startDate": "2014-06",
                    "endDate": "2014-09",
                    "projectName": "土地流转确权工作",
                    "title": "",
                    "projectDescript": "1.了解荆州City农村人口占全City的比for example. \r\n2.了解荆州City农村土地流转的面积. \r\n3.了解荆州City土地流转的模式. \r\n4.了解荆州City农村农户进行土体流转出现的问题和法律纠纷. \r\n5.整理相关文献资料,利用搜集到的土地流转资料撰写论文,总结分析出农户土地流转出现的问题,并找到其应对的措施. ",
                    "responsibilities": "深入到农村基层,通过与农户的交谈和问卷调研方式,了解荆州City农村土地的流转情况,土地流转的面积、模式,考察荆州City农村居民土地流转出现的问题,以及它们的解决方式,另外考察当地政府对土地流转的支持力度. ",
                    "startTime": 1401552000,
                    "endTime": 1409500800,
                    "now": false
                }
            ],
            "languageInfo": [],
            "invitationUpdateStatus": 1
        },
        {
            "applicationId": 44803,
            "CandidateId": 34339,
            "moved_at": "2019-01-16T07:56:44.000Z",
            "name": "张五",
            "phone": "15811077349",
            "email": "sgurr@163.com",
            "gender": "Male",
            "birthYear": 1989,
            "nationality": null,
            "experience": null,
            "ethnic": null,
            "citizenId": null,
            "nativePlace": "",
            "location": null,
            "source": "智联",
            "sourceType": 1,
            "academicDegree": "Bachelor degree",
            "lastSpeciality": "人力资源管理",
            "married": null,
            "jobCommitment": " Full-time",
            "hireMode": 1,
            "departmentCode": "1",
            "parentDepartmentCode": null,
            "resumeKey": null,
            "stageName": "新增offer型阶段",
            "stageType": "101",
            "nativePlaceCode": null,
            "nationalityCode": null,
            "genderCode": 0,
            "academicDegreeCode": 4,
            "ethnicCode": null,
            "job": {
                "title": "qa",
                "department": "马蜂窝",
                "departmentCode": "1",
                "parentDepartmentCode": null,
                "competencyType": null,
                "departmentPath": "马蜂窝",
                "jobId": "ea932057-2637-4408-98a2-a3366b4ade14"
            },
            "jobManager": {
                "name": "安涛",
                "email": "antao@mokahr.com",
                "phone": "15201314595",
                "employeeId": "01"
            },
            "resumeUrl": "",
            "educationInfo": [
                {
                    "id": 37153,
                    "startDate": "",
                    "endDate": "",
                    "school": "收到回复看吧",
                    "speciality": "哈Yes的",
                    "academicDegree": "Bachelor degree",
                    "startTime": null,
                    "endTime": null,
                    "now": false
                }
            ],
            "experienceInfo": [],
            "awardInfo": [],
            "customFields": [
                {
                    "codes": "",
                    "name": "EthnicityCustom",
                    "value": "维吾尔族",
                    "section": "basicInfo"
                }
            ],
            "referrer": null,
            "headcountInfo": [
                {
                    "id": 5,
                    "number": "3",
                    "name": "测试HCUpdate1"
                }
            ],
            "jobRanksInfo": [],
            "offer": null,
            "projectInfo": [],
            "languageInfo": [],
            "invitationUpdateStatus": 1
        }
    ]
    

    This interface will return all candidate information in all stages in the specified condition When called for the first time, it will return all candidate information in the specified stage, and then mark the candidate. After marking, the data cannot be obtained through this interface before the candidate moves If the candidate moves during this stage, the data can be retrieved, and a maximum of 100 pieces of data can be returned each time

    HTTP request

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

    Query

    Field Required Type Description
    stage No string The stage name of pre-archive
    all:All stages
    preliminary_filter:Initial screen
    offer:offerType的阶段
    pending_checkin:To be onboarded
    filter:Selected阶段
    interview:Interview阶段
    exam:Test
    none:none: No type
    shigong:Work trail阶段
    fromTime No string Data start time
    Such as 2018-1-1

    Response

    Field Type Description
    CandidateId integer The unique id of Candidate in Moka
    applicationId integer The unique id of Candidate's application in Moka
    name string Name
    phone string Phone
    email string Email
    gender string Gender,optional values are:MaleFemale
    birthYear integer Birthyear,, such as1990
    birthDate string Birthdate
    ethnic string Ethnicity
    certificateType integer Certificate type
    Optional values are:
    1: id card
    2: Hong Kong id card
    3: Macau id card
    4:Taiwan id card
    5: Passport
    6: Other identity document
    7: Exit-Entry Permit for Travelling to and from Hong Kong and Macau (EEP)
    8: The Mainland Travel Permit for Taiwan Residents
    9: Foreigners' Work Permit
    10:Residence Permit for Foreigner
    citizenId string identification No.
    nationality string Nationality
    nativePlace string Birthplace
    hireMode integer Recruitment mode
    Optional values are:
    1: experienced hires
    2: Campus recruitment
    source string Source,Such as, 'Lagou'
    sourceType integer From
    Optional values are:
    1: Active search,2:Direct delivery,3:Talent recommendation
    stageName string Current stage name
    stageType number Current stage type
    Optional values are:
    100 :Initial screen
    101 :Offer
    102 :To be onboarded
    200 :Selected
    201 :Interview
    202: Test
    205 :No type
    206 :Work trail
    location string Location,Such as, 'Beijing'academicDegree
    married string Marital status
    Optional value
    '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 empty,Code details refer to attachment)
    genderCode integer Gender code(null if gender is empty, see attachment for code details)
    academicDegreeCode integer Recent graduate major
    ethnicCode integer Ethnicity code(null if Ethnicity is empty, see attachment for code details)
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    educationInfo[].school string School
    educationInfo[].speciality string Major
    educationInfo[].academicDegree string Education
    Optional values are:
    Bachelor degreeMaster degreeDoctor degreeSenior high schoolJunior collegeTechnical secondary schoolMBAOthers
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    experienceInfo[].company string Company name
    experienceInfo[].title string Job title
    experienceInfo[].summary string Job responsibility
    experienceInfo[].reasonForLeaving string Reason for resignation
    experienceInfo[].underlingNumber string No.of subordinate
    awardInfo[] array Awards
    awardInfo[].awardDate datetime Winning date
    awardInfo[].awardName string Award name
    job object Position info
    job.title string Job title
    job.department string Department
    job.departmentPath string The full path of the Department, from the upper level to the lower level, separated by /
    job.departmentCode string Department code
    job.parentDepartmentCode string Upper-department code
    job.competencyType string Function type
    job.customFields array job custom field
    job.customFields[].name string job custom field name
    job.customFields[].value string job custom field value
    ehrCustomFields[] array ehr custom exported fields collection
    referrer object Referrer info
    referrer.name string Referrer name
    referrer.email string Referrer email
    referrer.phone string Referrer phone
    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 code
    headcountInfo[].name string Headcount name
    customFields[] array Candidate custom fields, containing only the 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
    Optional values are:
    1:Yes
    0:No.
    customFields[].now boolean This field exists when the custom field is a time period, indicating whether the end time is "today". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    customFields[].section string Name of the module where the custom field is located, the module can be a built-in module (e.g. experienceInfo) or a custom module (e.g. 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 which piece of data
    customFields[].codes string Custom code for multiple choice questions (valid for multiple choice questions with code)
    offer object Offer info
    offer.salaryNumber number Salary and compensation
    offer.checkinDate string Onboarding date
    offer.location string Work location after hired
    offer.creator object Offer creator info
    offer.creator.name string Offer creator name
    offer.creator.email string Offer creator email
    offer.finishedAt string Accept offer time. Date format is: ISO8601
    offer.customFields array Offer custom field
    offer.customFields[].name string Offer custom field name
    offer.customFields[].value string Offer custom field value
    offer.departmentName string Onboarding department name
    offer.departmentCode number Onboarding department code
    offer.parentDepartmentCode number The upper department of onboarding department code
    offer.departmentPath string The full path of Onboarding department
    offer.offerLastSentAt string Last offer time
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    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
    invitationUpdateStatus integer Invitation to update status
    Optional values are:
    0:Not invited
    1: not update
    2: updated

    GET All stage Candidate info(paging)

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/data/movedApplications
    

    > Response example

    {
      "next":"2019-01-16T07:56:44.000Z_44803",
      "data":[
        {
          "applicationId": 23191,
          "CandidateId": 12552,
          "moved_at": "2019-01-25T10:25:36.000Z",
          "name": "曹大帅",
          "phone": "15013186607",
          "email": "1170616425@qq.com",
          "gender": "Male",
          "birthYear": 1991,
          "nationality": null,
          "experience": 2,
          "ethnic": null,
          "citizenId": null,
          "nativePlace": "",
          "location": "湖北-武汉",
          "source": "智联",
          "sourceType": 2,
          "academicDegree": "Master degree",
          "lastSpeciality": "人力资源管理",
          "married": "Single",
          "jobCommitment": " Full-time",
          "hireMode": 1,
          "departmentCode": null,
          "parentDepartmentCode": null,
          "resumeKey": "1f0f3d5f-17d4-4e21-a135-a8dbb8648297.html",
          "stageName": "用人Department筛选",
          "stageType": 200,
          "nativePlaceCode": null,
          "nationalityCode": null,
          "genderCode": 0,
          "academicDegreeCode": 5,
          "ethnicCode": null,
          "job": {
              "title": "5432154321543215432154321v543215432154321",
              "department": null,
              "departmentCode": null,
              "parentDepartmentCode": null,
              "competencyType": null,
              "jobId": "ea932057-2637-4408-98a2-a3366b4ade14"
          },
          "jobManager": {
              "name": "Moka小助手",
              "email": "why947608878@163.com",
              "phone": "18610778251",
              "employeeId": "01"
          },
          "resumeUrl": "",
          "educationInfo": [
              {
                  "id": 35764,
                  "startDate": "2014-09",
                  "endDate": "2017-06",
                  "school": "长江大学",
                  "speciality": "农业经济管理",
                  "academicDegree": "Master degree",
                  "startTime": 1409500800,
                  "endTime": 1496246400,
                  "now": false
              },
              {
                  "id": 35765,
                  "startDate": "2010-09",
                  "endDate": "2014-06",
                  "school": "长江大学",
                  "speciality": "人力资源管理",
                  "academicDegree": "Bachelor degree",
                  "startTime": 1283270400,
                  "endTime": 1401552000,
                  "now": false
              }
          ],
          "experienceInfo": [],
          "awardInfo": [],
          "customFields": [],
          "referrer": null,
          "headcountInfo": [],
          "jobRanksInfo": [],
          "offer": null,
          "projectInfo": [
              {
                  "startDate": "2014-06",
                  "endDate": "2014-09",
                  "projectName": "土地流转确权工作",
                  "title": "",
                  "projectDescript": "1.了解荆州City农村人口占全City的比for example. \r\n2.了解荆州City农村土地流转的面积. \r\n3.了解荆州City土地流转的模式. \r\n4.了解荆州City农村农户进行土体流转出现的问题和法律纠纷. \r\n5.整理相关文献资料,利用搜集到的土地流转资料撰写论文,总结分析出农户土地流转出现的问题,并找到其应对的措施. ",
                  "responsibilities": "深入到农村基层,通过与农户的交谈和问卷调研方式,了解荆州City农村土地的流转情况,土地流转的面积、模式,考察荆州City农村居民土地流转出现的问题,以及它们的解决方式,另外考察当地政府对土地流转的支持力度. ",
                  "startTime": 1401552000,
                  "endTime": 1409500800,
                  "now": false
              }
          ],
          "languageInfo": []
        },
        {
          "applicationId": 44803,
          "CandidateId": 34339,
          "moved_at": "2019-01-16T07:56:44.000Z",
          "name": "张五",
          "phone": "15811077349",
          "email": "sgurr@163.com",
          "gender": "Male",
          "birthYear": 1989,
          "nationality": null,
          "experience": null,
          "ethnic": null,
          "citizenId": null,
          "nativePlace": "",
          "location": null,
          "source": "智联",
          "sourceType": 1,
          "academicDegree": "Bachelor degree",
          "lastSpeciality": "人力资源管理",
          "married": null,
          "jobCommitment": " Full-time",
          "hireMode": 1,
          "departmentCode": "1",
          "parentDepartmentCode": null,
          "resumeKey": null,
          "stageName": "新增offer型阶段",
          "stageType": "101",
          "nativePlaceCode": null,
          "nationalityCode": null,
          "genderCode": 0,
          "academicDegreeCode": 4,
          "ethnicCode": null,
          "job": {
              "title": "qa",
              "department": "马蜂窝",
              "departmentCode": "1",
              "parentDepartmentCode": null,
              "competencyType": null,
              "departmentPath": "马蜂窝",
              "jobId": "ea932057-2637-4408-98a2-a3366b4ade14",
              "customFields": [
                {
                  "name": "职位-年月",
                  "value": "2019-01"
                }
              ]
          },
          "jobManager": {
              "name": "安涛",
              "email": "antao@mokahr.com",
              "phone": "15201314595",
              "employeeId": "01"
          },
          "resumeUrl": "",
          "educationInfo": [
              {
                  "id": 37153,
                  "startDate": "",
                  "endDate": "",
                  "school": "收到回复看吧",
                  "speciality": "哈Yes的",
                  "academicDegree": "Bachelor degree",
                  "startTime": null,
                  "endTime": null,
                  "now": false
              }
          ],
          "experienceInfo": [],
          "awardInfo": [],
          "customFields": [
              {
                  "codes": "",
                  "name": "EthnicityCustom",
                  "value": "维吾尔族",
                  "section": "basicInfo"
              }
          ],
          "referrer": null,
          "headcountInfo": [
              {
                  "id": 5,
                  "number": "3",
                  "name": "测试HCUpdate1"
              }
          ],
          "jobRanksInfo": [],
          "offer": null,
          "projectInfo": [],
          "languageInfo": []
        }
      ]
    }
    

    This interface will respond all candidates info of all stages under specific condition

    HTTP request

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

    Query

    Field Required Type Description
    stage No string The stage name of pre-archive
    all:All stages
    preliminary_filter:Initial screen
    offer:offer
    pending_checkin:To be onboarded
    filter:Selected
    interview:Interview
    exam:Test
    none:none: No type
    shigong:Work trail
    fromTime Yes string The start time of the data, the fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included.
    Such as 2018-1-1
    ASC Search from this time to new data
    next Yes string Paging parameter, if there is more data to be pulled, there will be a next field in the response json, and the next request only needs to add this next parameter to the query. The fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included. If there is no next field in the response, it means that there is no more data
    reqType No string all: full amount, ignore the mark, and return all to the caller update: update and variable (default), each request will return unmarked data to the caller, and mark the returned data
    limit No string Number of entries per page for paging, default 20, max 20.

    Response

    Field Type Description
    CandidateId integer The unique id of Candidate in Moka
    applicationId integer The unique id of Candidate's application in Moka
    name string Name
    phone string Phone
    email string Email
    gender string Gender,optional values are:MaleFemale
    birthYear integer Birthyear,, such as1990
    birthDate string Birthdate
    ethnic string Ethnicity
    Optional values are:
    1: id card
    2: Hong Kong id card
    3: Macau id card
    4:Taiwan id card
    5: Passport
    6: Other identity document
    7: Exit-Entry Permit for Travelling to and from Hong Kong and Macau (EEP)
    8: The Mainland Travel Permit for Taiwan Residents
    9: Foreigners' Work Permit
    10:Residence Permit for Foreigner
    citizenId string identification No.
    nationality string Nationality
    nativePlace string Birthplace
    hireMode integer Recruitment mode
    Optional value
    1: experienced hires
    2: Campus
    recruitmentsource string Source,Such as, 'Lagou'
    sourceType integer From
    Optional values are:
    1: Active search,2:Direct delivery,3:Talent recommendation
    stageName string Current stage name
    stageType number Current stage typ
    Optional values are:
    100 :Initial screen
    101 :Offer
    102 :To be onboarded
    200 :Selected
    201 :Interview
    202: Test
    205 :No type
    206 :Work trail
    location string Location,Such as, 'Beijing'
    academicDegree string Highest education
    Optional values are:Bachelor degreeMaster degreeDoctor degreeSenior high schoolJunior collegeTechnical secondary schoolMBAOthers
    married string Marital status
    Optional values are:
    '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 empty, code details refer to attachment)
    genderCode integer Gender code(null if gender is empty, see attachment for code details)
    academicDegreeCode integer Recent graduate major
    ethnicCode integer Ethnicity code(null if Ethnicity is empty, see attachment for code details)
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    educationInfo[].school string School
    educationInfo[].speciality string Major
    educationInfo[].academicDegree string Education
    Optional values are:Bachelor degreeMaster degreeDoctor degreeSenior high schoolJunior collegeTechnical secondary schoolMBAOthers
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    experienceInfo[].company string Company name
    experienceInfo[].title string Job title
    experienceInfo[].summary string Job responsibility
    experienceInfo[].reasonForLeaving string Reason for resignation
    experienceInfo[].underlingNumber string No.of subordinate
    awardInfo[] array Awards
    awardInfo[].awardDate datetime Winning date
    awardInfo[].awardName string Award name
    job object Position info
    job.title string Job title
    job.department string Department
    job.departmentPath string The full path of the Department, from the upper level to the lower level, separated by /
    job.departmentCode string Department code
    job.parentDepartmentCode string Upper-department code
    job.competencyType string Function type
    job.customFields array job custom field
    job.customFields[].name string job custom field name
    job.customFields[].value string job custom field value
    ehrCustomFields[] array ehr custom exported fields collection
    idCardFrontList array Upload id card picture (portrait side)
    idCardBackList string Upload id card picture (national emblem side)
    idCardSignOrganization string Issuing authority of id card
    idCardValidity string id card validity period
    customAttachmentList obj All attachments of Candidate's standard resume
    customAttachmentList.customUpload+customId array The key of the attachment of the Candidate's standard resume is composed of customUpload (fixed string) + customid
    customAttachmentList.customUpload+customId[].attachmentName string Attachment name
    customAttachmentList.customUpload+customId[].attachmentSize number Attachment size (byte)
    customAttachmentList.customUpload+customId[].CandidateId number Candidate id
    customAttachmentList.customUpload+customId[].customId number Custom field id
    customAttachmentList.customUpload+customId[].downloadUrl string The download address will invalid in 24 hours
    customAttachmentList.customUpload+customId[].createdAt string Created time of attachment (timestamp format)
    referrer object Referrer info
    referrer.name string Referrer name
    referrer.email string Referrer email
    referrer.phone string Referrer phone
    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 code
    headcountInfo[].name string Headcount name
    customFields[] array Candidate custom fields, containing only the 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
    Optional values are:
    1:Yes
    0:No.
    customFields[].now boolean
    customFields[].section string Name of the module where the custom field is located, the module can be a built-in module (e.g. experienceInfo) or a custom module (e.g. 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 which piece of data
    customFields[].codes string Custom code for multiple choice questions (valid for multiple choice questions with code)
    offer object Offer info
    offer.salaryNumber number Salary and compensation
    offer.checkinDate string Onboarding date
    offer.location string Work location after hired
    offer.creator object Offer creator info
    offer.creator.name string Offer creator name
    offer.creator.email string Offer creator email
    offer.finishedAt string Accept offer time. Date format is: ISO8601
    offer.customFields array Offer custom field
    offer.customFields[].name string Offer custom field name
    offer.customFields[].value string Offer custom field value
    offer.departmentName string Onboarding department name
    offer.departmentCode number Onboarding department code
    offer.parentDepartmentCode number The upper department of onboarding department code
    offer.departmentPath string The full path of Onboarding department
    offer.offerLastSentAt string Last offer time
    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 Identifies whether the end time is "to date". When the end time is now, now=true, the value of endDate may be any value at this time, just ignore endDate
    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
    invitationUpdateStatus integer Invitation to update status
    Optional values are:
    0:Not invited
    1: not update
    2: updated

    Get custom module

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/Candidates/custom_blocks
    

    > Response example

    [
        {
            "id": 1,
            "title": "Custom模块1"
        },
        {
            "id": 2,
            "title": "Custom模块2"
        }
    ]
    

    Get a list of configured custom modules

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/Candidates/custom_blocks

    Response

    Response body in JSON

    Field Type Description
    id integer Custom field id
    title string Custom module name

    Get custom field

    > Request example

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

    > Response example

    [
        {
            "id": 1,
            "name": "Custom field1",
            "type": "string_info",
            "relatedTo": "basicInfo"
        },
        {
            "id": 2,
            "name": "Custom field2",
            "type": "select_info",
            "relatedTo": "1",
            "detail": ["选项1", "选项2"]
        }
    ]
    

    Get a list of configured custom modules

    HTTP request

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

    Response

    Response body in JSON

    Field Type Description
    id integer Custom field id
    name string Custom field name
    type string Field type
    select_info Selection type
    Optional values are:
    string_info String type
    date_info Date type
    detail array If type is select_info, this field represents a list of selections.
    relatedTo string The module to which this custom field belongs.
    If it is a number, it means the id of the custom module. If it is another string, it means the name of the built-in module, such as:
    basicInfo Basic information
    experienceInfo Work experience
    educationInfo Educational background

    UpdateCandidateCustom field

    > Request example

    curl --silent --location --request POST 'https://api.mokahr.com/api-platform/v1/Candidate/customField/update' \
    --header 'Authorization: Basic xxxxxxxx' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "updateCustomFieldsReqDTOList": [
            {
                "CandidateId": 326567157,
                "orgId": "test",
                "operatorEmail": "xxxx@qq.com",
                "hireMode": 1,
                "customIdAndDetailDTOList": [
                    {
                        "id": 124106,
                        "detail": "2022-11-01 00:00:00",
                        "type": "string_info"
                    }
                ]
            },
            {
            "CandidateId": 326563070,
            "orgId": "test",
            "operatorEmail": "xxxx@qq.com",
            "hireMode": 1,
            "customIdAndDetailDTOList": [
                {
                    "id": 124106,
                    "detail": " Single line text",
                    "type": "string_info"
                },
                {
                    "id": 124107,
                    "detail": "1",
                    "type": "text_info"
                }
            ]
        }
      ]
    }'
    

    > Response example

    {
      "code": 0,
      "msg": "success",
      "data": null
    }
    

    The number of Fields modified each time does not exceed 300

    HTTP request

    post https://api.mokahr.com/api-platform/v1/Candidate/customField/update

    Query

    Field Required Type Description
    updateCustomFieldsReqDTOList Yes array Update data
    updateCustomFieldsReqDTOList[].applicationId No integer application ID
    If an application ID is provided, first check if the operator has permission to apply.Otherwise, based on the provided candidate ID, check if the operator has permission for all of the candidate's applications.
    updateCustomFieldsReqDTOList[].candidateId Yes integer Candidate id
    updateCustomFieldsReqDTOList[].hireMode Yes integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    updateCustomFieldsReqDTOList[].operatorEmail Yes string Operator email
    updateCustomFieldsReqDTOList[].jobTemplateId No long Custom Recruitment Settings
    If not uploaded (left blank), it is allowed to update the fields enabled in the default standard resume settings. If the input fields are not enabled, they will not be processed.
    If the specific custom recruitment setting ID is passed, it is allowed to update the fields enabled in the custom recruitment setting. If the fields in the input parameter are not enabled, they will not be processed.
    If sending custom recruitment settings, please ensure that the setting ID is valid (0 or invalid ID will be verified and intercepted)
    updateCustomFieldsReqDTOList[].customIdAndDetailDTOList Yes array Collection of updated custom fields
    updateCustomFieldsReqDTOList[].customIdAndDetailDTOList[].id Yes integer Custom field id
    updateCustomFieldsReqDTOList[].customIdAndDetailDTOList[].detail Yes string The modified value of the custom field
    updateCustomFieldsReqDTOList[].customIdAndDetailDTOList[].type Yes string Custom field type. If the type is date_info or day_info, the detail format must be "2022-11-01 00:00:00". If type is date_group_info, the detail format is {\"startDate\":\"2015-01\",\"endDate\":\"2016-01\"}.
    updateCustomFieldsReqDTOList[].customIdAndDetailDTOList[].attachmentId string The ID returned by the upload attachment interface (obtained through the public API attachment upload interface)
    has a value only when type = custom_file_upload. If attachmentId is passed, the detail field can be left empty, and the system will prioritize verifying the attachmentId to obtain field information. If the customer passes attachmentName, the passed attachmentName will take precedence; otherwise, the system will verify attachmentName and attachmentSize detail.
    updateCustomFieldsReqDTOList[].customIdAndDetailDTOList[].attachmentName No string file name
    Only when the type = "custom_file_upload" is it a required field, and for other types it is not required.
    updateCustomFieldsReqDTOList[].customIdAndDetailDTOList[].attachmentSize No Integer file size
    Only when the type = "custom_file_upload" is it a required field, and for other types it is not required.

    Response

    Response body in JSON

    Field Type Description
    code string 200:Success
    not 200 represents error
    msg string Interface return value illustration

    Get candidate application list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/data/applications
    

    > Response example

    {
      "data": [
        {
          "id": 1,
          "sourceName": "拉勾",
          "headhunterCompany": "好Headhunter",
          "stageName": "沟通Offer",
          "jobId": "123",
          "updatedAt": "2017-01-01 10:00:00"
        }
      ],
      "next": "8465195468"
    }
    

    Get candidate application info

    HTTP request

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

    Query

    Field Required Type Description
    fromTime No string The start time of the data, the fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included.
    next No string Paging parameter, if there is more data to be pulled, there will be a next field in the response json, and the next request only needs to add this next parameter to the query. The fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included. If there is no next field in the response, it means that there is no more data
    limit No string Number of entries per page for paging, default 100, max 500.

    Response

    Response body in JSON

    Field Type Description
    id integer applicationId
    sourceName string Source name
    headhunterCompany string Headhunter agency name
    stageName string Current stage name
    updatedAt string Last update time of this data
    jobId string Position id of the application

    Move the application to any stage under the current position.

    Move the application to any stage under the current position.

    > Request example

    $ curl http://api.mokahr.com/api-platform/v1/applications/move_application_stage?applicationId=96&stageId=4 \
       -u 'your_api_key:' \
       -X PUT \
    

    > Response example

    {
        "code": 0,
        "msg": "Success"
    }
    

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/applications/move_application_stage?applicationId={applicationId}&stageId={stageId}

    Request parameter

    Field Required Description
    applicationId Yes Application id
    stageId Yes The stage id that moved to

    Response

    Response body in JSON

    Field Type Description
    code integer 0:Set successfully
    1: Failure
    msg string Success

    Black candidate

    Black candidate

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/v1/blackCandidate' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic ZndyMDAzOg==' \
    --data-raw '{
        "detail": "不222满足",
        "applicationIds": [
            411250318
        ],
        "talentPoolIds": [
            200003266
        ],
        "hireMode": 2,
        "operatorEmail": "fwr003@163.com",
        "tags": "态度恶劣"
    }'
    

    > Response example

    {
        "code": 0,
        "msg": "Success"
    }
    

    HTTP request

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

    Request parameter

    Field Required Type Description
    applicationIds Yes array[integer] Candidate application ids
    talentPoolIds Yes array[integer] Talent pool id
    businessUnitId No integer bu id
    detail No string Blacklist details
    hireMode Yes integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    operatorEmail Yes string Operator email
    tags Yes string Tag

    Response

    Response body in JSON

    Field Type Description
    code integer 0:Set successfully,1: Failure
    msg string Success

    Get recruitment process list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v2/pipelines/getPipelinesList
        -u 'your-api-key:'
    

    > Response example

    {
        "code": 200,
        "msg": "success",
        "data": [
            {
                "id": "485",
                "departmentIds": "[3427,15825,47702]",
                "disabled": false,
                "entryConditions": "{\"29083\":{\"match\":\"and\",\"conditions\":[{\"stageId\":9886,\"type\":17,\"status\":1}]}}",
                "hireMode": 1,
                "isOptimizedDeptIds": false,
                "name": "默认Recruitment process",
                "stageIds": "[2601,43451,2602,49375,12983,14827,15794,10784,43651,40780,7164,14826,9276,9240,7278,3407,11049,5890,3385,7642,4008,2603,9886,29083,3460,2604,44665,5544,15360,2605]"
            },
            {
                "id": "632",
                "departmentIds": "[47702]",
                "disabled": true,
                "entryConditions": "",
                "hireMode": 1,
                "isOptimizedDeptIds": false,
                "name": "产品Recruitment process",
                "stageIds": "[2601,15794,3459,2602,15698,2604,8396,3462,3385,2605]"
            },
            {
                "id": "657",
                "departmentIds": "[]",
                "disabled": false,
                "entryConditions": "",
                "hireMode": 1,
                "isOptimizedDeptIds": true,
                "name": "商业产品部Recruitment process",
                "stageIds": "[2601,4009,43143,5890,3385,2603,2604,3479,15352,2605]"
            },
            {
                "id": "3533",
                "departmentIds": "[47702]",
                "disabled": false,
                "entryConditions": "",
                "hireMode": 1,
                "isOptimizedDeptIds": false,
                "name": "报表统计招聘",
                "stageIds": "[2601,3385,4009,4008,7164,9245,2604,6669,2605]"
            }
        ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v2/pipelines/getPipelinesList

    Response

    Response body in JSON

    Field Type Description
    code integer Returned code: 200 is normal, others are errors
    msg string Success response success, failure response false
    data array or object If it is a single piece of data, it returns an object and multiple pieces of data return an array
    data.id integer Process id
    data.entryConditions string Transferring to the current stage requires, default', from the constant STAGE_ENTRY_CONDITIONS, in json format
    data.departmentIds string Supported department
    data.disabled boolean Whether to disable
    data.hireMode integer Recruitment type
    Optional values are:
    1 experienced hires
    2 Campus recruitment
    data.isOptimizedDeptIds boolean Whether to optimize the department
    data.stageIds string Stage id list
    data.name string Process name

    Get stage info list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v2/stage/getStagesList
        -u 'your-api-key:'
    

    > Response example

    {
        "code": 200,
        "msg": "success",
        "data": [
            {
                "entryConditions": "[]",
                "disabled": false,
                "operationIds": "[14,1,13,2,11,17]",
                "name": "Initial screen",
                "type": 100
            },
            {
                "entryConditions": "[]",
                "disabled": false,
                "operationIds": "[2,14,11,17]",
                "name": "用人Department筛选",
                "type": 200
            },
            {
                "entryConditions": "[]",
                "disabled": false,
                "operationIds": "[3,2,9,14,11]",
                "name": "面试",
                "type": 201
            },
            {
                "entryConditions": "[]",
                "disabled": false,
                "operationIds": "[11,14,6,8,7]",
                "name": "沟通offer",
                "type": 101
            },
            {
                "entryConditions": "[]",
                "disabled": false,
                "operationIds": "[10,11,6,15,14,8]",
                "name": "To be onboarded",
                "type": 102
            },
            {
                "entryConditions": "[]",
                "disabled": true,
                "operationIds": "[14,11,5]",
                "name": "笔试阶段",
                "type": 202
            }
        ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v2/stage/getStagesList

    Response

    Response body in JSON

    Field Type Description
    code integer Returned code: 200 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data array or object If it is a single piece of data, it returns an object and multiple pieces of data return an array
    data.id integer Stage id
    data.name string Stage name
    data.entryConditions string Transferring to the current stage requires, default', from the constant STAGE_ENTRY_CONDITIONS, in json format
    data.operationIds string Which operations are available under the stage, one operation corresponds to one state type, in json format
    data.disabled boolean Whether to disable
    data.type number Stage type

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/Candidate/v1/getApplicationStates' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: ' \
    --data-raw '{
        "CandidateId": 201232883
    }'
    

    > Response example

    {
        "code": 0,
        "msg": "success",
        "data": [
            {
                "applicationId": 411269930,
                "status": "rejected",
                "stageName": "Initial screen",
                "createdAt": 1662520322000
            }
        ]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/Candidate/v1/getApplicationStates

    Request parameter (JSON)

    Field Required Type Description
    CandidateId Yes long Candidate id

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:0 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data array Candidate application info
    data[].applicationId long Candidate id
    data[].status string Application status
    enumeration value:
    in_progress: In process
    rejected:Rejected
    hired: Regular employee
    data[].stageName string The name of the current stage‘ s stage
    data[].createdAt string Application created time (timestamp)

    Remove Blacklist

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/v1/talentPool/blackList/remove' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "hireMode": 2,
        "CandidateIds": [201252027],
        "operatorEmail": "zongxinqi@mokahr.com"
    }'
    

    > Response example

    {
        "code": 0,
        "msg": "success"
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/talentPool/blackList/remove

    Request parameter (JSON)

    Field Required Type Description
    CandidateIds No, but one must be passed with applicationIds, and the maximum number does not exceed 200 *List * Candidate id
    applicationIds No List applicationID
    hireMode Yes int Recruitment mode 1 experienced hires 2 Campus recruitment
    operatorEmail Yes string Operator email

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:0 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.

    Get the evaluation conclusion of the hiring department

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/Candidate/v1/get_handle_Result' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "applicationIdList":[411274410],
      "stageIdList":[123]
    }'
    

    > Response example

    {
        "code": 0,
        "msg": "success",
        "data":{
            "applicationId":111,
            "CandidateId":2323,
            "stageId":3232,
            "email":"",
            "stageType":100,
            "name":"",
            "handleResult":"reject",
            "handleTime":""
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/Candidate/v1/get_handle_Result

    Request parameter (JSON)

    Field Required Type Description
    applicationIdList Yes *List * Application id collection
    stageIdList No List Stage id collection

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:0 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data.applicationId integer Application id
    data.CandidateId integer Candidate id
    data.stageId integer Stage id
    data.email string Referral email
    data.stageType integer Stage Type 100 = Initial Screening, 200 = Screening, 201 = Interview
    data.name string Referral name
    data.handleResult string Feedback reject = reject, accept = pass, noReply = no feedback
    data.handleTime string Refers to the feedback time yyyy-MM-dd HH:mm:ss
    data.assignerName string referrer name
    data.assignerEmail string referrer email
    data.recommendedTime long referral time

    Check the stage under the candidate's relevant application

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/Candidate/v1/get_Candidate_stage' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "applicationIdList":[411274410]
        }'
    

    > Response example

    {
        "code": 0,
        "msg": "success",
        "data":{
            "applicationId":111,
            "CandidateId":2323,
            "stageId":3232,
            "enteredAt":"",
            "archivedAt":""
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/Candidate/v1/get_Candidate_stage

    Request parameter (JSON)

    Field Required Type Description
    applicationIdList Yes *List * Application id collection

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:0 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data object
    data.applicationId integer Application id
    data.CandidateId integer Candidate id
    data.stageId integer Stage id
    data.archivedAt string Apply archive time yyyy-MM-dd HH:mm:ss
    data.enteredAt string Move to stage time yyyy-MM-dd HH:mm:ss

    Restore to original status

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/candidate/application/revert' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "applicationId":411274410,
        "operatorEmail":"lele@example.com"
        }'
    

    > Response example

    {
        "code": 0,
        "msg": "success",
        "data": null
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/api-platform/candidate/application/revert

    Request parameter (JSON)

    Field Required Type Description
    applicationId Yes integer Application id
    operatorEmail Yes string Operator email

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:0 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data object

    Get Candidate Labels by ApplicationIds

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/candidate/getLabel' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "applicationIds":[411274410,26761872]
        }'
    

    > Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "labelInfoList": [
                {
                    "applicationId": 411344001,
                    "candidateId": 201308769,
                    "labelInfoList": [
                        {
                            "id": 8,
                            "label": "空白经历",
                            "type": 1
                        },
                        {
                            "id": 1565,
                            "label": "手工标签",
                            "type": 2
                        }
                    ]
                }
            ]
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/api-platform/candidate/getLabel

    Request parameter (JSON)

    Field Required Type Description
    applicationIds Yes integer Application ids(ApplicationIds of Candidates, Max 20.)

    Response

    Response body in JSON

    Field Type Description
    code integer Return code: non-200 means error
    msg string Response info
    data object Response data
    data.labelInfoList[].applicationId integer The unique id of Candidate's application in Moka
    data.labelInfoList[].candidateId integer The unique id of Candidate in Moka
    data.labelInfoList[].labelInfoList[].id integer The unique id of label
    data.labelInfoList[].labelInfoList[].label integer name of label
    data.labelInfoList[].labelInfoList[].type integer label type 1 intelligent label,2 manual label

    Query Screening Evaluation Form

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/pipeline/assignment/get' \
    --header 'Content-Type: application/json' \
    --data-raw '{
         "hireMode":1
      }'
    

    > Response example

    {
        "code": 0,
        "msg": "success",
        "data": [
            {
                "feedbackId": 1,
                "feedbackResultList": [
                    {
                        "nameCn": "通过",
                        "nameEn": "Advance",
                        "resultId": 1,
                        "type": "accept"
                    },
                    {
                        "nameCn": "拒绝",
                        "nameEn": "Reject",
                        "resultId": 2,
                        "type": "reject"
                    },
                    {
                        "nameCn": "待定",
                        "nameEn": "Pending",
                        "resultId": 3,
                        "type": "decided"
                    }
                ],
                "isDefault": true,
                "nameCn": "默认筛选评价表",
                "nameEn": "Default evaluation form",
                "descCn":"desc",
                "descEn":""
            }
        ]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/pipeline/assignment/get

    Request parameter (JSON)

    Field Required Type Description
    hireMode Yes integer Recruitment mode Optional values: 1: Social recruitment 2: School recruitment

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:0 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data object[]
    data[].feedbackId integer Screening evaluation form ID
    data[].nameCn string Screening Evaluation Form Name (Chinese)
    data[].nameEn string Screening Evaluation Form Name (English, if available)
    data[].descCn string Screening Evaluation Form Description (Chinese, if available)
    data[].descEn string Screening Evaluation Form Description (English, if available)
    data[].isDefault boolean Default Screening Evaluation Form Indicator
    true: Indicates this is the default screening evaluation form
    data[].feedbackResultList[] object[] Screening Evaluation Form Options
    data[].feedbackResultList[].resultId integer Screening Evaluation Form Option ID
    data[].feedbackResultList[].nameCn string Screening Evaluation Form Option Name (Chinese)
    data[].feedbackResultList[].nameEn string Screening Evaluation Form Option Name(English, if available)
    data[].feedbackResultList[].type string Evaluation Option Type
    accept:Positive Evaluation
    reject:Negative Evaluation
    decided:Neutral Evaluation

    Update Option Value Based on Custom Field ID

    Request example shell curl --location --request POST 'http://api.mokahr.com/api-platform/v2/candidate/customField/updateDetail' \ --header 'Authorization: ••••••' \ --header 'Content-Type: application/json' \ --data-raw '{ "type":2, "detailsList":[{ "id":410059485, "valueList":["88"], "codeList":["88"], "supplementaryLocaleList": {"en-US":["777"]} }] }' Response example

    {
        "code": 0,
        "msg": "success",
        "data": null
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v2/candidate/customField/updateDetail

    Request parameter (JSON)

    Field Required Type Description
    type Yes integer Operation Type: 1 - Add, 2 - Delete
    detailsList Yes array Set of Custom Field Option Values to be Operated on: Currently only supports adding or deleting options for fields of type multiple-choice.
    detailsList[].id Yes integer Custom Field ID
    detailsList[].codeList No array Code corresponding to the custom option value to be operated on (required if the custom field has a code in the system)
    detailsList[].valueList Yes array Custom Option Value to be Operated on
    detailsList[].supplementaryLocaleList No object Multi-language Enum Values for the Custom Field, format: {"en-US": ["1"]}

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:0 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data object

    Get resume analysis content by application ID

    Request example shell curl --location --request POST 'http://api.mokahr.com/api-platform/application/resumeContent/get' \ --header 'Authorization: ••••••' \ --header 'Content-Type: application/json' \ --data-raw '{ "applicationId":228272 }' Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "resumeKey": "7ce112hrrr-wrra5-4qf5-8qq4-1b633ww0768.pdf",
            "resumeContent": "张三\n基本情况: 女 | 0岁 | 2015届毕业生 | 共青团员\n最高学历: 长沙理工大学 · 本科"
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/application/resumeContent/get

    Request parameter (JSON)

    Field Required Type Description
    applicationId Yes integer applictaion ID

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:200 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data object
    data.resumeKey string The key of resume
    data.resumeContent string The content of resume

    Write candidate operation records

    Request example shell curl --location 'https://api.mokahr.com/api-platform/candidate/v1/create_activities' \ --header 'Authorization: ••••••' \ --header 'Content-Type: application/json' \ --data '{ "operatorId": 210000293, "applicationId": 411192145, "data": "中文内容", "supplementaryLocales": { "en-US": "english content" } }' Response example

    {
        "code": 0,
        "msg": "success",
        "data": null
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/candidate/v1/create_activities

    Request parameter (JSON)

    Field Required Type Description
    operatorId No, the operator role should be HR or above Long Operator id
    applicationId No, but it must be passed along with candidateId, and both have values that default to the applicationId dimension Long The unique id of Candidate's application in Moka
    candidateId No Long The unique id of Candidate in Moka
    data Yes string Chinese content
    supplementaryLocales Yes object The object format for multiple languages is as follows {"en US": "1"}

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:0 is normal, others are errors
    msg string Success respond success, failure respond false or the corresponding error message.
    data object

    Get Candidate Attachment Information by Application ID

    Request example

    curl --location 'https://api.mokahr.com/api-platform/v3/attachments/get \
    --header 'Authorization: ••••••' \
    --header 'Content-Type: application/json' \
    --data '{
        "applicationId": 5567833
    }'
    

    Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "applicationId": 411342864,
            "attachments4App": [],
            "attachments4Ca": [],
            "candidateId": 201307724,
            "resumeUrl": "https://moka-test.oss-cn-beijing.aliyuncs.com/livingsimple/dd13ecdc-f835-43b4-9fc7-9ed191670bed.doc?Expires=1743267178&OSSAccessKeyId=LTAI5tKxT6DnN7A5m3fDkCMN&Signature=ED6JnRFJTIcw9%2F6HGRZGhfjEL1o%3D&response-content-disposition=attachmE6%2598%2586%25E4%25BB%259112123123%25E7%259A%2584%25E7%25AE%2580%25E5%258E%2586.doc",
            "standardResumeUrl": "https://moka-test.oss-cn-beijing.aliyuncs.com/livingsimple/htmlToPdf-dealer-9f8bb1017c54450da1da5c780291f454.pdf?mlToPdf-dealer-9f8bb1017c54450da1da5c780291f454.pdf%22&timestamp=1743151980240"
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v3/attachments/get

    Request parameter

    Field Required Type Descrption
    applicationId Yes integer Application ID

    Response

    Response body in JSON | Field | Type | Description | | -------- | ----------- | ------------------------------------------------------------ | |code | integer | Response code: 200 for success, others indicate errors |msg | string | Returns "success" for success, or "false"/error message for failure |data | object | |data.candidateId | integer |Candidate ID |data.applicationId | integer |Application ID |data.standardResumeUrl | string |Standard resume download URL |data.resumeUrl | string |Original resume download URL |data.attachments4App[] | object[] |Application attachment list |data.attachments4App[]. id | integer |Business ID |data.attachments4App[]. name | integer |Candidate attachment filename (with file extension) |data.attachments4App[].applyFormId | integer |Application form template ID |data.attachments4App[].size | integer |Candidate attachment file size |data.attachments4App[].createdAt | long |Attachment upload/generation time (timestamp) |data.attachments4App[].url | string |Candidate attachment download URL |data.attachments4App[].customFieldId | integer |Custom attachment field ID |data.attachments4App[].customFieldName | string |Custom attachment field name |data.attachments4App[].type | string |Candidate attachment type:
    CANDIDATE_UPLOAD_ATTACHMENT: Candidate upload
    UPLOAD_PORTRAIT: Candidate portrait
    HR_UPLOAD_ATTACHMENT: HR manual upload
    HM_UPLOAD_ATTACHMENT: Hiring manager manual upload
    INTERVIEW_ACCEPT: Application form attachment generated when candidate accepts interview
    INTERVIEW_SIGNIN: Application form attachment generated when candidate signs in for interview
    OFFER_ACCEPT: Application form attachment generated when candidate accepts offer
    MERGE_APPLICATION_ATTACHMENT: Attachment generated from candidate merge
    INVITE_UPDATE_RESUME: Application form generated when inviting candidate to update resume
    ORIGINAL_RESUME: Original resume attachment
    ID_CARD_FRONT: ID card front
    ID_CARD_BACK: ID card back |data.attachments4Ca[].id | integer |ID |data.attachments4Ca[].name | string |Candidate attachment filename (with file extension) |data.attachments4Ca[].applyFormId | integer |Application form template ID |data.attachments4Ca[].size | integer |Candidate attachment file size |data.attachments4Ca[].createdAt | long |Attachment upload/generation time |data.attachments4Ca[].url | string |Candidate attachment download URL |data.attachments4Ca[].customFieldId | integer |Custom attachment field ID |data.attachments4Ca[].customFieldName | string |Custom attachment field name |data.attachments4Ca[].type | string |Candidate attachment type:
    CANDIDATE_UPLOAD_ATTACHMENT: Candidate upload
    UPLOAD_PORTRAIT: Candidate portrait
    HR_UPLOAD_ATTACHMENT: HR manual upload
    HM_UPLOAD_ATTACHMENT: Hiring manager manual upload
    INTERVIEW_ACCEPT: Application form attachment generated when candidate accepts interview
    INTERVIEW_SIGNIN: Application form attachment generated when candidate signs in for interview
    OFFER_ACCEPT: Application form attachment generated when candidate accepts offer
    MERGE_APPLICATION_ATTACHMENT: Attachment generated from candidate merge
    INVITE_UPDATE_RESUME: Application form generated when inviting candidate to update resume
    ORIGINAL_RESUME: Original resume attachment
    ID_CARD_FRONT: ID card front
    ID_CARD_BACK: ID card back

    Request example

    curl --location 'https://api.mokahr.com/api-platform/v3/ehrLinks/get \
    --header 'Authorization: ••••••' \
    --header 'Content-Type: application/json' \
    --data '{
        "applicationIds": [411348665]
    }'
    

    Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "ehrLinks": [
                {
                    "applicationId": 411348665,
                    "ehrLink": "https://app.mokahr.com/forward/candidate/info?access_token=f788e21297cb43a0a3467c0261d051e5b9c84b0192994e118e27c1e33d6e0107"
                }
            ]
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v3/ehrLinks/get

    Request parameter

    Field Required Type Descrption
    applicationIds Yes array[integer] Application IDs

    Response

    Response body in JSON |File | Type | Descrption| |--------- | ------------ | --------| |code | integer | Response code: 200 for success, others indicate errors |msg | string | Returns "success" for success, or "false"/error message for failure |data | object | |data.ehrLinks[] | object[] | |data.ehrLinks[].ehrLink | string |Candidate EHR link |data.ehrLinks[].applicationId | integer |Candidate application ID

    Query Application Information by Email, Phone, or ID Number(Max 100 Results Returned)

    Request example

    curl --location 'https://api.mokahr.com/api-platform/v3/applications/list_by_contact_or_id' \
    --header 'Authorization: ••••••' \
    --header 'Content-Type: application/json' \
    --data '{
        "emailList": ["123@qq.com"],
        "phoneList": ["13211123113"],
        "citizenIdList": ["338377211"]
    }'
    

    Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "applicationList": [
                {
                    "applicationId": 411336681,
                    "appliedAt": 1709120057000,
                    "archiveReasons": {
                        "archiveReasonType": "SYSTEM",
                        "archivedAt": 1729962542000,
                        "id": 1226,
                        "name": "长时间未处理自动淘汰",
                        "type": 4
                    },
                    "archived": true,
                    "candidateBaseInfo": {
                        "activatedAt": 1722233308000,
                        "age": 0,
                        "archived": true,
                        "archivedAt": 1729962542000,
                        "birthDate": 1733025600000,
                        "candidateId": 201307334,
                        "citizen": {
                            "certificateType": 1,
                            "citizenId": null,
                            "idCardSignOrganization": "",
                            "idCardValidity": "[\"2025-03-05\",\"2025-03-21\"]"
                        },
                        "contactInfo": {
                            "countryCallingCode": "86",
                            "email": "123@mokahr.com",
                            "phone": "12345678909"
                        },
                        "createdAt": 1722412883000,
                        "experience": 4,
                        "gender": 2,
                        "graduateSchool": {
                            "academicDegree": 1,
                            "graduateDate": 1640995200000,
                            "lastSchool": "河北工业大学",
                            "lastSpeciality": "西方经济学"
                        },
                        "isBlacklist": false,
                        "name": "四大",
                        "nationality": ""
                    },
                    "createdAt": 1709120057000,
                    "hireMode": 2,
                    "job": {
                        "jobId": "23661249-be3f-47de-8d81-15fa4f894875",
                        "jobTitle": "职位名称"
                    },
                    "movedAt": 1729060403000,
                    "ownerInfo": {
                        "ownerId": null,
                        "ownerName": null
                    },
                    "pipeline": {
                        "name": "默认招聘流程",
                        "pipelineId": 37
                    },
                    "stage": {
                        "name": "面试",
                        "stageId": 58,
                        "stageType": 201
                    },
                    "updatedAt": 1743074331000
                },
                {
                    "applicationId": 411336911,
                    "appliedAt": 1709264021000,
                    "archiveReasons": {
                        "archiveReasonType": null,
                        "archivedAt": null,
                        "id": null,
                        "name": null,
                        "type": null
                    },
                    "archived": false,
                    "candidateBaseInfo": {
                        "activatedAt": 1722233308000,
                        "age": 0,
                        "archived": true,
                        "archivedAt": 1729962542000,
                        "birthDate": 1733025600000,
                        "candidateId": 201307334,
                        "citizen": {
                            "certificateType": 1,
                            "citizenId": null,
                            "idCardSignOrganization": "",
                            "idCardValidity": "[\"2025-03-05\",\"2025-03-21\"]"
                        },
                        "contactInfo": {
                            "countryCallingCode": "86",
                            "email": "123@mokahr.com",
                            "phone": "12345678909"
                        },
                        "createdAt": 1722412883000,
                        "experience": 4,
                        "gender": 2,
                        "graduateSchool": {
                            "academicDegree": 1,
                            "graduateDate": 1640995200000,
                            "lastSchool": "河北工业大学",
                            "lastSpeciality": "西方经济学"
                        },
                        "isBlacklist": false,
                        "name": "四大",
                        "nationality": ""
                    },
                    "createdAt": 1709264021000,
                    "hireMode": 2,
                    "job": {
                        "jobId": "7c8d36c9-3f63-4723-9c20-500a4ac83ea7",
                        "jobTitle": "职位测试1"
                    },
                    "movedAt": 1709264020000,
                    "ownerInfo": {
                        "ownerId": null,
                        "ownerName": null
                    },
                    "pipeline": {
                        "name": "测试",
                        "pipelineId": 200
                    },
                    "stage": {
                        "name": "初筛",
                        "stageId": 56,
                        "stageType": 100
                    },
                    "updatedAt": 1743074931000
                }
            ]
        }
    }
    
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v3/applications/list_by_contact_or_id

    Request parameter

    Field Required Type Descrption
    emailList No array[string] List of candidate emails (max 20 entries). At least one field must be non-empty.
    phoneList No array[string] List of candidate phone numbers (max 20 entries).
    citizenIdList No array[string] List of candidate ID numbers (max 20 entries).

    Response

    Response body in JSON |File | Type | Descrption| |--------- | ------------ | --------| |code | integer | Status code: 200 for success, others indicate errors. |msg | string | success for success; error message otherwise. |data | object | |data.applicationList[]| object[] | |data.applicationList[].applicationId | integer |Unique application ID. |data.applicationList[].candidateBaseInfo | object |Candidate's basic information. |data.applicationList[].candidateBaseInfo.candidateId | integer |Unique candidate ID. |data.applicationList[].candidateBaseInfo .name| string |Candidate's name. |data.applicationList[].candidateBaseInfo.gender| integer |Gender: 1 (Male), 2 (Female) |data.applicationList[].candidateBaseInfo.age|integer |age |data.applicationList[].candidateBaseInfo.birthDate|long|Birthdate (milliseconds). |data.applicationList[].candidateBaseInfo.nationality|string |Nationality. |data.applicationList[].candidateBaseInfo.experience|integer|Years of work experience. |data.applicationList[].candidateBaseInfo.createdAt|long|Candidate creation timestamp (milliseconds). |data.applicationList[].candidateBaseInfo.archived|boolean|Whether any application is archived. |data.applicationList[].candidateBaseInfo.archivedAt|long|Archive timestamp (milliseconds). |data.applicationList[].candidateBaseInfo.activatedAt|long|Ativatedtimestamp (milliseconds). |data.applicationList[].candidateBaseInfo.isBlacklist|boolean|Whether the candidate is in the blacklist. |data.applicationList[].candidateBaseInfo.contactInfo|object| |data.applicationList[].candidateBaseInfo.contactInfo.email|string|Email. |data.applicationList[].candidateBaseInfo.contactInfo.phone|string|Phone number. |data.applicationList[].candidateBaseInfo.contactInfo.countryCallingCode|string|Country calling code (e.g., "86" for China). |data.applicationList[].candidateBaseInfo.graduateSchool|object| |data.applicationList[].candidateBaseInfo.graduateSchool.lastSpeciality|string|Graduated major. |data.applicationList[].candidateBaseInfo.graduateSchool.lastSchool|string|Graduated school. |data.applicationList[].candidateBaseInfo.graduateSchool.graduateDate|long|Graduation date (timestamp). |data.applicationList[].candidateBaseInfo.graduateSchool.academicDegree|integer|Degree: 1 (Other), 2 (Junior High or Below), 3 (High School), 4 (Technical School), 5 (Associate), 6 (Bachelor), 7 (Master), 8 (MBA), 9 (PhD). |data.applicationList[].candidateBaseInfo.citizen|object| |data.applicationList[].candidateBaseInfo.citizen.citizenId|string|ID number. |data.applicationList[].candidateBaseInfo.citizen.certificateType|integer|ID type: 1 (National ID), 2 (Hong Kong ID), 3 (Macau ID), 4 (Taiwan ID), 5 (Passport), 6 (Other). |data.applicationList[].candidateBaseInfo.citizen.idCardSignOrganization|string|Issuing authority. |data.applicationList[].candidateBaseInfo.citizen.idCardValidity|string|ID validity period (format: "[\"start_date\",\"end_date\"]"). |data.applicationList[].job|object|Job details. |data.applicationList[].job.jobId|string|Job ID. |data.applicationList[].job.jobTitle|string|Job title. |data.applicationList[].pipeline|object|Recruitment pipeline details. |data.applicationList[].pipeline.pipelineId|integer|Pipeline ID. |data.applicationList[].pipeline. name|string|Pipeline name. |data.applicationList[].stage|object|Stage details. |data.applicationList[].stage.stageId|integer|Stage ID. |data.applicationList[].stage. name|string|Stage name. |data.applicationList[].stage.stageType|integer|Stage type: 100 (Screening), 101 (Offer), 102 (Pre-onboarding), 200 (Filtering), 201 (Interview), 202 (Test), 205 (No Type), 206 (Trial Work). |data.applicationList[].archived|boolean|Whether archived. |data.applicationList[].archiveReasons|object|Archive reason details. |data.applicationList[].archiveReasons. id|integer|Archive reason ID. |data.applicationList[].archiveReasons.type|integer|Archive type: 1 (Rejected by Candidate), 2 (Rejected by Us), 3 (Hired), 4 (System), 5 (Resigned). |data.applicationList.archiveReasons.archiveReasonType|integer|Archive reason type: REJECTED_BY_CANDIDATES, REJECTED_BY_US, HIRED, SYSTEM, CHECKOUT. |data.applicationList[].archiveReasons. name|string|Archive reason name. |data.applicationList[].archiveReasons.archivedAt|long|Archive timestamp. |data.applicationList[].hireMode|integer|Recruitment mode: 1 (Social Recruitment), 2 (Campus Recruitment). |data.applicationList[].appliedAt|long|Apply timestamp. |data.applicationList[].createdAt|long|Creation timestamp. |data.applicationList[].updatedAt|long|Last update timestamp. |data.applicationList[].movedAt|long|Stage movement timestamp. |data.applicationList[].ownerInfo|object|Application owner details. |data.applicationList[].ownerInfo.ownerId|integer|Owner ID. |data.applicationList[].ownerInfo.ownerName|string|Owner name.

    Query Application Information Based on Conditions (Pagination)

    Request example

    curl --location 'https://api.mokahr.com/api-platform/v3/applications/list_by_condition \
    --header 'Authorization: ••••••' \
    --header 'Content-Type: application/json' \
    --data '{
        "pipelineIds": [17,87],
        "applicationCreateStartTime": 1722233308000,
        "applicationCreateEndTime":1724911708000
    }'
    

    Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "applicationList": [
                {
                    "applicationId": 411336681,
                    "appliedAt": 1709120057000,
                    "archiveReasons": {
                        "archiveReasonType": "SYSTEM",
                        "archivedAt": 1729962542000,
                        "id": 1226,
                        "name": "长时间未处理自动淘汰",
                        "type": 4
                    },
                    "archived": true,
                    "candidateBaseInfo": {
                        "activatedAt": 1722233308000,
                        "age": 0,
                        "archived": true,
                        "archivedAt": 1729962542000,
                        "birthDate": 1733025600000,
                        "candidateId": 201307334,
                        "citizen": {
                            "certificateType": 1,
                            "citizenId": null,
                            "idCardSignOrganization": "",
                            "idCardValidity": "[\"2025-03-05\",\"2025-03-21\"]"
                        },
                        "contactInfo": {
                            "countryCallingCode": "86",
                            "email": "123@mokahr.com",
                            "phone": "12345678909"
                        },
                        "createdAt": 1722412883000,
                        "experience": 4,
                        "gender": 2,
                        "graduateSchool": {
                            "academicDegree": 1,
                            "graduateDate": 1640995200000,
                            "lastSchool": "河北工业大学",
                            "lastSpeciality": "西方经济学"
                        },
                        "isBlacklist": false,
                        "name": "四大",
                        "nationality": ""
                    },
                    "createdAt": 1709120057000,
                    "hireMode": 2,
                    "job": {
                        "jobId": "23661249-be3f-47de-8d81-15fa4f894875",
                        "jobTitle": "职位名称"
                    },
                    "movedAt": 1729060403000,
                    "ownerInfo": {
                        "ownerId": null,
                        "ownerName": null
                    },
                    "pipeline": {
                        "name": "默认招聘流程",
                        "pipelineId": 37
                    },
                    "stage": {
                        "name": "面试",
                        "stageId": 58,
                        "stageType": 201
                    },
                    "updatedAt": 1743074331000
                },
                {
                    "applicationId": 411336911,
                    "appliedAt": 1709264021000,
                    "archiveReasons": {
                        "archiveReasonType": null,
                        "archivedAt": null,
                        "id": null,
                        "name": null,
                        "type": null
                    },
                    "archived": false,
                    "candidateBaseInfo": {
                        "activatedAt": 1722233308000,
                        "age": 0,
                        "archived": true,
                        "archivedAt": 1729962542000,
                        "birthDate": 1733025600000,
                        "candidateId": 201307334,
                        "citizen": {
                            "certificateType": 1,
                            "citizenId": null,
                            "idCardSignOrganization": "",
                            "idCardValidity": "[\"2025-03-05\",\"2025-03-21\"]"
                        },
                        "contactInfo": {
                            "countryCallingCode": "86",
                            "email": "123@mokahr.com",
                            "phone": "12345678909"
                        },
                        "createdAt": 1722412883000,
                        "experience": 4,
                        "gender": 2,
                        "graduateSchool": {
                            "academicDegree": 1,
                            "graduateDate": 1640995200000,
                            "lastSchool": "河北工业大学",
                            "lastSpeciality": "西方经济学"
                        },
                        "isBlacklist": false,
                        "name": "四大",
                        "nationality": ""
                    },
                    "createdAt": 1709264021000,
                    "hireMode": 2,
                    "job": {
                        "jobId": "7c8d36c9-3f63-4723-9c20-500a4ac83ea7",
                        "jobTitle": "职位测试1"
                    },
                    "movedAt": 1709264020000,
                    "ownerInfo": {
                        "ownerId": null,
                        "ownerName": null
                    },
                    "pipeline": {
                        "name": "测试",
                        "pipelineId": 200
                    },
                    "stage": {
                        "name": "初筛",
                        "stageId": 56,
                        "stageType": 100
                    },
                    "updatedAt": 1743074931000
                }
            ],
            "next":"eyJuZXh0SWQiOjQxMTM0NTA2MSwibmV4dFVwZGF0ZUF0Ijoi"
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v3/applications/list_by_condition

    Request param

    Field Required Type Description
    applicationIds No array[integer] Application IDs. Max array length: 20
    candidateIds No array[integer] Candidate IDs. Max array length: 20
    jobId No string Job ID
    pipelineIds No array[integer] Pipeline IDs
    stageIds No array[integer] Stage IDs
    hireMode No integer Recruitment mode. Valid values: 1 (Social Recruitment), 2 (Campus Recruitment). Other values will be ignored.
    archived No boolean Archive status of applications. true (Archived), false (Not Archived)
    invitationUpdateStatus No integer Invitation update status. 0: Not invited, 1: Not updated, 2: Updated
    updateAtStartTime No long Start timestamp for update time range (Max time range: 3 months)
    updateAtEndTime No long End timestamp for update time range (Max time range: 3 months)
    applicationCreateStartTime No long Start timestamp for data creation time (Refers to when the application was first saved to the database. Max range: 3 months)
    applicationCreateEndTime No long End timestamp for data creation time (Refers to when the application was first saved to the database. Max range: 3 months)
    applicationAppliedAtStartTime No long Start timestamp for application creation time (Refers to the system-displayed application date. Max range: 3 months)
    applicationAppliedAtEndTime No long End timestamp for application creation time (Refers to the system-displayed application date. Max range: 3 months)
    limit No integer Pagination page size. Default: 20, Max: 20
    next No string Pagination token (Only this parameter needs to be provided for pagination)

    Response

    Response body in JSON |File | Type | Descrption| |--------- | ------------ | --------| |code | integer | Status code: 200 for success, others indicate errors. |msg | string | success for success; error message otherwise. |data | object | |data.next| string |Pagination token (Only this parameter needs to be provided for pagination) |data.applicationList[]| object[] | |data.applicationList[].applicationId | integer |Unique application ID. |data.applicationList[].candidateBaseInfo | object |Candidate's basic information. |data.applicationList[].candidateBaseInfo.candidateId | integer |Unique candidate ID. |data.applicationList[].candidateBaseInfo .name| string |Candidate's name. |data.applicationList[].candidateBaseInfo.gender| integer |Gender: 1 (Male), 2 (Female) |data.applicationList[].candidateBaseInfo.age|integer |age |data.applicationList[].candidateBaseInfo.birthDate|long|Birthdate (milliseconds). |data.applicationList[].candidateBaseInfo.nationality|string |Nationality. |data.applicationList[].candidateBaseInfo.experience|integer|Years of work experience. |data.applicationList[].candidateBaseInfo.createdAt|long|Candidate creation timestamp (milliseconds). |data.applicationList[].candidateBaseInfo.archived|boolean|Whether any application is archived. |data.applicationList[].candidateBaseInfo.archivedAt|long|Archive timestamp (milliseconds). |data.applicationList[].candidateBaseInfo.activatedAt|long|Ativatedtimestamp (milliseconds). |data.applicationList[].candidateBaseInfo.isBlacklist|boolean|Whether the candidate is in the blacklist. |data.applicationList[].candidateBaseInfo.contactInfo|object| |data.applicationList[].candidateBaseInfo.contactInfo.email|string|Email. |data.applicationList[].candidateBaseInfo.contactInfo.phone|string|Phone number. |data.applicationList[].candidateBaseInfo.contactInfo.countryCallingCode|string|Country calling code (e.g., "86" for China). |data.applicationList[].candidateBaseInfo.graduateSchool|object| |data.applicationList[].candidateBaseInfo.graduateSchool.lastSpeciality|string|Graduated major. |data.applicationList[].candidateBaseInfo.graduateSchool.lastSchool|string|Graduated school. |data.applicationList[].candidateBaseInfo.graduateSchool.graduateDate|long|Graduation date (timestamp). |data.applicationList[].candidateBaseInfo.graduateSchool.academicDegree|integer|Degree: 1 (Other), 2 (Junior High or Below), 3 (High School), 4 (Technical School), 5 (Associate), 6 (Bachelor), 7 (Master), 8 (MBA), 9 (PhD). |data.applicationList[].candidateBaseInfo.citizen|object| |data.applicationList[].candidateBaseInfo.citizen.citizenId|string|ID number. |data.applicationList[].candidateBaseInfo.citizen.certificateType|integer|ID type: 1 (National ID), 2 (Hong Kong ID), 3 (Macau ID), 4 (Taiwan ID), 5 (Passport), 6 (Other). |data.applicationList[].candidateBaseInfo.citizen.idCardSignOrganization|string|Issuing authority. |data.applicationList[].candidateBaseInfo.citizen.idCardValidity|string|ID validity period (format: "[\"start_date\",\"end_date\"]"). |data.applicationList[].job|object|Job details. |data.applicationList[].job.jobId|string|Job ID. |data.applicationList[].job.jobTitle|string|Job title. |data.applicationList[].pipeline|object|Recruitment pipeline details. |data.applicationList[].pipeline.pipelineId|integer|Pipeline ID. |data.applicationList[].pipeline. name|string|Pipeline name. |data.applicationList[].stage|object|Stage details. |data.applicationList[].stage.stageId|integer|Stage ID. |data.applicationList[].stage. name|string|Stage name. |data.applicationList.stage.stageType|integer|Stage type: 100 (Screening), 101 (Offer), 102 (Pre-onboarding), 200 (Filtering), 201 (Interview), 202 (Test), 205 (No Type), 206 (Trial Work). |data.applicationList[].archived|boolean|Whether archived. |data.applicationList[].archiveReasons|object|Archive reason details. |data.applicationList[].archiveReasons. id|integer|Archive reason ID. |data.applicationList[].archiveReasons.type|integer|Archive type: 1 (Rejected by Candidate), 2 (Rejected by Us), 3 (Hired), 4 (System), 5 (Resigned). |data.applicationList[].archiveReasons.archiveReasonType|integer|Archive reason type: REJECTED_BY_CANDIDATES, REJECTED_BY_US, HIRED, SYSTEM, CHECKOUT. |data.applicationList[].archiveReasons. name|string|Archive reason name. |data.applicationList[].archiveReasons.archivedAt|long|Archive timestamp. |data.applicationList[].hireMode|integer|Recruitment mode: 1 (Social Recruitment), 2 (Campus Recruitment). |data.applicationList[].appliedAt|long|Apply timestamp. |data.applicationList[].createdAt|long|Creation timestamp. |data.applicationList[].updatedAt|long|Last update timestamp. |data.applicationList[].movedAt|long|Stage movement timestamp. |data.applicationList[].ownerInfo|object|Application owner details. |data.applicationList[].ownerInfo.ownerId|integer|Owner ID. |data.applicationList[].ownerInfo.ownerName|string|Owner name.

    Get candidate information in batches based on application Id

    Request example

    curl --location 'https://api.mokahr.com/api-platform/v3/data/getApplictaions\
    --header 'Authorization: ••••••' \
    --header 'Content-Type: application/json' \
    --data '{
        "applicationIds": [411348665]
    }'
    

    Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "applicationList": [
                {
                    "aimWorkCity": null,
                    "applicationId": 411348665,
                    "appliedAt": 1744702215000,
                    "archiveReasons": {
                        "archiveReasonType": null,
                        "archivedAt": null,
                        "id": null,
                        "name": null,
                        "type": null
                    },
                    "archived": false,
                    "candidateBaseInfo": {
                        "activatedAt": null,
                        "age": 23,
                        "archived": true,
                        "archivedAt": 1740043077000,
                        "birthDate": 1004673600000,
                        "candidateId": 201308793,
                        "citizen": {
                            "certificateType": 1,
                            "citizenId": "513426200111024713",
                            "idCardSignOrganization": "",
                            "idCardValidity": ""
                        },
                        "contactInfo": {
                            "countryCallingCode": "86",
                            "email": "2911890697@qq.com",
                            "phone": "18228735128"
                        },
                        "createdAt": 1731651173000,
                        "experience": 1,
                        "gender": 1,
                        "graduateSchool": {
                            "academicDegree": 1,
                            "graduateDate": null,
                            "lastSchool": "清华大学",
                            "lastSpeciality": null
                        },
                        "isBlacklist": false,
                        "name": "乔峰",
                        "nationality": null
                    },
                    "candidateInfo": {
                        "additionalInfo": {
                            "personalInterests": null,
                            "personalUrl": null,
                            "skill": null
                        },
                        "awardInfo": [],
                        "birthYear": 2001,
                        "candidateId": 201308793,
                        "customFieldList": [
                            {
                                "builtinInfoId": null,
                                "candidateId": 201308793,
                                "customFieldId": 225230,
                                "index": 0,
                                "name": "自定义字段单选",
                                "now": null,
                                "section": "jobIntention",
                                "value": 110102
                            }
                        ],
                        "educationInfo": [
                            {
                                "academicDegree": 1,
                                "endTime": null,
                                "id": 202305356,
                                "now": false,
                                "school": "清华大学",
                                "speciality": null,
                                "startTime": null
                            }
                        ],
                        "ethnic": 58,
                        "experienceInfo": [],
                        "intentionInfo": {
                            "aimSalary": null,
                            "forwardIndustry": null,
                            "forwardLocation": "发"
                        },
                        "interestSource": [
                            {
                                "id": null,
                                "level": 1,
                                "name": "校招门户"
                            },
                            {
                                "id": 410239017,
                                "level": 2,
                                "name": "9999"
                            },
                            {
                                "id": 0,
                                "level": 3,
                                "name": "自然流量"
                            }
                        ],
                        "languageInfo": [],
                        "nativePlace": null,
                        "political": null,
                        "portrait": null,
                        "portraitUrl": null,
                        "practiceInfo": [],
                        "projectInfo": [],
                        "salary": null,
                        "switchStatus": null
                    },
                    "checkinInfo": {
                        "correctedAt": null,
                        "headcountId": null,
                        "probation": null
                    },
                    "createdAt": 1744702215000,
                    "hireMode": 2,
                    "invitationUpdateStatus": 0,
                    "job": {
                        "jobId": "8ec55ea0-e437-4875-92b2-1fffaef946a8",
                        "jobTitle": "校招"
                    },
                    "lockInfo": {
                        "lockId": null,
                        "lockType": null,
                        "lockedAt": null
                    },
                    "movedAt": 1744702214000,
                    "ownerInfo": {
                        "ownerId": null,
                        "ownerName": null
                    },
                    "pipeline": {
                        "name": "默认招聘流程",
                        "pipelineId": 37
                    },
                    "sourceInfo": {
                        "category": "校招门户",
                        "recommendReason": null,
                        "recommenderId": null,
                        "sourceId": 410239017,
                        "sourceName": "9999",
                        "sourceType": 2
                    },
                    "stage": {
                        "name": "初筛",
                        "stageId": 56,
                        "stageType": 100
                    },
                    "updatedAt": 1744709040000
                }
            ]
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v3/data/getApplictaions

    Request parameter

    Field Required Description
    applicationIds Yes array[integer]

    Response

    Response body in JSON

    File Type Descrption
    code integer Status code (200 = success, others indicate errors)
    msg string "success" or error message
    data object
    data.applicationList[] object[] List of application details
    data.applicationList[].applicationId integer Application ID
    data.applicationList[].aimWorkCity string Preferred work city
    data.applicationList[].invitationUpdateStatus integer Resume update invitation status: 0:Not invited, 1=Not updated, 2:Updated
    data.applicationList[].candidateBaseInfo object Basic candidate information
    data.applicationList[].candidateBaseInfo.candidateId integer
    data.applicationList[].candidateBaseInfo .name string name
    data.applicationList[].candidateBaseInfo.gender integer Gender: 1 for Male, 2 for Female
    data.applicationList[].candidateBaseInfo.age integer Age
    data.applicationList[].candidateBaseInfo.birthDate long Date of birth (timestamp format)
    data.applicationList[].candidateBaseInfo.nationality string Nationality
    data.applicationList[].candidateBaseInfo.experience integer Work experience (in years)
    data.applicationList[].candidateBaseInfo.createdAt long Creation time (timestamp format)
    data.applicationList[].candidateBaseInfo.archived boolean if any application archived
    data.applicationList[].candidateBaseInfo.archivedAt long Archiving date (timestamp format)
    data.applicationList[].candidateBaseInfo.activatedAt integer Last activation time (timestamp format)
    data.applicationList[].candidateBaseInfo.isBlacklist boolean Whether the candidate is in the blacklist talent pool
    data.applicationList[].candidateBaseInfo.contactInfo object Contact information
    data.applicationList[].candidateBaseInfo.contactInfo.email string Email
    data.applicationList[].candidateBaseInfo.contactInfo.phone string Phone number
    data.applicationList[].candidateBaseInfo.contactInfo.countryCallingCode string Country calling code
    data.applicationList[].candidateBaseInfo.graduateSchool object Graduate school information
    data.applicationList[].candidateBaseInfo.graduateSchool.lastSpeciality string Graduated major
    data.applicationList[].candidateBaseInfo.graduateSchool.lastSchool string Graduated school
    data.applicationList[].candidateBaseInfo.graduateSchool.graduateDate long Graduation date (timestamp format)
    data.applicationList[].candidateBaseInfo.graduateSchool.academicDegree integer Academic degree: 1: Other, 2: Junior high school or below, 3: Senior high school, 4: Secondary vocational school, 5: College, 6: Bachelor's degree, 7: Master's degree, 8: MBA, 9: Doctorate
    data.applicationList[].candidateBaseInfo.citizen object Citizen information
    data.applicationList[].candidateBaseInfo.citizen.citizenId string Certificate number
    data.applicationList[].candidateBaseInfo.citizen.certificateType integer Certificate type: 1: ID card, 2: Hong Kong ID card, 3: Macau ID card, 4: Taiwan ID card, 5: Passport, 6: Other certificates
    data.applicationList[].candidateBaseInfo.citizen.idCardSignOrganization string Issuing authority
    data.applicationList[].candidateBaseInfo.citizen.idCardValidity string Certificate validity period, format: "["2025-03-05","2025-03-21"]"
    data.applicationList[].job object Job information
    data.applicationList[].job.jobId string Job ID
    data.applicationList[].job.jobTitle string Job title
    data.applicationList[].pipeline object Pipeline information
    data.applicationList[].pipeline.pipelineId integer Pipeline ID
    data.applicationList[].pipeline. name string Pipeline name
    data.applicationList[].stage object Stage Information
    data.applicationList[].stage.stageId integer Stage ID
    data.applicationList[].stage. name string Stage name
    data.applicationList[].stage.stageType integer Stage type: 100 - Preliminary screening, 101 - Offer stage, 102 - Pending onboarding,200 - Selection, 201 - Interview, 202 - Test, 205 - No type, 206 - Trial work
    data.applicationList[].archived boolean If archived
    data.applicationList[].archiveReasons object Archiving reason
    data.applicationList[].archiveReasons. id integer Archiving reason ID
    data.applicationList[].candidateBaseInfo.contactInfo.countryCallingCode string Country calling code
    data.applicationList[].candidateBaseInfo.graduateSchool object Graduate school information
    data.applicationList[].candidateBaseInfo.graduateSchool.lastSpeciality string Graduated major
    data.applicationList[].candidateBaseInfo.graduateSchool.lastSchool string Graduated school
    data.applicationList[].candidateBaseInfo.graduateSchool.graduateDate long Graduation date (timestamp format)
    data.applicationList[].candidateBaseInfo.graduateSchool.academicDegree integer Academic degree: 1: Other, 2: Junior high school or below, 3: Senior high school, 4: Secondary vocational school, 5: College, 6: Bachelor's degree, 7: Master's degree, 8: MBA, 9: Doctorate
    data.applicationList[].candidateBaseInfo.citizen object Citizen information
    data.applicationList[].candidateBaseInfo.citizen.citizenId string Certificate number
    data.applicationList[].candidateBaseInfo.citizen.certificateType integer Certificate type: 1: ID card, 2: Hong Kong ID card, 3: Macau ID card, 4: Taiwan ID card, 5: Passport, 6: Other certificates
    data.applicationList[].candidateBaseInfo.citizen.idCardSignOrganization string Issuing authority
    data.applicationList[].candidateBaseInfo.citizen.idCardValidity string Certificate validity period, format: "["2025-03-05","2025-03-21"]"
    data.applicationList[].job object Job information
    data.applicationList[].job.jobId string Job ID
    data.applicationList[].job.jobTitle string Job title
    data.applicationList[].pipeline object Pipeline information
    data.applicationList[].pipeline.pipelineId integer Pipeline ID
    data.applicationList[].pipeline. name string Pipeline name
    data.applicationList[].stage object Stage Information
    data.applicationList[].stage.stageId integer Stage ID
    data.applicationList[].stage. name string Stage name
    data.applicationList[].stage.stageType integer Stage type: 100 - Preliminary screening, 101 - Offer stage, 102 - Pending onboarding,200 - Selection, 201 - Interview, 202 - Test, 205 - No type, 206 - Trial work
    data.applicationList[].archived boolean If archived
    data.applicationList[].archiveReasons object Archiving reason
    data.applicationList[].archiveReasons. id integer Archiving reason ID
    data.applicationList[].archiveReasons.type integer Archiving type:1 Rejected by candidate,2Rejected by us,3 Hired 4 System reason,5 Resigned
    data.applicationList[].archiveReasons.archiveReasonType integer Archiving reason type: REJECTED_BY_CANDIDATES - Rejected by candidate, REJECTED_BY_US - Rejected by us, HIRED - Hired, SYSTEM - System reason, CHECKOUT - Resigned
    data.applicationList[].archiveReasons. name string Archiving reason name
    data.applicationList[].archiveReasons.archivedAt long Archiving time (timestamp format) 
    data.applicationList[].hireMode integer 1=Social Recruitment, 2=Campus Recruitment
    data.applicationList[].appliedAt long Application timestamp (Unix epoch format)
    data.applicationList[].createdAt long Application creation timestamp (Unix epoch format)
    data.applicationList[].updatedAt long Last update timestamp (Unix epoch format)
    data.applicationList[].movedAt long Stage transition timestamp (Unix epoch format)
    data.applicationList[].ownerInfo object Application ownerInfo
    data.applicationList[].ownerInfo.ownerId integer OwnerId
    data.applicationList[].ownerInfo.ownerName string Owner name
    data.applicationList[].candidateInfo object
    data.applicationList[].candidateInfo.candidateId integer Candidate Id
    data.applicationList[].candidateInfo.portrait string Portrait (photo) key
    data.applicationList[].candidateInfo.portraitUrl string Portrait (photo) download UR
    data.applicationList[].candidateInfo.political integer Political 1 PARTY_MEMBER 2 PROBATIONARY_PARTY_MEMBER 3 LEAGUE_MEMBER 4 PARTY_MEMBER_OF_THE_DEMOCRATIC_REVOLUTION 5 A_MEMBER_OF_THE_DEMOCRATIC_LEAGUE 6 MEMBER_OF_CIVIL_CONSTRUCTION_CORPORATION 7 CIVIL_PROGRESS_MEMBER 8 MEMBER_OF_THE_PEASANT_LABOR_PARTY 9 A_MEMBER_OF_THE_PUBLIC_PARTY 10 MEMBER_OF_JIUSAN_SOCIETY 11 MEMBER_OF_THE_TAIWAN_UNION 12 PERSONS_WITHOUT_PARTY_AFFILIATION 13 MASS
    data.applicationList[].candidateInfo.birthYear integer BirthYear
    data.applicationList[].candidateInfo.ethnic integer Ethnic 1:Drung,2:Achang,3:Manchu,4:Dongxiang,5:Dai,6:Korean,7:Gaoshan,8:Lhoba,9:Oroqen,10:Dong,11:Hani,12:She,13:Shui,14:Yao,15:Yi,16:Ewenki,17:Tu,18:Ozbek,19:Pumi,20:Yugur,21:Jing,22:Zhuang,23:Han,24:Bonan,25:Tajik,26:Gelao,27:Bulang,28:Mengol,29:Chuanqing,30:Hui,31:Mulam,32:Salar,33:Kazak,34:Jingpo,35:Tatar,36:Miao,37:Qiang,38:Naxi,39:Li,40:Jino,41:Hezhen,42:Xibe,43:Va,44:Tujia,45:Maonan,46:Kirgiz,47:Deang,48:Tibetan,49:Nu,50:Uygur,51:Lisu,52:Bai,53:Lahu,54:Moinba,55:Russian,56:Tawoer,57:Bouyei,58:UNKNOW
    data.applicationList[].candidateInfo.nativePlace integer Native place (National administrative code, 6-digit district code)
    data.applicationList[].candidateInfo.salary string Salary
    data.applicationList[].candidateInfo.switchStatus integer Employment status (1-Employed, 2-Resigned)
    data.applicationList[].candidateInfo.additionalInfo ** object ** Candidate's additional information
    data.applicationList[].candidateInfo.skill string Skill
    data.applicationList[].candidateInfo.personalInterests string Personal interests
    data.applicationList[].candidateInfo.personalUrl string Personal URL
    data.applicationList[].candidateInfo.educationInfo[] object[] Candidate's educational background
    data.applicationList[].candidateInfo.educationInfo[].id integer Educational record ID
    data.applicationList[].candidateInfo.educationInfo[].school string School
    data.applicationList[].candidateInfo.educationInfo[].speciality string Major
    data.applicationList[].candidateInfo.educationInfo[].academicDegree integer Academic degree (1-Other, 2-Junior high school and below, 3-Senior high school, 4-Vocational secondary school, 5-Junior college, 6-Bachelor's degree, 7-Master's degree, 8-MBA, 9-Doctoral degree)
    data.applicationList[].candidateInfo.educationInfo[].startTime long Start time (timestamp format)
    data.applicationList[].candidateInfo.educationInfo[].endTime long End time (timestamp format)
    data.applicationList[].candidateInfo.educationInfo[].now boolean Indicates whether the end time is "present". When the end time is the present, now=true, in this case, the value of endTime may be arbitrary and can be ignored.
    data.applicationList[].candidateInfo.experienceInfo[] object[] Candidate's work experience
    data.applicationList[].candidateInfo.experienceInfo[].id integer Work experience ID
    data.applicationList[].candidateInfo.experienceInfo[].company string Company
    data.applicationList[].candidateInfo.experienceInfo[].title string Position title
    data.applicationList[].candidateInfo.experienceInfo[].summary string Job responsibilities
    data.applicationList[].candidateInfo.experienceInfo[].location string Workplace location
    data.applicationList[].candidateInfo.experienceInfo[].industry string Industry
    data.applicationList[].candidateInfo.experienceInfo[].leader string Reporting to
    data.applicationList[].candidateInfo.experienceInfo[].size string Company size
    data.applicationList[].candidateInfo.experienceInfo[].type string Company nature
    data.applicationList[].candidateInfo.experienceInfo[].department string Department
    data.applicationList[].candidateInfo.experienceInfo[].reasonForLeaving string Reason for leaving
    data.applicationList[].candidateInfo.experienceInfo[].salary string Salary
    data.applicationList[].candidateInfo.experienceInfo[].underlingNumber string Number of subordinates
    data.applicationList[].candidateInfo.experienceInfo[].startTime long Start time (timestamp format)
    data.applicationList[].candidateInfo.experienceInfo[].endTime long End time (timestamp format)
    data.applicationList[].candidateInfo.experienceInfo[].now boolean Indicates whether the end time is "present". When the end time is the present, now=true, in this case, the value of endTime may be arbitrary and can be ignored.
    data.applicationList[].candidateInfo.awardInfo[] object[] Candidate award information
    data.applicationList[].candidateInfo.awardInfo[].id integer Award experience ID
    data.applicationList[].candidateInfo.awardInfo[].awardDate string Award date
    data.applicationList[].candidateInfo.awardInfo[].awardName string Award name
    data.applicationList[].candidateInfo.customFieldList[] object[] Candidate extended information
    data.applicationList[].candidateInfo.customFieldList[].customFieldId integer Custom field ID
    data.applicationList[].candidateInfo.customFieldList[].candidateId integer Candidate ID
    data.applicationList[].candidateInfo.customFieldList[].name string Custom field name
    data.applicationList[].candidateInfo.customFieldList[].value object Custom field value, returns different types of values based on the field type
    data.applicationList[].candidateInfo.customFieldList[].section string Field module, declares which parent-level custom field it belongs to: basicInfo Personal information, jobIntention Job intention, experienceInfo Work experience, educationInfo Education background, practiceInfo Internship experience, projectInfo Project experience, languageInfo Language ability, selfDescription Self-description, awardInfo Award information
    data.applicationList[].candidateInfo.customFieldList[].now boolean Exists for time period fields, indicates whether the end time is "present". When now=true, endTime may have any value and can be ignored.
    data.applicationList[].candidateInfo.customFieldList[].index integer Index, for modules with multiple data entries (e.g., work experience or education background), index indicates the order of this custom field information.
    data.applicationList[].candidateInfo.customFieldList[].builtinInfoId integer Links custom info to its module (e.g., specific work or education experience)
    data.applicationList[].candidateInfo.projectInfo[] object[] Candidate project experience
    data.applicationList[].candidateInfo.projectInfo[].id integer Project experience ID
    data.applicationList[].candidateInfo.projectInfo[].candidateId integer Candidate ID
    data.applicationList[].candidateInfo.projectInfo[].projectName string Project name
    data.applicationList[].candidateInfo.projectInfo[].projectDescription string Project description
    data.applicationList[].candidateInfo.projectInfo[].title string Role held
    data.applicationList[].candidateInfo.projectInfo[].responsibilities string Responsibilities in the project
    data.applicationList[].candidateInfo.projectInfo[].startTime long Start time (timestamp)
    data.applicationList[].candidateInfo.projectInfo[].endTime long End time (timestamp)
    data.applicationList[].candidateInfo.projectInfo[].now boolean Indicates if the end time is "present". If true, ignore endTime.
    data.applicationList[].candidateInfo.languageInfo object[] Candidate language information
    data.applicationList[].candidateInfo.languageInfo[].id integer Language info ID
    data.applicationList[].candidateInfo.languageInfo[].language string Language type
    data.applicationList[].candidateInfo.languageInfo[].level string Proficiency level
    data.applicationList[].candidateInfo.languageInfo[].listenAndSpeak string Listening and speaking skills
    data.applicationList[].candidateInfo.languageInfo[].readAndWrite string Reading and writing skills
    data.applicationList[].candidateInfo.practiceInfo[] object[] Candidate internship experience
    data.applicationList[].candidateInfo.practiceInfo[].id integer Project experience ID
    data.applicationList[].candidateInfo.practiceInfo[].candidateId integer Candidate ID
    data.applicationList[].candidateInfo.practiceInfo[].company string Company name
    data.applicationList[].candidateInfo.practiceInfo[].title string Job title
    data.applicationList[].candidateInfo.practiceInfo[].summary string Job responsibilities
    data.applicationList[].candidateInfo.practiceInfo[].location string Job location
    data.applicationList[].candidateInfo.practiceInfo[].industry string Industry
    data.applicationList[].candidateInfo.practiceInfo[].leader string Reporting to
    data.applicationList[].candidateInfo.practiceInfo[].size string Company size
    data.applicationList[].candidateInfo.practiceInfo[].type string Company type
    data.applicationList[].candidateInfo.practiceInfo[].department string Department
    data.applicationList[].candidateInfo.practiceInfo[].salary string Salary
    data.applicationList[].candidateInfo.practiceInfo[].startTime long Start time (timestamp)
    data.applicationList[].candidateInfo.practiceInfo[].endTime long End time (timestamp)
    data.applicationList[].candidateInfo.practiceInfo[].now boolean Indicates if end time is "present". If true, ignore endTime
    data.applicationList[].candidateInfo.interestSource object[] Candidate interest source info
    data.applicationList[].candidateInfo.interestSource[].id integer Interest source ID
    data.applicationList[].candidateInfo.interestSource[].name string Name
    data.applicationList[].candidateInfo.interestSource[].level integer Level
    data.applicationList[].candidateInfo.intentionInfo object Candidate intention info
    data.applicationList[].candidateInfo.intentionInfo.forwardIndustry string Expected industry
    data.applicationList[].candidateInfo.intentionInfo.aimSalary string Expected salary
    data.applicationList[].candidateInfo.intentionInfo.forwardLocation string Expected city
    data.applicationList[].checkinInfo object Onboarding info
    data.applicationList[].checkinInfo.probation integer Probation period (months)
    data.applicationList[].checkinInfo.correctedAt long Confirmation date (timestamp)
    data.applicationList[].checkinInfo.headcountId integer Recruitment demand ID
    data.applicationList[].lockInfo object Lock info
    data.applicationList[].lockType integer Lock type: 1=Full yellow, 2=Full gray, 3=Project yellow, 4=Project gray, 5=Group yellow, 6=Group gray, 7=Stage yellow, 8=Stage gray
    data.applicationList[].lockedAt long Lock time (timestamp)
    data.applicationList[].lockId integer Lock ID
    data.applicationList[].sourceInfo object Source info
    data.applicationList[].sourceInfo.sourceId integer Source ID
    data.applicationList[].sourceInfo.sourceName string Source name
    data.applicationList[].sourceInfo.sourceType integer Resume source: 1=Active search, 2=Active submission, 3=Internal recommendation, 4=Headhunter recommendation
    data.applicationList[].sourceInfo.recommenderId integer Recommender ID (for internal/headhunter recommendation)
    data.applicationList[].sourceInfo.recommendReason string Recommendation reason (for internal/headhunter recommendation)
    data.applicationList[].sourceInfo.category string Channel category info

    Talent poolAPI

    Check Talent pool list

    The return value is a list of talent pools set under this customer

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/talentPool/list?hireMode=1 \
       -u 'your_api_key:' \
       -X GET \
    

    >

    [
      {
        "id": 115,
        "name": "系统入职Talent pool",
        "description": "保存Regular employee的员工,仅对授权用户、Administrator及以上权限用户可见",
        "hire_mode": 1,
        "isPrivate": 0
      },
      {
        "id": 116,
        "name": "系统公共Talent pool",
        "description": "所有HR权限及以上用户可见,用户可浏览公共Talent pool中所有Candidate",
        "hire_mode": 1,
        "isPrivate": 0
      },
      {
        "id": 117,
        "name": "系统Blacklist ",
        "description": "",
        "hire_mode": 1,
        "isPrivate": 0
      }
    ]
    

    > 传rangeParameter视为新版本,Response example

    {
        "success": true,
        "msg": "success",
        "data": [{
                "id": 21,
                "name": "系统入职Talent pool",
                "description": "所有HR权限及以上用户可见,用户可浏览其相关职位下的Regular employeeCandidate",
                "hireMode": 1,
                "isPrivate": 0,
                "creatorId": null,
                "authUsers": []
            },
            {
                "id": 22,
                "name": "系统公共Talent pool",
                "description": "所有HR权限及以上用户可见,用户可浏览公共Talent pool中所有Candidate",
                "hireMode": 1,
                "isPrivate": 0,
                "creatorId": null,
                "authUsers": []
            },
            {
                "id": 36,
                "name": "测试111",
                "description": "",
                "hireMode": 1,
                "isPrivate": 1,
                "creatorId": 1,
                "authUsers": [{
                        "userId": 1,
                        "name": "haha",
                        "email": "haha@trymoka.com",
                        "phone": "18812345678",
                        "number": null
                    },
                    {
                        "userId": 16,
                        "name": "small hr ceshi",
                        "email": "why_pm@163.com",
                        "phone": null,
                        "number": null
                    }
                ]
            },
            {
                "id": 203,
                "name": "系统Blacklist ",
                "description": null,
                "hireMode": 1,
                "isPrivate": 0,
                "creatorId": null,
                "authUsers": []
            }
        ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/talentPool/list?hireMode=1

    Request parameter

    Field Required Description
    hireMode No Optional values are:1:experienced hires
    2: Campus recruitment Do not pass default all modes
    range No open/all The range of talent pool response data (The default is to return the public talent pool except for the regular employee talent pool and the blacklist when passing nothing or open)

    Response

    Response body in JSON

    Field Type Description
    id integer Talent pool id
    name string Talent pool name
    description string Description
    hire_mode integer Optional values are:
    1:Experienced hires
    2: Campus recruitment
    isPrivate integer Optional values are:
    0:Private pool
    1: Public talent pool
    creatorId integer Creator id
    authUsers Array Authorized user
    authUsers[].userId integer Authorized user id
    authUsers[].name string Authorized user name
    authUsers[].email string Authorized user email
    authUsers[].phone string Authorized user phone
    authUsers[].number string Authorized user employee No.

    Check Talent pool下Candidate

    Response value为该客户下Talent pool里Candidate相关信息 分页Response一页20条数据

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/talentPool/Candidates?archivedAtStart=2019-06-01&archivedAtEnd=2019-11-01&talentPoolIds=[666,888] \
       -u 'your_api_key:' \
       -X GET \
    

    > Response example

    {
        "success": true,
        "data": {
            "Candidates": [{
                    "id": 4293,
                    "name": "姜浩",
                    "email": "82355110791@qq.com",
                    "phone": "18762604190",
                    "gender": "Male",
                    "birthYear": null,
                    "ethnic": null,
                    "nationality": null,
                    "nativePlace": null,
                    "highestDegree": null,
                    "certificateType": 1,
                    "citizenId": null,
                    "location": null,
                    "CandidateArchivedAt": "2019-10-30T07:28:26.000Z",
                    "archiveHistory": [{
                        "id": 39131,
                        "stageId": 56,
                        "stage": "Initial screen",
                        "archivedAt": "2019-10-30T07:28:26.000Z",
                        "archiveReasonId": 1113,
                        "archiveReason": "加入Blacklist ",
                        "archiveType": "系统原因",
                        "archiveDetail": null,
                        "blacklistTags": "态度恶劣,简历造假",
                        "blacklistDetail": "789"
                    }],
                    "talentPools": [{
                        "talentPoolId": 203,
                        "talentPoolName": "系统Blacklist "
                    }]
                }, {
                    "id": 21906,
                    "name": "fanhaha",
                    "email": "fanhaha@mokahr.com",
                    "phone": null,
                    "gender": null,
                    "birthYear": null,
                    "ethnic": null,
                    "nationality": null,
                    "nativePlace": null,
                    "highestDegree": null,
                    "certificateType": 1,
                    "CandidateArchivedAt": "2019-10-17T05:26:57.000Z",
                    "archiveHistory": [{
                        "id": 39162,
                        "stageId": 56,
                        "stage": "Initial screen",
                        "archivedAt": "2019-10-17T05:26:57.000Z",
                        "archiveReasonId": 7,
                        "archiveReason": "胜任力不足",
                        "archiveType": "我们Reject了Candidate",
                        "archiveDetail": null
                    }],
                    "talentPools": [{
                        "talentPoolId": 22,
                        "talentPoolName": "系统公共Talent pool"
                    }]
                },
                {
                    "id": 8805,
                    "name": "邓婷婷",
                    "email": "18857886047@163.com",
                    "phone": "18857886047",
                    "gender": "Female",
                    "birthYear": 1990,
                    "ethnic": null,
                    "nationality": null,
                    "nativePlace": null,
                    "highestDegree": null,
                    "certificateType": 1,
                    "CandidateArchivedAt": "2019-10-17T05:26:57.000Z",
                    "archiveHistory": [{
                            "id": 15793,
                            "stageId": 56,
                            "stage": "Initial screen",
                            "archivedAt": "2017-08-18T07:51:24.000Z",
                            "archiveReasonId": 96,
                            "archiveReason": "淘汰",
                            "archiveType": "我们Reject了Candidate",
                            "archiveDetail": null
                        },
                        {
                            "id": 39132,
                            "stageId": 56,
                            "stage": "Initial screen",
                            "archivedAt": "2019-10-17T05:26:57.000Z",
                            "archiveReasonId": 7,
                            "archiveReason": "胜任力不足",
                            "archiveType": "我们Reject了Candidate",
                            "archiveDetail": null
                        }
                    ],
                    "talentPools": [{
                            "talentPoolId": 37,
                            "talentPoolName": "中级产品类"
                        },
                        {
                            "talentPoolId": 22,
                            "talentPoolName": "系统公共Talent pool"
                        }
                    ]
                }
            ],
            "nextCursor": "eyJjYW5kaWRhdGVJZCI6MTQzMzR9"
        }
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/talentPool/Candidates?archivedAtStart=2019-06-01&archivedAtEnd=2019-11-01

    Request parameter

    Field Required Type Description
    archivedAtStart Yes string Minimum archive time
    archivedAtEnd Yes string Maximum archive time
    talentPoolIds No Array Talent pool id list
    nextCursor No string Next page (20 entries per page) paging mark

    Response

    The Candidates field information of returned data is as follows:

    Field Type Description
    id integer Candidate id
    name string Name
    email string Email
    phone string Phone
    gender string Gender
    birthYear string Birthyear
    ethnic string Ethnicity
    nationality string Nationality
    nativePlace string Birthplace
    highestDegree string Highest education
    certificateType integer Certificate type
    Optional values are:
    1: id card
    2: Hong Kong id card
    3: Macau id card
    4:Taiwan id card
    5: Passport
    6: Other identity document
    7: Exit-Entry Permit for Travelling to and from Hong Kong and Macau (EEP)
    8: The Mainland Travel Permit for Taiwan Residents
    9: Foreigners' Work Permit
    10:Residence Permit for Foreigner
    citizenId string identification No.
    location string Location
    CandidateArchivedAt string Last archive time of Candidate
    archiveHistory Array Application archive record
    archiveHistory[].id integer applicationID
    archiveHistory[].stageId integer The stage name of pre-archive id
    archiveHistory[].stage string The stage name of pre-archive
    archiveHistory[].archivedAt string Archive application time
    archiveHistory[].archiveReasonId integer Reason for archiveID
    archiveHistory[].archiveReason string Reason for archive
    archiveHistory[].archiveType string Archive type
    archiveHistory[].archiveDetail string Archive details
    archiveHistory[].blacklistTags string Blacklist tags (only in blacklist pool)
    archiveHistory[].blacklistDetail string Blacklist reason (only in blacklist pool)
    talentPools Array The talent pool list that current Candidate in
    talentPools[].talentPoolId integer Talent poolID
    talentPools[].talentPoolName string Talent pool name

    Check the list of archive reasons for user rejection types

    The return value is all rejection reasons set under the customer, including system default and custom

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/archiveReasons \
       -u 'your_api_key:' \
       -X GET \
    

    > Response example

    {
      "success": true,
      "data": [
        {
          "id": 419,
          "name": "福利待遇不满足",
          "type": 1
        },
        {
          "id": 420,
          "name": "Work location较远",
          "type": 1
        },
        {
          "id": 421,
          "name": "有更好的机会",
          "type": 1
        },
        {
          "id": 422,
          "name": "对公司业务不感兴趣",
          "type": 1
        },
        {
          "id": 423,
          "name": "Others",
          "type": 1
        }
      ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/archiveReasons

    Request parameter

    None

    Response

    Response body in JSON

    Field Type Description
    id integer Reason for archive id
    name string Reason for archive
    type integer Type of archive reason
    Optional values are:
    1: Rejected by Candidate
    2: Rejected by us

    Move/duplicate candidates to specified talent pool

    Move/duplicate candidates to specified talent pool

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/v1/reserveOtherTalentPool' \
                --header 'Authorization: Basic ZndyMDAzOg==' \
                --header 'Content-Type: application/json' \
                --data-raw '{
                    "CandidateIds": [
                        201214451
                    ],
                    "hireMode": 2,
                    "fromTalentPoolId": 200003160,
                    "toTalentPoolIds": [
                        200003270
                    ],
                    "archiveMode": "cut",
                    "operatorEmail": "liutao1@mokahr.com"
                }'
    

    > Response example

    {
        "code": 0,
        "msg": "Success"
    }
    

    HTTP request

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

    Request parameter

    Field Required Type Description
    archiveMode Yes string Store to other talent pool method cut/copy
    CandidateIds Yes array[integer] Candidate ids
    toTalentPoolIds Yes array[integer] Talent pool id
    fromTalentPoolId Yes integer Current talent pool id
    hireMode Yes integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    operatorEmail Yes string Operator email

    Response

    Response body in JSON

    Field Type Description
    code integer 0:Set successfully
    1: Failure
    msg string Success

    Archive application: whether to send rejection letter function

    Archive application: whether to send rejection letter function

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/v1/archiveApplicationToTalentPool' \
                --header 'Authorization: Basic ZndyMDAzOg==' \
                --header 'Content-Type: application/json' \
                --data-raw '{
                    "reasonId": 2455,
                    "detail": "不满足",
                    "applicationIds": [
                        411250317
                    ],
                    "talentPoolIds": [
                        200003160
                    ],
                    "hireMode": 2,
                    "operatorEmail": "fwr003@163.com"
                }'
    

    > Response example

    {
        "code": 0,
        "msg": "Success"
    }
    

    HTTP request

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

    Request parameter

    Field Required Type Description
    applicationIds Yes array[integer] Application ids
    businessUnitId NO number bu id
    detail No string Reason for archive
    hireMode Yes integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    needRefuse No boolean true will check the settings of the org to send a rejection message.
    operatorEmail Yes string Operator email
    reasonId No integer Reason for archiveID
    talentPoolIds Yes array[integer] Targeted talent pool ids

    Response

    Response body in JSON

    Field Type Description
    code integer 0:Set successfully
    1: Failure
    msg string Success

    Import data to talent pool

    HTTP request

    POST https://api.mokahr.com/api-platform/v2/syncCandidates

    > Request example (application/json)

    $ curl https://api.mokahr.com/api-platform/v2/syncCandidates \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '{
        "orgId":"livingsimple",
        "CandidateName": "test",
        "CandidatePhone": "18700998899",
        "CandidateEmail": "1234@test.com",
        "note": "测试Note",
        "talentPoolId": 200000131,
        "email": "xiedi@mokahr.com",
        "resignDepartment": "Terminated department",
        "reason": 1,
        "detail": "世界那么大,我想去看看",
        "time": "2020-01-01 00:00:00",
        "channelType": 5,
        "channelName": "Talent pool",
        "source": 0,
        "jobId": "07af7045-b4e7-43eb-ba64-87128c4df3bf",
        "CandidateAge": 18,
        "CandidateGender": "Male",
        "CandidateLastCompany": "天南",
        "CandidateLastSpeciality": "化工",
        "CandidateAcademicDegree": "Bachelor degree",
        "hiredTime": "2020-01-01 00:00:00",
        "educationInfo": [
            {
                "school": "北京大学",
                "startDate": "2014-09",
                "endDate": "2017-06",
                "speciality": "软件工程",
                "academicDegree": "Bachelor degree"
            }
        ],
        "experienceInfo": [
            {
                "company": "百度",
                "startDate": "2014-09",
                "endDate": "2017-06",
                "title": "初级工程师",
                "summary": "负责产品功能实现"
            },{
                "company": "百度",
                "startDate": "2014-09",
                "endDate": "2017-06",
                "title": "初级工程师",
                "summary": "负责产品功能实现"
            }
        ],
        "projectInfo": [
            {
                "projectName": "项目1",
                "startDate": "2017-01",
                "endDate": "2017-11",
                "projectDescription": "Project function description",
                "title": "后端工程师",
                "responsibilities": "项目职责"
            },
            {
                "projectName": "项目2",
                "startDate": "2017-01",
                "endDate": "2017-11",
                "projectDescription": "Project function description",
                "title": "后端工程师",
                "responsibilities": "项目职责"
            }
        ],
        "practiceInfo": [
            {
                "company": "腾讯",
                "title": " Internship工程师",
                "startDate": "2017-01",
                "endDate": "2017-11",
                "summary": "负责简单的功能实现"
            },{
                "company": "腾讯",
                "title": " Internship工程师",
                "startDate": "2017-01",
                "endDate": "2017-11",
                "summary": "负责简单的功能实现"
            }
        ],
        "jobIntention": {
            "aimSalary": "7000-13000元/月",
            "forwardLocation": "北京"
        },
        "selfDescription": {
            "personal": "人经历丰富,在校担任过部长,主持人以及新生教官. "
        },
        "customFields": [
            {
                "id": 146,
                "value": "22",
                "index": 0
            },
            {
                "id": 121,
                "value": "22",
                "index": 10
            },
            {
                "id": 124,
                "value": "bbb",
                "index": 0
            },
            {
                "id": 130,
                "value": {"endDate":"2020-01","startDate":"2021-01"},
                "index": 0
            }
        ],
        "isResignWriteJob": true,
        "resignJobName": "工程师",
        "resignJobType": "技术"
    }'
    

    > Request example(multipart/form-data)

    $ curl https://api.mokahr.com/api-platform/v2/syncCandidates \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: multipart/form-data' \
       -F 'basicInfo={"CandidateName": "王五","age": 20,"gender": "Male","CandidatePhone": "13800000000","CandidateEmail":"test@mokahr.com","jobId":"330fd7e3-45a1-4705-828c-7e1beafad355","talentPoolId":200004785,"email":"test@mokahr.com"}' \
       -F 'resume=@/path/to/resume/张三.pdf' \
       -F 'attachments=@/path/to/attachments/attach1.txt'
    

    > Response示for example

    {
        "code": 200,
        "msg": "success",
        "data": {
            "applicationId": 189316652,
            "CandidateId": 168776432
        }
    }
    

    > FailureResponse实for example

    {
        "code": 40040102,
        "msg":  "Archive reason cannot be found,归档信息Error"
    }
    

    Request body parameter(application/json)

    Field Required Type Description
    CandidateName Yes string Candidate name
    CandidatePhone Yes string Candidate phone
    CandidateEmail Yes string Candidate email
    note No string Note
    channelType No string Source type
    If not match
    Optional values are:
    1: Recruitment website (the recruitment website that moka has docked))
    2: Experienced hires portal
    3: Employee referral portal
    4:Headhunter
    5:Talent pool
    6: Other sources
    7: Internally owned
    8: Recruitment website (the first custom source by client)
    9: Job fair
    10:Forum
    11:SNS
    12:Others
    Default: 5
    sourceStatistics No string Source effect
    It is required when the channel_type is 2,3,4. The importing will fail if not fill it.
    channelName No string Source
    If not matched, default: Talent pool
    source No int From
    Default source for each channel
    Optional values are:
    1: Active search
    2:Direct delivery
    3:Talent recommendation
    appliedAt No string Apply time
    If it is null, using the system time by default.
    The format complies with the ISO8061 standard
    jobId Yes string Position id
    CandidateAge No integer Candidate age
    CandidateGender No string Candidate gender
    CandidateLastCompany No string Recent company
    CandidateLastSpeciality No string Recent graduate major
    CandidateAcademicDegree No string Highest education
    educationInfo No array Education experience
    educationInfo[].school No string School
    educationInfo[].startDate No Format complies with the ISO8601 standard string Start time
    educationInfo[].endDate No Format complies with the ISO8601 standard string End time
    educationInfo[].speciality No string Major
    educationInfo[].academicDegree No string Education
    experienceInfo No array Work experience
    experienceInfo[].company No string Company name
    experienceInfo[].startDate No Format complies with the ISO8601 standard string Start time
    experienceInfo[].endDate No The format complies with the ISO8061 standard string End time
    experienceInfo[].title No string position
    experienceInfo[].summary No string Job responsibility
    projectInfo No array Project experience
    projectInfo[].projectName No string Project name
    projectInfo[].startDate No Format complies with the ISO8601 standard string Start time
    projectInfo[].endDate No Format complies with the ISO8601 standard string End time
    projectInfo[].title No string Job title and duty in project
    projectInfo[].projectDescription No string Project function description
    projectInfo[].responsibilities No string Responsibility in project
    practiceInfo No array Intern experience
    practiceInfo[].company No string Company name
    practiceInfo[].title No string Job title
    practiceInfo[].startDate No Format complies with the ISO8601 standard string Start time
    practiceInfo[].endDate No Format complies with the ISO8601 standard string End time
    practiceInfo[].summary No string Job responsibility
    jobIntention No object Preferred job
    jobIntention.aimSalary No string Preferred salary
    jobIntention.forwardLocation No string Preferred city
    selfDescription No object Self- description
    selfDescription.personal No object Self-description
    customFields[].id No integer Custom field id
    customFields[].value No string Custom field value
    customFields[].index No number If the current module data is an array and contains custom fields, the value is required and consistent with the array subscript (Note: custom module data is supported)
    talentPoolId Yes int If it is a recruiting talent pool, you need to fill in: hired_type, hired_time
    If it is a resigned talent pool, you must fill in: resign_type, resign_detail, resign_time
    The talent pool id is Blacklist id if you need to import to blacklist.
    This field is required if you want to import talent pool
    email Yes string User email
    The email address of the user with talent pool permissions, this field is required when archiving Candidates
    hiredTime No string Onboard time
    Using request time by default
    isResignWriteJob No boolean Whether to write back the resignation information
    Optional values are:
    0:Disable
    1: Enable, and requires terminated position
    Default: 0
    resignJobName No string Terminated position
    resignDepartment No string Terminated department
    reason No int Reason for resignation
    Optional values are:
    0:Terminated employment
    1: Resignation
    2: Dismission
    detail No string Terminate employment details
    If terminated employment, this field is required
    time No string Terminate time (Date format: ISO8601)
    If null, it is the current time
    political No string Political status
    certificateType No string Certificate type
    Enum value
    1: id card
    2: id card(Hong Kong. China
    3: id card(Macau, China)
    4: id card(Taiwan, China)
    5: Passport
    6: Other identity document
    7:Exit-Entry Permit for Travelling to and from Hong Kong and Macau (EEP)
    8: The Mainland Travel Permit for Taiwan Residents
    9: Foreigners' Work Permit
    10:Residence Permit for Foreigner
    citizenId No string identification No.

    Request body parameter (multipart/form-data)

    Field Type Description
    CandidateInfo string A string in json format, the field is the same as the body of the json request
    resume file resume file
    resume file Resume file
    attachments file Attachment, which can pass multiple attachments at the same time.

    Response

    Response body in JSON

    Field Type Description
    msg string Error info
    code integer Response code
    data object Respond data

    Possible error info

    code errorMessage Illustration
    200 success Success
    1240040102 channel_source.error Source error
    1240040104 talent_pool_Id.error Talent pool error
    1240040105 userId.error User id error (a. the user does not exist; b. id error)
    1240040106 user_permission.error The user no permission

    Position API

    Check position field

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/jobs-fields?currentHireMode=1
      -u 'your-api_key:' \
    

    The interface for checking job fields mainly allows users to query job fields created in the system, including system default fields and custom fields

    > Response example

    {
      "success": true,
      "data": [
        {
          "id": 432,
          "name": "Job category",
          "type": "string_info",
          "detail": null,
          "isRequired": 0,
          "isVisiable": 1,
          "isBuiltin": 1
        },
        {
          "id": 433,
          "name": "Work location",
          "type": "select_info",
          "detail": null,
          "isRequired": 0,
          "isVisiable": 1,
          "isBuiltin": 1
        },
        {
          "id": 434,
          "name": "Work experience",
          "type": "string_info",
          "detail": null,
          "isRequired": 0,
          "isVisiable": 1,
          "isBuiltin": 1
        }
      ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/jobs-fields

    Request query parameter

    Field Type Description
    currentHireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Response

    Response body in JSON

    Field Type Description
    id integer Field ID
    name string Field name
    type string Field type
    detail string Field details
    isRequired integer Required
    isVisiable integer Whether to hide
    isBuiltin integer Whether it is in the system

    Create position

    > Request example

    $ curl -X POST \
      'https://api.mokahr.com/api-platform/v1/jobs?currentHireMode=1' \
      -u 'your-api-key:' \
      -H 'Content-Type: application/json' \
      -d '{
        "title": "API测试",
        "status": "open",
        "commitment": "测试",
        "departmentCode": "1111",
        "minSalary": 20,
        "maxSalary": 50,
        "education": "Bachelor degree",
        "jobPriorityId": 13,
        "managerEmail": "limeng@mokahr.com",
        "hrAssistantEmails": [ "zhangsan@mokahr.com" ],
        "hiringManagerEmails": [ "lisi@mokahr.com" ],
        "interviewerEmails": [ "wangwu@mokahr.com" ],
        "interviewerNumbers": [ "1234", "2345" ],
        "jobRankIds": [113, 114],
        "customData": {
          "2": "北京",
          "5": "50",
          "9":["1723553256175","1723553256176"]
        },
        "pipelineId": 12,
        "headcountIds": [1,2,3],
        "finishedAt": "2020-04-15 00:00:00",
        "siteIds":[29189,29190],
        "storeIds":[1234,4567]
      }'
    

    Create position via interface in Moka system;Creating position time is the start recruitment time

    > Response example

    {
      "success": true,
      "data": {
        "jobId": "d7556714-6de1-4a14-82d8-2a8fc1ac7624",
        "mjCode": "MJ001789"
      }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/jobs?currentHireMode=1

    Request query parameter

    Field Type Description
    currentHireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Request body parameter operator number

    Field Whether it is required Type Description
    title Yes string Job title
    status No string Position status
    Optional values are:
    open:open
    closed:Close
    pause:pause
    description No string Employment description
    commitment Yes string Employment type
    Optional value:
    Full-time
    Part-time
    Internship
    Other
    departmentCode No string Department code
    number No integer No.of vacancy
    minSalary No integer Salary floor
    maxSalary No integer Salary ceiling
    salaryUnit No integer Salary unit
    Optional values:
    6:Month
    7:Week
    8:Day
    9:Hour
    10:Every time
    payPeriod No integer Number of paid months
    minimum value:12
    Maximum value:24
    paymentMethod No integer Salary payment method
    Optional values:
    0:Daily settlement
    1:Weekly settlement
    2:Monthly settlement
    3:Completion completion
    experience No string Work experience
    Optional values are:
    No limit
    Graduates
    1 year and below
    1-3 years
    3-5 years
    5-10 years
    over 10 years
    education No string Minimum education
    No limit
    Senior high school
    Technical secondary school
    Junior college
    Bachelor degree
    Master degree
    Doctor degree
    jobPriorityId No integer Urgent hiring id
    locationId No integer Work location id
    locationIds No array Multiple work location id. When both location ids and location id exist, location ids is used first.
    managerEmail No string Person in charge email
    managerNumber No string The number field of the person in charge, if this value exists, the managerEmail field will be ignored (the person in charge will be deleted when the managerNumber is -1)
    hrAssistantEmails No Array<string> Position assistant email
    hrAssistantNumbers No Array<string> Position assistant number field, if this value exists, the hrAssistantEmails field will be ignored (when hrAssistantNumbers is an empty array [], the assistant will be cleared)
    hiringManagerEmails No Array<string> Hiring manager email
    hiringManagerNumbers No Array<string> The hiring manager number field, if this value exists, the hiringManagerEmails field will be ignored (when the hiringManagerNumbers is an empty array [], the hiring manager will be cleared)
    interviewerEmails No Array<string> Interviewer email
    interviewerNumbers No Array<string> Interviewer number field, if this value exists, the interviewerEmails field will be ignored (when interviewerNumbers is an empty array [], the interviewer will be cleared)
    jobRankIds No Array<integer> Job level id list
    zhinengId No integer Job function if
    customData No Object Custom data, in the form of key-value pairs. key is the custom field id, and value is the custom field value. If it is a multi-select field, the value is an array of option ID
    pipelineId No integer Recruitment process
    headcountIds No Array<integer> Associate HC list
    finishedAt No string Recruitment deadline, the format complies with ISO 8601 standard
    siteIds No array Website ids
    storeIds No array Store id array, if opened sync switch of department and store, the corresponding store info will be used first when passing department info
    jobTemplateId No number Custom recruitment search id
    isVirtual No boolean Whether to create job function, true: create, job function by default.
    jobIdsForVirtualJobList No array The job function id that the job family needs to be associated with
    applyForms No array Application form
    applyForms[].applyFormId Yes number Application form id
    applyForms[].type Yes string Application form type: NORMAL_PORTAL: general official website, RECOMMENDATION_PORTAL: referral official
    applyForms[].device Yes string Applicable browser type for application form: pc or mobile
    roundFeedbacks No array Interview evaluation
    roundFeedbacks[].roundId Yes number Interview round id
    roundFeedbacks[].feedbackId Yes string Interview evaluation id
    interviewPlanId No string The array of interview plans, as well as the user groups associated with each round under the interview plan. If the roundFeedback array is passed along with the old interview evaluation form, the interview plan will be prioritized
    roundUserGroups No array UserGroupsArray
    roundUserGroups[].roundId No number Interview round ID, which needs to be associated with the round ID of the user group under the interview plan
    roundUserGroups[].userGroupIds No number Multiple user groups can be transferred, but user groups may not be transferred
    subscribersEmails No string[] The resume automatic recommender email address. Support interviewer, hiring manager and above roles. ["lisi@mokahr.com"]
    subscribersNumbers No string[] The resume automatically recommends a manual number. Support interviewer, hiring manager and above roles. [ "1234", "2345" ]
    jobSettingLocale No string Position setting language
    Simplified Chinese:zh-CN
    English:en-US

    Response

    Response body in JSON

    Field Type Description
    jobId string Position id, built-in Moka system
    mjCode string Position code, which can ensure the uniqueness when posting to external system
    subscribersEmails string[] The resume automatic recommender email address. Support interviewer, hiring manager and above roles. ["lisi@mokahr.com"]
    subscribersNumbers string[] The resume automatically recommends a manual number. Support interviewer, hiring manager and above roles. [ "1234", "2345" ]

    Update position

    >Request example

    $ curl -X PUT \
      https://api.mokahr.com/api-platform/v1/jobs/d7556714-6de1-4a14-82d8-2a8fc1ac7624 \
      -u 'your-api-key:' \
      -H 'Content-Type: application/json' \
      -d '{
        "title": "34534783478378",
        "commitment": "786786786786",
        "departmentCode": "1111",
        "education": "Doctor degree",
        "jobPriorityId": null,
        "managerEmail": "limeng@mokahr.com",
        "minSalary": "20000",
        "jobRankIds": [113, 114],
        "customData": {
          "2": "北京",
          "5": "50",
          "9":["1723553256175","1723553256176"]
          }
        },
        "locationIds":[123,3444]
        "pipelineId": 12,
        "headcountIds": [1,2,3],
        "finishedAt": "2020-04-15 00:00:00",
        "storeIds":[1234,4567]
        '
    

    Update existing position information in the system through the interface

    HTTP request

    https://api.mokahr.com/api-platform/v1/jobs/{jobId}

    Request path parameter

    Field Type Description
    jobId string Position id

    Request body parameter

    Consistent with the body parameter of Create a new position

    Fields specific to this interface

    Field Required Type Description
    archive No boolean Whether to put in the talent pool
    Optional values are:
    true:Yes
    false:No
    c:false
    useHeadhunter No boolean Whether to use headhunting(The field has been deprecated,because the system function has been taken offline.)
    Pass true: will not take effect.
    Pass false: remove the position from all headhunter channels.
    Default: false
    tempJobToJob No int Optional values are:
    0 :Keep connected
    1 :Cancel associating
    2 :Reassociate
    Default: 0
    distributeJobId No string Re-associate position id
    displayOnOfficialSite, No boolean Whether to display on career website, Default: false
    displayOnRecommendationSite No boolean Whether to display on referral website, Default: false
    departmentCode No string Department code, the department will be deleted if it is null
    storeIds No array Store id array, if opened sync switch of department and store, the corresponding store info will be used first when passing department info
    publishedAt No string Official website release time, the latest release time of the position on the recruitment website or internal promotion website. If not transmitted, the system will automatically update the time when publishing the position to the official website. If transmitted, the official website publishing time of the position will be updated according to the transmitted value. This time does not need to be modified for non business needs, and the format follows the ISO8601 standard

    > Response example

    {
      "success": true,
      "data": {
        "jobId": "d7556714-6de1-4a14-82d8-2a8fc1ac7624"
      }
    }
    

    Check position

    >Request example

    $ curl -X "POST" \
    "https://api.mokahr.com/api-platform/v1/jobs/getJobs" \
      -u 'your-api-key:' \
      -H 'Content-Type: application/json' \
      -d '{
      "zhinengId": 372,
      "departmentCodes": [
        "1234"
      ],
      "locationIds": [],
      "commitment": " Full-time",
      "updatedEndAt": "2021-10-10",
      "limit": 10,
      "offset": 0,
      "hireMode": "social",
      "updatedFromAt": "2019-08-10",
      "storeCodes": [
        "123",
        "50"
      ],
      "jobId": "",
      "status": "open"
    }'
    
    

    Check existing position information in the system through the interface

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/jobs/getJobs

    > Response example

    {
      "code": 0,
      "msg": "success",
      "data": {
        "total": 1,
        "jobs": [
          {
            "id": "b0a8a988-441d-4fca-a200-b77526ec9ba0",
            "orgId": "livingsimple",
            "title": "网页设计师",
            "status": "open",
            "description": "<div><b>我们Yes谁</b><div> ",
            "minSalary": 1000,
            "maxSalary": 9000,
            "minExperience": 3,
            "maxExperience": 5,
            "number": 10,
            "commitment": " Full-time",
            "education": "Bachelor degree",
            "openedAt": "2017-09-01T21:00:00.000Z",
            "closedAt": "2017-10-01T22:00:00.000Z",
            "hireMode": 1,
            "publishedAt": "2021-03-17T07:10:53.000Z",
            "updatedAt": "2021-03-22T07:05:53.000Z",
            "finishedAt": "2019-08-23T16:00:00.000Z",
            "mjCode": "MJ007995",
            "pipelineId": 21,
            "pipelineName": "审计部",
            "locations": [
              {
                "id": 1,
                "province": "广东",
                "city": "深圳City",
                "area": "福田District",
                "country": "中国",
                "address": "车公庙泰然大厦C座22楼"
              }
            ],
            "prior": 1,
            "stores": [],
            "department": {
              "id": 3,
              "name": "审计部",
              "code": "1234"
            },
            "zhineng": {
              "id": 1,
              "name": "技术类"
            },
            "customFields": [
              {
                "id": 1,
                "name": "Salary范围",
                "value": "100-200",
                "type": "string_info"
              }
            ],
            "isRecommendation": false
          }
        ]
      }
    }
    

    Request body parameter

    Field Required Type Description
    hireMode Yes string Recruitment mode
    Optional values are:
    social:experienced hires
    campus:Campus recruitment
    limit No string Number of entries per page for pagination, default 30
    offset No string The offset used for paging, the indicated index starts from 0
    locationIds No array The address id returned by the address list interface, such as [1,2,3]
    See job address for detailed parameters
    zhinengId No number The address id returned by the function list interface
    See job function for detailed parameters
    siteId No number Website id
    commitment No number Employment type
    Optional values are:
    1: Full-time
    2: Part-time
    3: Internship
    4:Others
    updatedFromAt No string The start time of job screening by update time, such as 2020-06-01
    updatedEndAt No string The end time of job screening by update time, such as 2020-07-01
    status No string Job status: open, close, pause
    jobId No string Position id
    departmentCodes No array Department code list of the current position
    storeCodes No array Store code list of the current position

    Response body in JSON

    Field Type Description
    total integer Total positions
    jobs[] array Position list
    jobs[].id string Position id
    jobs[].title string Job title
    jobs[].status string Position status
    Optional values are:
    open:open
    closed:Close
    pause:pause
    jobs[].description string Employment description
    jobs[].mjCode string Position No.
    jobs[].minSalary integer Salary floor
    jobs[].maxSalary integer Salary ceiling
    jobs[].salaryUnit integer Salary unit
    jobs[].payPeriod integer Number of paid months
    jobs[].paymentMethod integer Salary payment method
    jobs[].minExperience integer Minimum working years
    jobs[].maxExperience integer Maximum working years
    jobs[].number integer No.of vacancy
    jobs[].commitment string Employment type
    Optional value:
    全职
    兼职
    实习
    其他
    jobs[].education string Education requirement
    jobs[].closedAt string Position close time. Date format is: ISO8601
    jobs[].openedAt string Start recruitment time. Date format is: ISO8601
    jobs[].updatedAt string Position update time. Date format is: ISO8601
    jobs[].prior integer Whether in urgent hiring,1为Urgent hiring
    jobs[].hireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    jobs[].publishedAt string Official website release time, the latest release time of the position on the recruitment website or internal promotion website
    jobs[].finishedAt string Recruitment goal finish time
    jobs[].isRecommendation boolean Whether it is a referral position
    jobs[].department object Information about the department where the position is located
    jobs[].department.id integer Department id
    jobs[].department.code integer Department code
    jobs[].department.name string Department name
    jobs[].pipelineId string Process id of the position
    jobs[].pipelineName string Process name of the position
    jobs[].locations array Work location
    jobs[].locations[].id integer Address id
    jobs[].locations[].province string Province
    jobs[].locations[].city string City
    jobs[].locations[].area string Region
    jobs[].locations[].country string Country of the location
    jobs[].locations[].address string Full address of the location
    jobs[].stores array Store of the position
    jobs[].stores.id integer Store id
    jobs[].stores.apiCode string Store code
    jobs[].stores.name string Store name
    jobs[].zhineng object Job function info
    jobs[].zhineng.id integer Job function id
    jobs[].zhineng.name string Job title
    jobs[].customFields array Job title custom fields list
    jobs[].customFields[].id integer Custom field id
    jobs[].customFields[].name string Custom field name
    jobs[].customFields[].type string Custom field type,optional values are: string_info
    bool_info
    jobs[].customFields[].value string The value of the custom field
    jobs[].jobManager object Recruiter (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the synchronization switch of recruiter interface)
    jobs[].jobManager.name string Recruiter name
    jobs[].jobManager.email string Position leader email
    jobs[].jobManager.phone string Recruiter phone
    jobs[].jobManager.number string The number field of recruiter
    jobs[].jobHrAssistant object[] Position assistant (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the official website position interface responsible person synchronization switch)
    jobs[].jobHrAssistant[].name string Position assistant name
    jobs[].jobHrAssistant[].email string Position assistant email
    jobs[].jobHrAssistant[].phone string Position assistant phone
    jobs[].jobHrAssistant[].number string Position assistant number field
    jobs[].jobHiringManager object[] Hiring manager (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the official website position interface responsible person synchronization switch)
    jobs[].jobHiringManager[].name string Hiring manager name
    jobs[].jobHiringManager[].email string Hiring manager email
    jobs[].jobHiringManager[].phone string Hiring manager phone
    jobs[].jobHiringManager[].number string Employer manager number field
    jobs[].jobInterviewer object[] Interviewer (this field is not returned by default, if you want to return it, please contact CSM to configure the function module in the background and open the official website position interface responsible person synchronization switch)
    jobs[].jobInterviewer[].name string Interviewer name
    jobs[].jobInterviewer[].email string Interviewer email
    jobs[].jobInterviewer[].phone string Interviewer phone
    jobs[].jobInterviewer[].number string Interviewer number field
    jobs[].jobTemplateId number Custom recruitment search id
    jobs[].isVirtual boolean true:Job function
    jobs[].applyForms array Application form
    jobs[].applyForms[].applyFormId number Application form id
    jobs[].applyForms[].type string Application type
    Optional value:
    NORMAL_PORTAL:General portal
    RECOMMENDATION_PORTAL: referral website
    jobs[].applyForms[].device string Applicable browser type for application form: pc or mobile
    jobs[].roundFeedbacks array Interview evaluation
    jobs[].roundFeedbacks[].roundId number Interview round id
    jobs[].roundFeedbacks[].feedbackId string Interview evaluation id
    interviewPlanId string Interview Plan ID
    jobs[].roundFeedbacks[].userGroupsIds array User groups id associated with the interview round
    userGroupsId number User groups id
    jobs[].jobRankInfo object Job rank info
    jobs[].jobRankInfo.id Integer Job rank id
    jobs[].jobRankInfo.name string Job rank name
    jobs[].jobRankInfo.type string Job rank type
    jobs[].jobRankInfo.level Integer Job rank level
    jobs[].jobRankInfo.comment string Job rank comment
    jobs[].createAt string job create time
    jobs[].confidential Integer Is the position confidential:
    1:yes
    0:no

    Get recruitment process list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/pipelines/list?currentHireMode=1
      -u 'your-api_key:' \
    

    Get recruitment process list

    > Response example

    {
      "rows": [
        {
          "id": 1,
          "name": "默认流程",
          "disabled": false
        }
      ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/pipelines/list

    Request query

    Field Required Type Description
    currentHireMode Yes integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Response data in JSON

    Field Type Description
    id integer id
    name string Process name
    disabled boolean Whether to disable

    Get position info

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/data/jobs
    

    > Response example

    {
      "data": [
        {
           "id": 1,
           "title": "blabla"
         }
      ],
      "next": "8465195468"
    }
    

    Get position info

    HTTP request

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

    Query

    Field Required Type Description
    fromTime No string The start time of the data, the fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included.
    next No string Paging parameter, if there is more data to be pulled, there will be a next field in the response json, and the next request only needs to add this next parameter to the query. The fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included. If there is no next field in the response, it means that there is no more data
    limit No string Number of entries per page for paging, default 100, max 500.

    Response

    Response body in JSON

    Field Type Description
    id integer Position id
    title string Job title

    Get all movable stage information under the position

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/data/job_stages?jobId=xiaozhao3
    

    > Response example

    [
        {
            "id": 1,
            "name": "Initial screen"
        },
        {
            "id": 2,
            "name": "用人Department筛选"
        },
        {
            "id": 3,
            "name": "面试"
        },
        {
            "id": 4,
            "name": "沟通offer"
        },
        {
            "id": 5,
            "name": "To be onboarded"
        }
    ]
    

    This interface will return all available stage information under the specified position

    HTTP request

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

    Query

    Field Required Type Description
    jobId Yes string Position id

    Response

    Field Type Description
    id integer Stage id
    name string Stage name

    Get job priority list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/job_priority \
      -u 'your-api_key:' \
      -X GET
    

    > Response example

    [
      {
        "id": 488,
        "name": "Urgent hiring",
        "isBuiltin": 1
      },
      {
        "id": 811,
        "name": "特别",
        "isBuiltin": 0
      }
    ]
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/job_priority

    Request parameter

    None

    Response

    Response body in JSON

    Field Type Description
    id integer Job priority id
    name string The displayed name of field
    isBuiltin integer Whether it is built-in

    Get company job level

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/job_ranks \
      -u 'your-api_key:' \
      -X GET
    

    > Response example

    [
        {
            "id": 1,
            "name": "新人",
            "type": "p5",
            "level": 1,
            "comment": "1111"
        },
        {
            "id": 2,
            "name": "中坚",
            "type": null,
            "level": 2,
            "comment": null
        },
        {
            "id": 3,
            "name": "总裁",
            "type": null,
            "level": 3,
            "comment": null
        }
    ]
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/job_ranks

    Request parameter

    None

    Response

    Response body in JSON

    Field Type Description
    id integer Job level id
    name string Title
    type string Setting type
    level integer Level of setting
    comment string Note
    departmentIds array Department id

    Create company job level

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/job_ranks \
      -u 'your-api_key:' \
      -X POST \
      -H 'content-type: application/json' \
      -d '
      {
        "name": "初级",
        "type": "",
        "level": 1,
        "comment": ""
      }
      '
    

    > Response example

    {
      "id": 1,
      "name": "初级",
      "type": "",
      "level": 1,
      "comment": ""
    }
    

    HTTP request

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

    Request body

    Field Required Type Illustration
    name Yes string Level name
    type No string Level type
    level No integer Level
    comment No string Note
    departmentIds No array Department id

    Response JSON

    Field Type Illustration
    id integer Job level id
    name string Level name
    type string Level type
    level integer Level
    comment string Note
    departmentIds array Department id

    Update company job levels

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/job_ranks/1 \
      -u 'your-api_key:' \
      -X PUT
        -H 'content-type: application/json' \
      -d '
      {
        "name": "hcName",
        "type": "",
        "level": 1,
        "comment": ""
      }
      '
    

    > Response example

    {
      "id": 1,
      "name": "初级",
      "type": "",
      "level": 1,
      "comment": ""
    }
    

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/job_ranks/:id

    Request Url parameter

    Field Type Illustration
    id integer id

    Request body

    Field Required Type Illustration
    name No string Level name
    type No string Level type
    level No integer Level
    comment No string Note
    departmentIds No array Department id

    Response JSON

    Field Type Illustration
    id integer Job level id
    name string Level name
    type string Level type
    level integer Level
    comment string Note
    departmentIds array Department id

    Delete company job level

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/job_ranks/1 \
      -u 'your-api_key:' \
      -X DELETE
        -H 'content-type: application/json' \
      -d '
      {
        "mergeToId": 5,
      }
      '
    

    > Response example

    {
      "success": true
    }
    

    HTTP request

    DELETE https://api.mokahr.com/api-platform/v1/job_ranks/:id

    Request Url parameter

    Field Type Illustration
    id integer Delete id

    Request body

    Field Type Illustration
    mergeToId integer Merge to id

    Response JSON

    Field Type Illustration
    success boolean Delete successful or failed

    create Custom field

    > Request example

    $ curl -X POST \
      'https://api.mokahr.com/api-platform/v1/jobs/custom_fields?currentHireMode=1' \
      -u 'your-api-key:' \
      -H 'Content-Type: application/json' \
      -d '{
        "type": "select_info",
        "name": "Work location",
        "isRequired": true,
        "isVisible": true,
        "detail": [
            "Work location1",
            "Work location2",
            "Work location3"
        ]
      }'
    

    Create position via interface in Moka system

    > Response example

    {
      "success": true,
      "data": {
          "jobFieldId": 603
      }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/jobs/custom_fields?currentHireMode={currentHireMode}

    Request query parameter

    Field Type Description
    currentHireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Request body parameter

    Field Type Description
    name string Field name, required
    type string Field type
    Optional value:
    string_info
    select_info
    bool_info
    date_info
    day_info
    text_info
    multi_select_info
    isRequired string Whether it is a required field
    detail array Field details
    isVisible boolean Whether it is visible

    Response

    Response body in JSON

    Field Type Description
    jobFieldId string The ID corresponding to the custom field

    UpdateCustom field

    > Request example

    Case 1: 
    $ curl -X PUT \
      'https://api.mokahr.com/api-platform/v1/jobs/custom_fields/603?currentHireMode=1' \
      -u 'your-api-key:' \
      -H 'Content-Type: application/json' \
      -d '{
        "name": "Work location",
        "isRequired": true,
        "isVisible": true,
        "detail": [
            "Work location1",
            "Work location2",
            "Work location3"
        ]
      }'
    
    Case 2: 
    $ curl -X PUT \
      'https://api.mokahr.com/api-platform/v1/jobs/custom_fields/603?currentHireMode=1' \
      -u 'your-api-key:' \
      -H 'Content-Type: application/json' \
      -d '{
        "name": "Multiple Choice Fields",
        "isRequired": true,
        "isVisible": true,
        "detail": [
            {
                "value": "modified value or original value",
                "optionId": "multiple-choice id"
            },
            {
                "value": "newly added value after modification"
            }
        ]
    }'
    

    Create position via interface in Moka system

    > Response example

    {
      "success": true,
      "data": {
          "jobFieldId": 603
      }
    }
    

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/jobs/custom_fields/{jobFieldId}?currentHireMode={currentHireMode}

    Request path parameter

    Field Type Description
    jobFieldId integer The ID corresponding to the field

    Request query parameter

    Field Type Description
    currentHireMode integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Request body parameter

    Field Type Description
    name string Field name
    isRequired string Whether it is a required field
    detail array Field details
    isVisible boolean Whether it is visible

    Response

    Response body in JSON

    Field Type Description
    jobFieldId string The ID corresponding to the custom field

    Delete Custom field

    > Request example

    $ curl -X DELETE \
      'https://api.mokahr.com/api-platform/v1/jobs/custom_fields/603?currentHireMode=1' \
      -u 'your-api-key:' \
      -H 'Content-Type: application/json'
    

    Create position via interface in Moka system

    > Response example

    {
      "success": true,
      "data": {
          "jobFieldId": "603"
      }
    }
    

    HTTP request

    DELETE https://api.mokahr.com/api-platform/v1/jobs/custom_fields/{jobFieldId}?currentHireMode={currentHireMode}

    Request path parameter

    Field Type Description
    jobFieldId The ID corresponding to the custom field

    Request query parameter

    Field Whether it is required Type Description
    currentHireMode Required integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Response

    Response body in JSON

    Field Type Description
    jobFieldId string The ID corresponding to the custom field

    Check Custom Recruitment settings

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/job-templates/list
      -u 'your-api_key:' \
    

    Check Custom Recruitment settings

    > Response example

    {
      "success": true,
      "data": [
        {
          "id": 100008412,
          "name": "标准简历",
          "hireMode": 1,
          "createdAt": "2020-09-28T06:26:34.000Z"
        },
      ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/job-templates/list

    Request query parameter None

    Field Type Description

    Response

    Response body in JSON

    Field Type Description
    code integer Response code, not 200 represents fail
    msg string Response info
    data[].id integer Unique key
    data[].name string Title
    data[].hireMode number Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    data[].createdAt string Whether to hide

    <a name='create new position'></a>

    Publish/unpublish positions

    Implement job posting or delisting operations on the official website and headhunting platform through interfaces.

    > Request example

    $ curl -X POST --location "https://api.mokahr.com/api-platform/jobs/v1/display_job_on_websites" \
        -H "Content-Type: application/json; charset=utf-8" \
        -u 'your-api_key:' \
        -d "{
              \"orgId\": \"livingsimple\",
              \"jobId\": \"c9705c0d-7131-45a9-86d2-be7c6fe3a208\",
              \"siteIds\": [
                364
              ],
              \"headhunterIds\": \"[200000063,200000094,200000092]\",
              \"headhunterContractIds\": \"[137,1,122,116,132]\",
              \"displayOnRecommendationSite\": false,
              \"displayOnOfficialSite\": true,
              \"displayOnHeadhunterSite\": false
            }"
    

    > Response example

    {
      "code": 0,
      "success": true,
      "data": {
          "operateOfficialSiteSuccess": false,
          "operateRecommendationSiteSuccess": false,
          "operateHeadhunterSiteSuccess": false
      }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/jobs/v1/display_job_on_websites

    Request body(JSON)

    Field Required Type Description
    jobId Yes string Job id
    siteIds Yes array Website id,It is necessary to specify the website where the positions need to be published or removed.
    displayOnOfficialSite No boolean Whether to display on the website. If no parameter is passed, the job posting status remains unchanged; if false is passed, the job will be removed; if true is passed, the job will be published.
    displayOnRecommendationSite No boolean Whether to display on the referral website. If no parameter is passed, the job posting status remains unchanged; if false is passed, the job will be removed; if true is passed, the job will be published.
    recommendationSiteIds No array Internal referral portal id
    displayOnHeadhunterSite No boolean Is it displayed on the headhunting platform. No reference transmission, the job posting status remains unchanged; Pass false, remove the position; Pass true, publish the position
    headhunterIds No array Headhunting consultant ID, please specify which headhunting consultant to publish the position to or remove it from.
    headhunterContractIds No array Headhunter contract ID, please specify which headhunter contract name to publish or remove the position from.

    Response body(JSON)

    Field Type Description
    code integer Response code, other than 200 represents failure.
    msg string Response message
    data[].id integer Unique key
    data[].operateOfficialSiteSuccess boolean Whether the operation on the website is successful, it is false if no parameter is passed or the operation fails.
    data[].operateRecommendationSiteSuccess boolean Whether the operation on the referral website is successful, it is false if no parameter is passed or the operation fails.
    data[].operateHeadhunterSiteSuccess boolean Whether the headhunting operation is successful, whether the parameters are not passed or the operation fails, both are false.

    Obtain functional types

    Get all functional types

    > Request example

    $ curl -X POST --location "https://api.mokahr.com/api-platform/v1/zhineng/getZhineng" \
        -u 'your-api_key:' \
    

    > Response example

    {
        "code": 0,
        "msg": "success",
        "data": [
            {
                "children": [
                    {
                        "children": [
                            {
                                "id": "1111",
                                "label": "技术1-2",
                                "orgId": "daibanap",
                                "parentId": 1112,
                                "sort": 0,
                                "supplementaryLocales": {
                                    "en-US": {
                                        "label": "技术1-2英语"
                                    },
                                    "fr-FR": {
                                        "label": "技术1-2法语"
                                    },
                                    "zh-CN": {
                                        "label": "技术1-2"
                                    }
                                },
                                "version": "1.0"
                            }
                        ],
                        "id": "1112",
                        "label": "技术1-1",
                        "orgId": "daibanap",
                        "parentId": 1113,
                        "sort": 0,
                        "supplementaryLocales": {
                            "zh-CN": {
                                "label": "技术1-1"
                            }
                        },
                        "version": "1.0"
                    },
                    {
                        "id": "1114",
                        "label": "技术2-1",
                        "orgId": "daibanap",
                        "parentId": 1113,
                        "sort": 1,
                        "supplementaryLocales": {
                            "zh-CN": {
                                "label": "技术2-1"
                            }
                        },
                        "version": "1.0"
                    }
                ],
                "id": "1113",
                "label": "技术类",
                "parentId": 0,
                "orgId": "daibanap"
            },
            {
                "id": "1115",
                "label": "产品类",
                "parentId": 0,
                "orgId": "daibanap",
                "supplementaryLocales": {
                    "en-US": {
                        "label": "产品类-英语"
                    },
                    "fr-FR": {
                        "label": "产品类-法语"
                    },
                    "zh-CN": {
                        "label": "产品类"
                    }
                },
                "children": null
            },
            {
                "id": "1116",
                "label": "设计类",
                "parentId": 0,
                "orgId": "daibanap",
                "children": null
            }
        ]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/zhineng/getZhineng

    Response body(JSON)

    Field Type Description
    code integer Response code, other than 200 represents failure.
    msg string Response message
    data[].id string business id
    data[].label string Functional type name
    data[].parentId long Parent level business id
    data[].orgId string organization id
    data[].supplementaryLocales map Multilingual information.The format is as follows {"zh-CN": {"label": "技术2-1"}}
    data[].children[] array Child level functional type information (same as parent level content)

    Job V3 API

    Get job information based on jobId or mjCode

    HTTP request

    POST https://api.mokahr.com/api-platform/v3/job/getJobInfo

    > Request example

    $ curl -X POST --location "https://api.mokahr.com/api-platform/v3/job/getJobInfo" \
        -u 'your-api_key:' \
           -X POST
       -H 'Content-Type: application/json' \
       -d '
        {
          "jobIds": ["111","222"],
          "scene": ""
        } '
    

    Request body parameters

    Field Required Type Description
    jobIds No array Job IDs to query (max 20). At least one of jobIds or mjCodes must have value
    mjCodes No array Job mjcodes to query (max 10). (Recommend using job IDs for better performance. If both job IDs and mjcodes exist, job IDs take precedence)
    scene No string Query scenario. Returns basic job info by default. Contact CSM to get recruiter, assistant, custom fields etc.

    > 请求Respond data样for example:

    {
        "code": 0,
        "codeType": 0,
        "data": [
            {
                "aiEvalAuto": true,
                "aiEvalRequirementInfo": null,
                "aiEvalRequirementSchema": null,
                "aiInfoVersion": 0,
                "aiSchemaVersion": 0,
                "applicationAiEvalEnable": false,
                "applicationAiEvalRequirement": null,
                "approvalState": 0,
                "attributeId": 111,
                "category": null,
                "category2Id": null,
                "closedAt": null,
                "commitment": "全职",
                "createdAt": 1653532481000,
                "creatorId": 123,
                "customFields": [
    
                ],
                "demographicQuestionId": 0,
                "department": {
                    "code": "110",
                    "id": 123,
                    "name": "api测试",
                    "namePath": "api测试",
                    "parentId": null,
                    "path": "api测试"
                },
                "departmentCode": "110",
                "departmentId": 123,
                "description": "<p>12312</p>",
                "education": "中技",
                "enableAiQuestionBank": false,
                "enableEeo": false,
                "experience": "不限",
                "finishedAt": 1654358400000,
                "hasRecommendRewardPlan": false,
                "hcIds": [
                    111
                ],
                "hireMode": 1,
                "id": "123",
                "interviewCityIds": "",
                "interviewPlanId": 1530,
                "isInteralReferral": false,
                "jobApplyFormUseDTOS": [
    
                ],
                "jobCustomAttribute": {
                    "id": "123",
                    "isBuiltin": true,
                    "name": "优先招聘",
                    "orgId": "elegrptest"
                },
                "jobDuty": null,
                "jobFamily": false,
                "jobHiringManager": [
                    {
                        "bindWorkWechat": false,
                        "email": "xxx",
                        "employeeId": "",
                        "employee_id": "",
                        "fullPhone": null,
                        "id": 123,
                        "name": "xxx",
                        "number": null,
                        "phone": "12345678910",
                        "role": 50
                    }
                ],
                "jobHrAssistant": null,
                "jobInterviewer": null,
                "jobLocale": "",
                "jobNumId": 100001,
                "jobRanks": [
                    {
                        "apiCode": "",
                        "campusRecommendRewardRulesId": null,
                        "comment": null,
                        "departmentIds": [
                            0
                        ],
                        "id": 123,
                        "level": 5,
                        "name": "总监",
                        "orgId": "test",
                        "recommendRewardRulesId": null,
                        "status": 0,
                        "type": null
                    }
                ],
                "jobTemplateId": 0,
                "locations": [
                    {
                        "address": "香花桥街道振盈路68号",
                        "area": "青浦区",
                        "city": null,
                        "cityId": 310118,
                        "country": "中国",
                        "id": 111,
                        "province": "上海市"
                    }
                ],
                "maxExperience": null,
                "maxSalary": 14,
                "minExperience": null,
                "minSalary": 12,
                "mjCode": "MJ000001",
                "number": 2,
                "openedAt": 1653494400000,
                "orgId": "test",
                "payPeriod": null,
                "paymentMethod": null,
                "pipelineId": 410021910,
                "pipelineName": "aa",
                "pointTo": null,
                "publishedAt": 1653532481000,
                "recruiter": {
                    "bindWorkWechat": false,
                    "email": "xxxx",
                    "employeeId": "",
                    "employee_id": "",
                    "fullPhone": null,
                    "id": 1,
                    "name": "xxxx",
                    "number": null,
                    "phone": "12345678910",
                    "role": 50
                },
                "roundToFeedbackTemplateId": {
                    "1": 0,
                    "2": 0,
                    "3": 0
                },
                "roundToRoundInfo": {
                    "1": {
                        "color": "#00D1DB",
                        "interviewRoundId": 33,
                        "jobId": "111",
                        "name": "初试",
                        "sort": 1,
                        "supplementaryLocales": "{\"en-US\":{\"name\":\"1st round\"}}",
                        "visible": 1
                    },
                    "2": {
                        "color": "#5D63DC",
                        "interviewRoundId": 22,
                        "jobId": "111",
                        "name": "复试",
                        "sort": 2,
                        "supplementaryLocales": "{\"en-US\":{\"name\":\"2nd round\"}}",
                        "visible": 1
                    },
                    "3": {
                        "color": "#F3719D",
                        "interviewRoundId": 11,
                        "jobId": "111",
                        "name": "终试",
                        "sort": 3,
                        "supplementaryLocales": "{\"en-US\":{\"name\":\"3rd round\"}}",
                        "visible": 1
                    }
                },
                "salaryUnit": 0,
                "status": "open",
                "stores": null,
                "title": "测试岗位",
                "updatedAt": 1656346259000,
                "zhinengId": null
            }
        ],
        "msg": "成功",
        "success": true
    }
    

    Response

    Response body in JSON Here's the English translation of your API documentation while maintaining all formatting:

    Field Type Description
    code Number Interview ID (MD5 string), unique identifier for an interview
    message String Interview start time (ISO8601 format)
    data Array Job details data
    data.id string Job ID
    data.title string Job title
    data.commitment string Job type: Full-time/Part-time/Internship/Other
    data.status string Job status: open/closed/pause/temp
    data.description string Job description
    data.minSalary integer Minimum salary (unit: k)
    data.maxSalary integer Maximum salary (unit: k)
    data.salaryUnit integer Salary unit (default: k/month, enum)
    data.paymentMethod integer Payment method
    data.payPeriod integer Pay period
    data.orgId string Organization ID
    data.pointTo string For temporary jobs, points to a permanent job
    data.departmentId long Department ID
    data.department object Department information
    data.departmentCode string Department code
    data.education string Education requirement
    data.minExperience integer Minimum work experience
    data.maxExperience integer Maximum work experience
    data.experience string Work experience
    data.number integer Hiring quota
    data.category2Id string Job category ID
    data.category string Job category
    data.creatorId long Job creator
    data.zhinengId long Functional type ID
    data.jobDuty object Job function
    data.jobDuty.id long Functional type ID
    data.jobDuty.name string Functional name
    data.hireMode integer Hiring mode (1: Social recruitment, 2: Campus recruitment)
    data.mjCode string Job code (moka_job_code)
    data.attributeId long Job priority ID
    data.jobCustomAttribute object Job priority
    data.jobCustomAttribute.id string Job priority ID
    data.jobCustomAttribute.name string Job priority name
    data.jobCustomAttribute.orgId string Organization ID
    data.jobCustomAttribute.isBuiltin boolean Whether built-in
    data.closedAt long Job closing time (timestamp)
    data.openedAt long Recruitment start time (timestamp)
    data.updatedAt long Job update time (timestamp)
    data.finishedAt long Target completion time
    data.publishedAt long Publication time on official website (can be manually refreshed)
    data.createdAt long Job creation time
    data.jobNumId long Auto-increment field, numeric job ID
    data.jobFamily boolean Whether virtual job
    data.jobTemplateId long Job template ID
    data.approvalState integer Approval status
    data.customFields array Custom fields
    data.customFields.id string Custom field ID
    data.customFields.name string Custom field name
    data.customFields.type string Custom field type
    data.customFields.value string Custom field value
    data.customFields.multiSelectValue array Multi-select field values
    data.recruiter object Job recruiter (not returned by default - contact CSM to enable)
    data.recruiter.id long ID
    data.recruiter.role integer Role
    data.recruiter.name string Name
    data.recruiter.email string Email
    data.recruiter.phone string Phone number
    data.recruiter.fullPhone string Full phone number
    data.recruiter.employeeId string Employee ID
    data.recruiter.employee_id string Employee ID (same as employeeId)
    data.recruiter.number string Number
    data.recruiter.isBindWorkWechat boolean Whether bound to WeCom
    data.jobHrAssistant array HR assistants (not returned by default - contact CSM to enable)
    data.jobHiringManager array Hiring managers (not returned by default - contact CSM to enable)
    data.jobInterviewer array Interviewers (not returned by default - contact CSM to enable)
    data.jobRanks array Job levels
    data.hcIds array Associated recruitment demand IDs
    data.locations array Job locations
    data.pipelineId long Recruitment process ID
    data.pipelineName string Recruitment process name
    data.stores array Stores
    data.jobApplyFormUseDTOS array Application forms
    data.interviewPlanId long Interview plan ID
    data.roundToFeedbackTemplateId object Interview evaluation form templates (round → template)
    data.roundToRoundInfo object Interview round information
    data.interviewCityIds string Interview city list
    data.applicationAiEvalEnable boolean Whether resume AI evaluation is enabled
    data.applicationAiEvalRequirement string Resume AI evaluation requirements
    data.hasRecommendRewardPlan boolean Whether has referral reward plan
    data.enableAiQuestionBank boolean Whether AI interview questions are enabled
    data.aiEvalRequirementInfo string Semi-structured resume evaluation requirements (for frontend)
    data.aiInfoVersion integer Version of semi-structured requirements
    data.aiEvalRequirementSchema string Structured resume evaluation requirements (for AI)
    data.aiSchemaVersion integer Version of structured requirements
    data.aiEvalAuto boolean Whether auto AI resume screening is enabled
    data.jobLocale string Job language
    data.enableEeo boolean Whether EEO is enabled
    data.demographicQuestionId long Demographic questionnaire ID
    data.isInteralReferral boolean Whether internal referral job

    Interview API

    create interview

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/interview/create

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/interview/create \
       -u 'your_api_key:' \
       -X POST
       -H 'Content-Type: application/json' \
       -d '
        {
          "stageId": 1741,
          "startTime": "2023-03-09 11:00:00",
          "duration": 15,
          "typeCode": 1,
          "orgId": "nonobank",
          "interviewArrangerEmail": "lichaozhen@mokahr.com",
          "locationId": 1,
          "meetingRoomId": 1,
          "round": 1,
          "signedInAt": "2023-03-09 12:00:00",
          "applicationIds": [425015406],
          "interviewerEmails": ["lichaozhen@mokahr.com"]
        } '
    

    Request body parameters

    Field Whether it is required Type Description
    stageId Yes number Recruitment stage id of the interview; Get it through stage info list interface
    startTime Yes string Interview date, format:"yyyy-MM-dd HH:mm:ss"
    duration Yes number Last minutes, the multiple of 15
    typeCode Yes number 1:On-site interview
    2: Group interview
    3: Phone interview
    orgId Yes string MOKA tenant org id, which is provided by the person in charge of the client
    interviewArrangerEmail Yes string Interview creator email
    locationId Yes number Interview location id, see appendix
    meetingRoomId No number Meeting room id
    round Yes number Need to give data in advance
    signedInAt Yes string Candidate check-in time "yyyy-MM-dd HH:mm:ss"
    applicationIds Yes array The number of applicants for the interview cannot exceed 200, but at least 1.
    interviewerEmails Yes array Interviewers email

    > 请求Respond data样for example:

    {
      "code": 0,
      "message": "Success",
      "data": {
        "groupInterviewId": 1
      }
    }
    

    Response body

    Field Type Description
    code Number Interview id, md5 string, the unique identifiers of the interview
    message String Interview start time. Format complies with the ISO8601 standard
    data Object Interview type,, for example:On-site interview、Video interview、Phone interview、Group interview
    data.groupInterviewId Number Interview duration. Unit: minute, such as: 30 mins

    code illustration

    Value Illustration
    -1 'Unknown error of the system'
    100 'Wrong email of person in charge or interviewer'
    101 'Exists position that no permission to create interview'
    102 'The duration of the interview needs to be a multiple of 15 and cannot exceed 3 hours'
    103 On-site interview, only support one Candidate'
    104 'Illegal stageId'
    105 'Illegal applicationIds'
    106 'You cannot update interview feedback since haven't found designated interview'
    400 'Check parameter errors'

    Pull interview list

    Pull a list of interviews from startDate (inclusive) to endDate (inclusive) The content of the list is readable Chinese description information

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/interviews?startDate={startDate}&endDate={endDate}&hireMode={hireMode}

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/interviews\?startDate\=2018-01-02T00:00:00.000Z\&endDate\=2018-01-04T00:00:00.000Z \
       -u 'your_api_key:' \
       -X GET
    

    Request query parameter

    Field Required Description
    startDate No Interview date, format: ISO8601
    endDate No Interview date, format: ISO8601
    createStartDate No Interview creation date, format: ISO8601
    createEndDate No Interview creation date, format: ISO8601
    hiremode No Recruitment mode Optional values: 1: Social recruitment 2: School recruitment

    Note that the date range determined by startDate and endDate, createStartDate and createEndDate must not exceed 31 days, and one of the two pairs of parameters must be required. And we will take the value according to the year, month and day of the time, which can only be accurate to the day.

    Respond data

    > 请求Respond data example:

    {
      "data": [
        {
          "id": "d3d9446802a44259755d38e6d163e820",
          "startTime": "2017-01-03T00:00:00.000Z",
          "type": "On-site interview",
          "duration": 30,
          "jobTitle": "Mac开发工程师",
          "stageName": "技术面",
          "address": "北京City 海淀District 北京City海淀District海淀西大街",
          "theme": "Mac开发工程师-On-site interview-2nd round",
          "status": "Cancelled",
          "createdAt": "2019-06-26 21:37:04",
          "hr": {
            "name": "李明",
            "email": "liming@example.com",
            "phone": "+86 1234567890"
          },
          "Candidates": [
            {
              "name": "邓新宇",
              "email": "dxy@example.com",
              "phone": "+86 0123456789",
              "status": "No feedback",
              "jobTitle": "Mac开发工程师",
              "applicationId": 1022,
              "groupId": 1
            }
          ],
          "interviewers": [
            {
              "name": "旭东",
              "email": "xudong@example.com",
              "phone": ""
            },
            {
              "name": "柳丁",
              "email": "liuding@example.com",
              "phone": "+86 1234567890"
            }
          ]
        },
        {
          "startTime": "2017-01-03T02:00:00.000Z",
          "type": "Group interview",
          "duration": 60,
          "jobTitle": "iOS工程师、PHP工程师,etc.3个职位",
          "stageName": "一面",
          "address": "北京City 海淀District 北京City海淀District海淀西大街",
          "theme": "iOS工程师,etc.3个职位-Group interview-1st round",
          "status": "unfinished",
          "hr": {
            "name": "李明",
            "email": "liming@example.com",
            "phone": "+86 1234567890"
          },
          "Candidates": [
            {
              "name": "邓新宇",
              "email": "dxy@example.com",
              "phone": "+86 0123456789",
              "status": "Rejected",
              "jobTitle": "Mac开发工程师",
              "applicationId": 1022,
              "groupId": 2
            },
            {
              "name": "金清",
              "email": "jq@gmail.com",
              "phone": "",
              "status": "Accepted",
              "jobTitle": "Android多媒体软件工程师",
              "applicationId": 1432,
              "groupId": 3
            },
            {
              "name": "应婉蓉",
              "email": "ywr@gmail.com",
              "phone": "",
              "status": "No feedback",
              "jobTitle": "web前端工程师",
              "applicationId": 4422,
              "groupId": 4
            }
          ],
          "interviewers": [
            {
              "name": "旭东",
              "email": "xudong@example.com",
              "phone": ""
            }
          ]
        }
      ]
    }
    

    data is an array of interviews, sorted by interview start time from early to late. The data structure for each of these is:

    Field Type Description
    id String Interview id, md5 string, the unique identifiers of the interview
    startTime String Interview start time. Format complies with the ISO8601 standard
    type String Interview type,, for example:On-site interview、Video interview、Phone interview、Group interview
    duration Number Interview duration. Unit: minute, such as: 30 mins
    jobTitle String Interview position
    stageName String Interview current stage name, such as: interview, technological interview, HR interview, etc.
    address String Interview location
    theme String Interview subject in the format of {interview position}-{interview type}-{interview round}
    status String interview status. For example: Open (the representative interview has not started), Closed (the representative interview has ended), Canceled (the representative interview has been cancelled)
    createdAt String Time for creating interview
    hr Object HR who assigned interview
    hr.name String Name
    hr.email String Email
    hr.phone String Phone. The format is: +{area code} {phone number}
    Candidates Array Interview Candidate
    canddiates[].name String Name
    Candidates[].email String Email
    Candidates[].phone String Phone. The format is: +{area code} {phone number}
    Candidates[].status String The status of the interview. Example: Candidate No Feedback, Candidate Accepted, Candidate Rejected
    Candidates[].jobTitle String Apply position name
    Candidates[].applicationId Number Application id, which is the unique identifier of the application of one Candidate
    Candidates[].groupId Number Interview id
    interviewers Array Interviewer. structure same as HR
    roomId Long roomId
    roomName String roomName
    jobs Array jobs
    jobs[].mjCode string Position No

    Note that if the Field is empty, the content will be an empty string

    Third-party interview check-in API

    Business scene

    It is used when the third-party interview check-in system needs to jump to the moka interview check-in page.

    HTTP request

    GET https://app.mokahr.com/m/interview-signin/{orgId}?phone={Phone}

    Request Path parameter

    Field Required Description
    orgId Yes The client unique id of each company,String

    Request query parameter

    Field Required Description
    Phone No Candidate's mobile phone number (if the mobile phone number is not filled in, it will jump to the page for filling in the mobile phone number), String

    Respond data

    Redirects to the Moka interview sign-in page.

    Get interview feedback data

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/data/interviewer_feedbacks
    

    > Response example

    {
      "data": [
        {
           "applicationId": 1,
           "round": 1,
           "interviewerName": "张三",
           "interviewerEmail": "zhangsan@mokahr.com",
         "resultName": " Very dissatisfied",
         "resultType": 0,
           "feedback": "技术不错",
           "feedbackTemplateResult": {
              "items":[
                {
                 "type":1,
                 "key":889274446478.9995,
                 "title":"个人能力",
                 "scoreType":5,
                 "calcScoreType":"total",
                 "subjects":    [
                   {
                     "title":"沟通能力",
                     "description":"",
                     "result":4,
                     "key":108456151784.09537
                   },
                   {
                     "title":"Skill经验",
                     "description":"",
                     "result":3,
                     "key": 160786089566.0061
                    }
                  ]
                },
                {
                  "type":2,
                  "key":986979085907.8695,
                  "title":"",
                  "description":"",
                  "subjects":[
                    {
                      "title":"Major技巧",
                      "key":     54296490060.84821,
                      "result":0,
                      "options":[
                        {
                          "value":"招聘知识强",
                          "key":1478619790466.305
                        },
                        {
                          "value":"系统理解强",
                          "key":772643685729.6316
                         },
                         {
                              "value":"技术能力强",
                              "key":982210359123.4211
                         }
                    ]
                 }
               ]
              },
              {
                "type":3,
                "key":716130309734.7427,
                "title":"",
                "description":"",
                "subjects":[
                  {
                    "title":"综合评语",
                    "key":529722675109.2128,
                    "result":"不错"
                  }
                ]
              }
            ]
         }
      }
      ],
      "next": "8465195468"
    }
    

    HTTP request

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

    Query

    Field Required Type Description
    fromTime Required for first request string The start time of the data, the fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included.
    next with fromTime has a required string Paging parameter, if there is more data to be pulled, there will be a next field in the response json, and the next request only needs to add this next parameter to the query. The fromTime parameter is only included in the first request, and does not need to be included in subsequent requests, that is, only one of next and fromTime needs to be included. If there is no next field in the response, it means that there is no more data
    limit No string Number of entries per page for paging, default 100, max 500.

    Response

    Response body in JSON

    Field Type Description
    applicationId integer applicationId
    interviewerName string Interviewer name
    interviewerEmail string Interviewer email
    result <span style="color: red;">Deprecated</span> integer Interview result
    Optional values are:
    1: Very dissatisfied
    2: Dissatisfied
    3; Satisfaction
    4:Very satisfied
    resultName string Interview feedback
    resultType integer Type of interview feedback result
    Optional values are:0: Dissatisfied
    1: Satisfaction
    interviewType string Interview type,optional values are: Phone interview, On-site interview, Group interview, Video interview
    round number Interview rounds
    Optional values are:
    1 1st round
    2 2nd round
    3 Final round
    feedback string Interview feedback content
    feedbackTemplateResult object Interview evaluation info
    feedbackTemplateResult.items array Questions of interview evaluation form
    feedbackTemplateResult.items[].type number Question type
    Optional values are:
    1: Scoring question
    2: Multiple choice
    3: Description
    4: Multiple response
    feedbackTemplateResult.items[].title string Question title
    feedbackTemplateResult.items[].description string Question description
    feedbackTemplateResult.items[].calcScoreType string avg: Average,total: Total score (this field in only valid when 'type'=1)
    feedbackTemplateResult.items[].scoreType number 5 means 5 points, 10 means 10 points(this field in only valid when 'type'=1)
    feedbackTemplateResult.items[].needReason string Whether need score review(this field in only valid when 'type'=1)
    feedbackTemplateResult.items[].subjects array Information about each sub-question
    feedbackTemplateResult.items[].subjects[].title array Sub-question title
    feedbackTemplateResult.items[].subjects[].description array Sub-question description
    feedbackTemplateResult.items[].subjects[].result array Sub-question results: 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 string of the description
    feedbackTemplateResult.items[].subjects[].options array Array of option strings(this field in only valid when 'type'=2)
    updatedAt string Last update time of this data

    Add interview evaluation

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/addFeedbackTemplates \
       -X POST
       -H 'Content-Type: application/json' \
       -d '
         {
          "name": "Interview evaluation",
          "items": "[{\"title\":\"模块1\",\"description\":\"测试\",\"subjects\":[{\"type\":1,\"title\":\"JVM\",\"description\":\"测试\",\"scoreType\":5,\"needReason\":false,\"isRequired\":false,\"id\":\"d694ac72-1e57-4be1-b899-c3ad7f1f9feb\"}]}]",
          "isOptimizedDeptIds": true,
          "departmentType": 1,
          "hireMode": 1,
          "email": "linjianjun@mokahr.com",
          "description": "这YesDescription",
          "departmentIds": ["1","2"],
          "linkageRelationship": "[{\"id\":\"523093a1-1727-49f1-80a7-26e6a817e44b\",\"linkages\":[{\"id\":\"1f4a6cf6-b5d6-4341-8187-989343cf98d7\",\"value\":0},{\"id\":\"11b1075c-5993-4338-8961-337747bac351\",\"value\":1}]}]"
        }'
    

    > Response example

    {
       "code": 200,
       "message": "success",
       "data": {
         "id": "3435353"
       }
    }
    

    Add corresponded interview evaluation

    HTTP request

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

    Request body parameter

    Field Required Type Description
    name Yes string Name of interview evaluation
    items Yes string Interview evaluation form module string (see Item details below for the json of specific Items)
    hireMode Yes number Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    email Yes string Operator email
    isOptimizedDeptIds Yes boolean Interview evaluation department linkage switch
    departmentIds Yes array<number> Department id array
    departmentType Yes number Department type
    0:Use Moka system
    1: Use sync department
    description No string Interview evaluation description
    linkageRelationship No string Interview evaluation form linkage relationship

    Item parameter details

    Field Required Type Description
    title Yes string Module name
    description No string Template description
    calcScoreType No string Points method 'avg:average score
    subjects[] Yes array Question info array
    subjects[].id Yes string Question id (Question id cannot be duplicated in same evaluation)
    subjects[].type Yes integer Question type
    Optional values are:
    1:Scoring question
    2: Single-choice question
    3:Description
    4:Multiple response
    subjects[].title Yes string Question name
    subjects[].description Yes string Question description
    subjects[].scoreType No number Required when type is 1, otherwise not
    subjects[].options[] No array When the title is a multiple-choice question (required when the type is 2 and 4), it contains a json object (eg:[{value:"option 1"}])
    subjects[].arrangeType No number When type is 2 or 4, it is required at this time (that is, when the title is single-choice or multiple-choice), which means several options per line
    subjects[].needReason No boolean Whether need a score review description
    subjects[].isRequired No boolean Whether it is required
    subjects[].weight No number It will appear when calcScoreType === 'weight' . The weight ratio of 50 means 50%. In addition, only scoring questions will calculate the weight.
    subjects[].ratio No number The coefficient is non-decimal, and will only appear on the scoring questions in the standard interview evaluation form.

    Response body in JSON

    Field Type Description
    code number not 200 represents error
    message string Operation info
    data object Response data body
    data.id number Interview evaluation id

    UpdateInterview evaluation

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/updateFeedbackTemplates \
       -X POST
       -H 'Content-Type: application/json' \
       -d '
        {
          "id": "123",
          "name": "Interview evaluation",
          "items": "[{\"title\":\"模块1\",\"description\":\"测试\",\"subjects\":[{\"type\":1,\"title\":\"JVM\",\"description\":\"测试\",\"scoreType\":5,\"needReason\":false,\"isRequired\":false,\"id\":\"d694ac72-1e57-4be1-b899-c3ad7f1f9feb\"}]}]",
          "isOptimizedDeptIds": true,
          "departmentType": 0,
          "hireMode": 1,
          "email": "linjianjun@mokahr.com",
          "description": "这YesDescription",
          "departmentIds": [1,2],
           "linkageRelationship": "[{\"id\":\"523093a1-1727-49f1-80a7-26e6a817e44b\",\"linkages\":[{\"id\":\"1f4a6cf6-b5d6-4341-8187-989343cf98d7\",\"value\":0},{\"id\":\"11b1075c-5993-4338-8961-337747bac351\",\"value\":1}]}]"
        } '
    

    > Response example

    {
       "code": 200,
       "message": "success",
       "data": null
    }
    

    Update corresponded interview evaluation

    HTTP request

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

    Request body parameter

    Field Required Type Description
    id Yes number Interview evaluation id
    name Yes string Name of interview evaluation
    items Yes string Interview evaluation form module string (see Item details below for the json of specific Items)
    hireMode Yes number Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment
    email Yes string Operator email
    isOptimizedDeptIds Yes boolean Interview evaluation department linkage switch
    departmentIds Yes array<number> Department id array
    departmentType Yes number Department type
    0:Use Moka system
    1: Use sync department
    description No string Interview evaluation description
    linkageRelationship No string Interview evaluation form linkage relationship

    Item parameter details

    Field Required Type Description
    title Yes string Module name
    description No string Template description
    calcScoreType No string Points method 'avg:average score
    subjects[] Yes array Question info array
    subjects[].id Yes string Question id (Question id cannot be duplicated in same evaluation)
    subjects[].type Yes integer Question type
    Optional values are:
    1:Scoring question
    2: Single-choice question
    3:Description
    4:Multiple response
    subjects[].title Yes string Question name
    subjects[].description Yes string Question description
    subjects[].scoreType No number Required when type is 1, otherwise not
    subjects[].options[] No array When the title is a multiple-choice question (required when the type is 2 and 4), it contains a json object (eg:[{value:"option 1"}])
    subjects[].arrangeType No number When type is 2 or 4, it is required at this time (that is, when the title is single-choice or multiple-choice), which means several options per line
    subjects[].needReason No boolean Whether need a score review description
    subjects[].isRequired No boolean Whether it is required
    subjects[].weight No number It will appear when calcScoreType === 'weight' . The weight ratio of 50 means 50%. In addition, only scoring questions will calculate the weight.
    subjects[].ratio No number The coefficient is non-decimal, and will only appear on the scoring questions in the standard interview evaluation form.

    Response body in JSON

    Field Type Description
    code number not 200 represents error
    message string Operation info
    data object The responded data body defaults to null

    Delete Interview evaluation

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/deleteFeedbackTemplates \
       -X POST
       -H 'Content-Type: application/json' \
       -d '
        {
          "id": "123"
        } '
    

    > Response example

    {
       "code": 200,
       "message": "success",
       "data": null
    }
    

    Delete corresponded nterview evaluation

    HTTP request

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

    Request body parameter

    Field Required Type Description
    id Yes number Interview evaluation id

    Response body in JSON

    Field Type Description
    code number not 200 represents error
    message string Operation info
    data object The responded data body defaults to null

    Query interview plan

    > Request example

    $ curl --location 'https://api.mokahr.com/api-platform/v1/interview-plan/getInterviewPlanConfig' \
    --header 'Content-Type: application/json' \
    --header 'Cookie: locale=zh-CN' \
    --data '{
        "ids" : [686]
    }'
    

    > Response example

    {
        "code": 0,
        "codeType": 0,
        "data": [
            {
                "interviewPlanConfig": [
                    {
                        "feedbackTemplateId": 128,
                        "interviewConclusionDecideRulesId": 0,
                        "interviewRoundId": 200000130,
                        "sort": 1
                    },
                    {
                        "feedbackTemplateId": 129,
                        "interviewConclusionDecideRulesId": 0,
                        "interviewRoundId": 200000131,
                        "sort": 2
                    },
                    {
                        "feedbackTemplateId": 0,
                        "interviewConclusionDecideRulesId": 0,
                        "interviewRoundId": 200000132,
                        "sort": 3
                    },
                    {
                        "feedbackTemplateId": 0,
                        "interviewConclusionDecideRulesId": 0,
                        "interviewRoundId": 200000450,
                        "sort": 4
                    }
                ],
                "interviewPlanId": 686,
                "interviewPlanName": "社招面试方案1",
                "version": "1.0"
            }
        ],
        "msg": "成功",
        "success": true
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/interview-plan/getInterviewPlanConfig

    Request body parameter

    Field Required Type Description
    interviewPlanIds No number Multiple interview plans can be uploaded. If not uploaded, all interview plans will be queried

    Response body in JSON

    Field Type Description
    interviewPlan array Interview plan array
    interviewPlanId string Interview Plan ID
    interviewPlanName string Interview Plan Name
    interviewPlanConfig array interview Plan Config
    interviewRoundId number Interview round ID
    feedbackTemplateId number Interview evaluation form ID
    interviewConclusionDecideRulesId number Interview result determination rule ID
    sort number sort
    nextCursor number Pagination cursor,no need to pass it for the first query.The value of this attribute is taken from the nextCursor value returned by the response parameter on the last call.
    pageSize number Number of entries per page for pagination, default 100

    Retrieve single interview information

    > Request example

    $ curl -X POST \
      https://api.mokahr.com/api-platform/v1/interview/interview-information \
      -H 'Content-Type: application/json' \
      -H 'Postman-Token: 1234-7d7d-49ee-866d-8fc34567' \
      -d '{"applicationIds":[123],"email":"ttt@moka.com"}'
    

    > Response example

    {
        "code": 0,
        "codeType": 0,
        "data": [
            {
                "applicationId": 123,
                "createdAt": 1706521302000,
                "entities": [
                    {
                        "duration": 30,
                        "id": 123,
                        "intervieweeVideoUrl": "",
                        "interviewerFeedbacks": [
                            {
                                "feedbackId": 412343,
                                "interviewer": {
                                    "id": "5234",
                                    "name": "刘"
                                },
                                "interviewerId": 5666
                            }
                        ],
                        "round": 16,
                        "roundName": "这是很长的轮次名称啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦",
                        "startTime": 1706522400000
                    }
                ],
                "interviewArranger": {
                    "id": "410105860",
                    "name": "wangzhuang"
                },
                "interviewArrangerId": 410105860,
                "startDay": 1706522400000,
                "typeCode": 1,
                "valid": true
            },
            {
                "applicationId": 123,
                "createdAt": 1706596988000,
                "entities": [
                    {
                        "duration": 30,
                        "id": 411242466,
                        "interviewerFeedbacks": [
                            {
                                "feedbackId": 412343,
                                "interviewer": {
                                    "id": "5666",
                                    "name": "刘"
                                },
                                "interviewerId": 5666
                            },
                            {
                                "feedbackId": 42344,
                                "interviewer": {
                                    "id": "6592",
                                    "name": "杜"
                                },
                                "interviewerId": 6592
                            },
                            {
                                "feedbackId": 41178,
                                "interviewer": {
                                    "id": "6427",
                                    "name": "高"
                                },
                                "interviewerId": 6427
                            }
                        ],
                        "round": 17,
                        "roundName": "这是很长名字",
                        "startTime": 1706598000000
                    }
                ],
                "interviewArranger": {
                    "id": "4101058",
                    "name": "wang"
                },
                "interviewArrangerId": 41010560,
                "startDay": 1706598000000,
                "typeCode": 1,
                "valid": true
            },
            {
                "applicationId": 123,
                "createdAt": 1706521583000,
                "entities": [
                    {
                        "duration": 30,
                        "id": 41124233,
                        "intervieweeVideoUrl": "",
                        "interviewerFeedbacks": [
                            {
                                "feedbackId": 41173095,
                                "interviewer": {
                                    "id": "41010560",
                                    "name": "wang"
                                },
                                "interviewerId": 41010560
                            }
                        ],
                        "round": 17,
                        "roundName": "这是很长名字",
                        "startTime": 1706608800000
                    }
                ],
                "interviewArranger": {
                    "id": "41010560",
                    "name": "wangzhuang"
                },
                "interviewArrangerId": 41010580,
                "startDay": 1706608800000,
                "typeCode": 1,
                "valid": true
            },
            {
                "applicationId": 42537377,
                "createdAt": 1711422246000,
                "entities": [
                    {
                        "duration": 30,
                        "id": 41124492,
                        "intervieweeVideoUrl": "https://meeting.tencent.com/dm/E7L4qy7pZm",
                        "interviewerFeedbacks": [
                            {
                                "feedbackId": 411788,
                                "interviewer": {
                                    "id": "5666",
                                    "name": "刘"
                                },
                                "interviewerId": 5666
                            }
                        ],
                        "round": 17,
                        "roundName": "这是很长名字",
                        "startTime": 1711423800000
                    },
                    {
                        "duration": 30,
                        "id": 4112443,
                        "intervieweeVideoUrl": "https://meeting.tencent.com/dm/E7L4qy7p4m",
                        "interviewerFeedbacks": [
                            {
                                "feedbackId": 4117859,
                                "interviewer": {
                                    "id": "7280",
                                    "name": "胡"
                                },
                                "interviewerId": 780
                            }
                        ],
                        "round": 17,
                        "roundName": "这是很长名字",
                        "startTime": 1711425600000
                    }
                ],
                "interviewArranger": {
                    "id": "4105860",
                    "name": "wang"
                },
                "interviewArrangerId": 4101860,
                "startDay": 1711423800000,
                "typeCode": 4,
                "valid": true
            },
            {
                "applicationId": 123,
                "createdAt": 1711620793000,
                "entities": [
                    {
                        "duration": 30,
                        "id": 4112493,
                        "intervieweeVideoUrl": "",
                        "interviewerFeedbacks": [
                            {
                                "feedbackId": 4117858,
                                "interviewer": {
                                    "id": "7280",
                                    "name": "胡"
                                },
                                "interviewerId": 7280
                            }
                        ],
                        "round": 17,
                        "roundName": "这是很长名字",
                        "startTime": 1711621800000
                    }
                ],
                "interviewArranger": {
                    "id": "410105860",
                    "name": "wang"
                },
                "interviewArrangerId": 40105860,
                "startDay": 1711621800000,
                "typeCode": 1,
                "valid": true
            },
            {
                "applicationId": 425347377,
                "createdAt": 1711684014000,
                "entities": [
                    {
                        "duration": 30,
                        "id": 411244717,
                        "intervieweeVideoUrl": "",
                        "interviewerFeedbacks": [
                            {
                                "feedbackId": 411785598,
                                "interviewer": {
                                    "id": "6427",
                                    "name": "高"
                                },
                                "interviewerId": 6427
                            }
                        ],
                        "round": 4,
                        "roundName": "初试",
                        "startTime": 1711684800000
                    }
                ],
                "interviewArranger": {
                    "id": "410105860",
                    "name": "wang"
                },
                "interviewArrangerId": 410105860,
                "startDay": 1711684800000,
                "typeCode": 2,
                "valid": true
            },
            {
                "applicationId": 425347377,
                "createdAt": 1712567677000,
                "entities": [
                    {
                        "duration": 30,
                        "id": 411245123,
                        "intervieweeVideoUrl": "",
                        "interviewerFeedbacks": [
                            {
                                "feedbackId": 411786027,
                                "interviewer": {
                                    "id": "7280",
                                    "name": "胡"
                                },
                                "interviewerId": 7280
                            },
                            {
                                "feedbackId": 411786028,
                                "interviewer": {
                                    "id": "410105860",
                                    "name": "wang"
                                },
                                "interviewerId": 410105860
                            },
                            {
                                "feedbackId": 411786029,
                                "interviewer": {
                                    "id": "26446",
                                    "name": "Han"
                                },
                                "interviewerId": 26446
                            }
                        ],
                        "round": 17,
                        "roundName": "这是很长名字",
                        "startTime": 1712568600000
                    }
                ],
                "interviewArranger": {
                    "id": "410105860",
                    "name": "wang"
                },
                "interviewArrangerId": 410105860,
                "startDay": 1712568600000,
                "typeCode": 1,
                "valid": true
            }
        ],
        "msg": "成功",
        "success": true
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/interview/interview-information

    Request body parameter

    Field Required Type Description
    applicationIds Yes array applicationIds
    email Yes string email

    Response body in JSON

    Field Type Description
    typeCode integer Interview types: 1. On site interview 2. Group interview 3. Telephone interview 4. Video interview
    valid boolean Cancel false: Cancel
    createdAt date Creation time
    applicationId integer Application ID
    interviewArranger object Interview Manager
    interviewArranger.id string Interview Manager ID
    interviewArranger.name string Interview Manager Name
    entities[] array Interview information
    entities[].id integer Interview ID
    entities[].duration integer Interview time: unit minutes
    entities[].intervieweeVideoUrl string Interview link
    entities[].round integer Interview round ID
    entities[].roundName string Interview rounds
    entities[].startTime date Interview start time
    entities[].interviewerFeedbacks[] array Interview feedback information
    entities[].interviewerFeedbacks[].feedbackId integer Interview evaluation ID
    entities[].interviewerFeedbacks[].interviewer object Interviewer Information
    entities[].interviewerFeedbacks[].interviewer.id string Interviewer ID
    entities[].interviewerFeedbacks[].interviewer.name string Interviewer Name

    Retrieve interview evaluation form configuration and data

    > Request example

    $ curl -X POST \
      https://api.mokahr.com/api-platform/v1/interview/getInterviewFeedbackTpl \
      -H 'Content-Type: application/json' \
      -H 'Postman-Token: ba847e42-10d2-42fa-9eee-3defd1' \
      -d '{"feedbackId":123,"email":"ttt@moka.com"}'
    

    > Response example

    {
        "code": 0,
        "codeType": 0,
        "data": {
            "applicationId": 42537,
            "feedback": "2",
            "feedbackId": 123,
            "feedbackResultId": 4181,
            "feedbackResultList": [
                {
                    "feedbackResultId": 4181,
                    "feedbackResultName": "非常不满意"
                },
                {
                    "feedbackResultId": 4182,
                    "feedbackResultName": "不满意"
                },
                {
                    "feedbackResultId": 4183,
                    "feedbackResultName": "非常满意"
                },
                {
                    "feedbackResultId": 4184,
                    "feedbackResultName": "满意"
                },
                {
                    "feedbackResultId": 410026016,
                    "feedbackResultName": "待定"
                }
            ],
            "feedbackResultName": "非常不满意",
            "feedbackTemplateResult": {
                "description": "",
                "items": [
                    {
                        "description": "",
                        "id": "2a67ba30-39b1-48f0-93f372e70d5b6",
                        "subjects": [
                            {
                                "arrangeType": 0,
                                "description": "1、的九康京东方就\n2、大师级绝对第三节课\n3、大师空",
                                "id": "1e3cb4a0-7c3f-481e-8a4abfe5fbf6",
                                "isFoldDescription": true,
                                "isRequired": false,
                                "needReason": true,
                                "relatedQuestion": true,
                                "result": 2,
                                "scoreType": 5,
                                "title": "11",
                                "type": 1
                            },
                            {
                                "arrangeType": 0,
                                "description": "1、大家看见地方接口\n2、杜佳的看速度金卡戴珊就\n3、大师得大师级\n4、大师级绝对是绝是加快速度",
                                "id": "5bcc1188-da8c-4b13-8f94-919327f2",
                                "isFoldDescription": false,
                                "isRequired": false,
                                "needReason": false,
                                "relatedQuestion": true,
                                "scoreType": 5,
                                "title": "12",
                                "type": 1
                            }
                        ],
                        "title": "这是新建的评价表"
                    },
                    {
                        "description": "",
                        "id": "55a1c7dc-6af2-49ee-86c1aca40c57",
                        "subjects": [
                            {
                                "arrangeType": 0,
                                "description": "我认为人人车23场",
                                "id": "23d04fbd-2333-4f13-9d20-29f65c89cdb7",
                                "invisible": true,
                                "isRequired": false,
                                "needReason": false,
                                "scoreType": 5,
                                "title": "万人次",
                                "type": 3
                            },
                            {
                                "arrangeType": 0,
                                "description": "a是的",
                                "id": "e4710ffd-43b8-4142-83d1-899ad5",
                                "isRequired": false,
                                "needReason": false,
                                "scoreType": 5,
                                "title": "2",
                                "type": 3
                            }
                        ],
                        "title": "仍维持"
                    },
                    {
                        "description": "是的",
                        "id": "0fee2d7e-fdca-43bc141e9a57",
                        "subjects": [
                            {
                                "arrangeType": 0,
                                "description": "安德森",
                                "id": "cce8922c-82c9-4b22-b638-24210c36bd35",
                                "isRequired": false,
                                "needReason": false,
                                "options": [
                                    {
                                        "value": "选项1"
                                    },
                                    {
                                        "value": "选项2"
                                    }
                                ],
                                "scoreType": 5,
                                "title": "2阿斯顿",
                                "type": 2
                            }
                        ],
                        "title": "阿斯顿"
                    }
                ],
                "name": "校招面试评价表111"
            },
            "interviewId": 411243,
            "interviewerId": 4105860
        },
        "msg": "成功",
        "success": true
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/interview/getInterviewFeedbackTpl

    Request body parameter

    Field Required Type Description
    feedbackId Yes Integer feedbackId
    email Yes string email

    Response body in JSON

    Field Type Description
    feedbackId Integer Interview evaluation ID
    interviewerId Integer Interviewer ID
    interviewId Integer Interview ID
    applicationId Integer Application ID
    feedback string Evaluation content
    feedbackResultId Integer Evaluation result ID
    feedbackResultName string Evaluation results
    feedbackTemplateResult object Evaluation details
    feedbackTemplateResult.name string Evaluation Name
    feedbackTemplateResult.description string Evaluation description
    feedbackTemplateResult.items[] array Evaluation details
    feedbackTemplateResult.items[].id string Module ID
    feedbackTemplateResult.items[].description string Module Description
    feedbackTemplateResult.items[].title string Module Title
    feedbackTemplateResult.items[].subjects[] array Information for each sub question under the module
    feedbackTemplateResult.items[].subjects[].id string Question ID
    feedbackTemplateResult.items[].subjects[].description string Question description
    feedbackTemplateResult.items[].subjects[].isRequired boolean Is it necessary to
    feedbackTemplateResult.items[].subjects[].needReason boolean Do we need a reason
    feedbackTemplateResult.items[].subjects[].arrangeType integer Arrangement type
    feedbackTemplateResult.items[].subjects[].scoreType integer Question score type
    feedbackTemplateResult.items[].subjects[].title string Title of the question
    feedbackTemplateResult.items[].subjects[].type integer Question type, optional values:
    1: Scoring questions
    2: Multiple choice questions
    3: Descriptive questions
    4: Multiple choice questions
    feedbackTemplateResult.items[].subjects[].options[] array Option string array (only valid when type is 2)
    feedbackTemplateResult.items[].subjects[].options[].value string Option value
    feedbackResultList[] array List of selectable evaluation results
    feedbackResultList[].feedbackResultId interger Evaluation result ID
    feedbackResultList[].feedbackResultName string Evaluation results

    Fill in interview feedback

    > Request example

    $ curl -X POST \
      https://api.mokahr.com/api-platform/v1/interview/updateInterviewFeedback \
      -H 'Content-Type: application/json' \
      -H 'Postman-Token: 18cd54dc-89f1-4ee1-9801-340d' \
      -d '{
        "orgId": "nonobank",
        "email": "wang@mokahr.com",
        "applicationId": 427,
        "feedback": "2",
        "feedbackId": 411795,
        "feedbackResultId": 4181,
        "feedbackResultList": [
            {
                "feedbackResultId": 4181,
                "feedbackResultName": "非常不满意"
            },
            {
                "feedbackResultId": 4182,
                "feedbackResultName": "不满意"
            },
            {
                "feedbackResultId": 4183,
                "feedbackResultName": "非常满意"
            },
            {
                "feedbackResultId": 4184,
                "feedbackResultName": "满意"
            },
            {
                "feedbackResultId": 410026016,
                "feedbackResultName": "待定"
            }
        ],
        "feedbackResultName": "非常不满意",
        "feedbackTemplateResult": {
            "description": "",
            "items": [
                {
                    "description": "",
                    "id": "2a67ba30-39b1-48f0-93f3-46672e70d5b6",
                    "subjects": [
                        {
                            "arrangeType": 0,
                            "description": "1、的九分裤京东方就就\n2、大师级绝对是就大三节课\n3、大师级绝对三节课四大皆空",
                            "id": "1e3cb4a0-7c3f-481e-ba90-8a4abfe5fbf6",
                            "isFoldDescription": true,
                            "isRequired": false,
                            "needReason": true,
                            "relatedQuestion": true,
                            "result": 2,
                            "scoreType": 5,
                            "title": "11",
                            "type": 1
                        },
                        {
                            "arrangeType": 0,
                            "description": "1、大家减级的尽快答复看见地方接口\n2、杜佳美大师度金卡戴珊就\n3、大师级大师级试看见的都可见觉得大师级\n4、大师级绝对三节课绝对是绝对是加快速度",
                            "id": "5bcc1188-da8c-4b13-8f94-9954619327f2",
                            "isFoldDescription": false,
                            "isRequired": false,
                            "needReason": false,
                            "relatedQuestion": true,
                            "scoreType": 5,
                            "title": "12",
                            "type": 1
                        }
                    ],
                    "title": "这是新建的评价表"
                },
                {
                    "description": "",
                    "id": "55a1c7dc-6af2-49ee-86c1-c908aca40c57",
                    "subjects": [
                        {
                            "arrangeType": 0,
                            "description": "我认为人人车23场",
                            "id": "23d04fbd-2333-4f13-9d20-29f65c89cdb7",
                            "invisible": true,
                            "isRequired": false,
                            "needReason": false,
                            "scoreType": 5,
                            "title": "万人次",
                            "type": 3
                        },
                        {
                            "arrangeType": 0,
                            "description": "a是的",
                            "id": "e4710ffd-43b8-4142-83d1-84382e099ad5",
                            "isRequired": false,
                            "needReason": false,
                            "scoreType": 5,
                            "title": "2",
                            "type": 3
                        }
                    ],
                    "title": "仍维持"
                },
                {
                    "description": "是的",
                    "id": "0fee2d7e-fdca-47ab-a465-53bc141e9a57",
                    "subjects": [
                        {
                            "arrangeType": 0,
                            "description": "安德森",
                            "id": "cce8922c-82c9-4b22-b638-24210c36bd35",
                            "isRequired": false,
                            "needReason": false,
                            "options": [
                                {
                                    "value": "选项1"
                                },
                                {
                                    "value": "选项2"
                                }
                            ],
                            "scoreType": 5,
                            "title": "2阿斯顿",
                            "type": 2
                        }
                    ],
                    "title": "阿斯顿"
                }
            ],
            "name": "校招面试评价表111"
        },
        "interviewId": 41123,
        "interviewerId": 410105860
    }'
    

    > Response example

    {
        "code": 0,
        "codeType": 0,
        "msg": "成功",
        "success": true
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/interview/updateInterviewFeedback

    Request body parameter

    Field Required Type Description
    feedbackId Yes Integer Interview evaluation ID
    email Yes String mailbox
    feedback No string Evaluation content (only effective after passing feedbackResultId)
    feedbackResultId No Integer Evaluation result ID
    feedbackTemplateResult No object Evaluation details
    feedbackTemplateResult.items[] No array Evaluation details
    feedbackTemplateResult.items[].id No string Module ID
    feedbackTemplateResult.items[].subjects[] No array Information for each sub question under the module
    feedbackTemplateResult.items[].subjects[].id No string Question ID
    feedbackTemplateResult.items[].subjects[].result No object Depending on the type of question:
    1: Scoring questions such as 3 (number represents score)
    2: Multiple choice questions such as 0 (integer represents subscript, starting from 0)
    3: Descriptive questions such as excellent (string represents description)
    4: Multiple choice questions, such as 0, 3
    feedbackTemplateResult.items[].subjects[].reason No string Reason, when a reason needs to be transmitted

    Response body in JSON

    Field Type Description
    code integer code
    msg string msg
    success boolean success

    Offer API

    This part of the API is mainly used to update the status of candidates in the Offer/Onboarding stage. The application scenario is that the candidate is pushed to other systems through webhook, and the information of other systems updates the status of the candidate in Moka synchronously to ensure the accuracy of the data and avoid manual secondary operations.

    Create fake offers

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offers \
       -u 'your_api_key:' \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{ "applicationId": 12798, "operator": { "name": "李明", "phone": "18600000001" }}'
    

    > Response example

    {
      "id": "gesk7uO58DZeThxx"
    }
    

    Create a fake offer for the candidate. Fake Offers do not actually generate Offers in the Moka system, but serve as markers so that Offer-related data reports are statistically accurate.

    HTTP request

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

    Request body(JSON)

    Field Required Description
    applicationId Yes integer
    Candidate application's unique id in Moka
    operator Yes object
    Operator
    operator.name Yes string
    Operator name
    operator.email No string
    Operator email
    operator.phone No string
    Operator phone

    Response

    Response body in JSON

    Field Description
    id string Fake offer id

    Delete fake Offer

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offers/delete \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '{ "offerId": 123, "operator": { "name": "李明", "phone": "18600000001" }}'
    

    Delete a fake Offer.

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/offers/{offerId}/delete

    Request URL parameter

    Field Description
    offerId Fake offer id

    Request body(JSON)

    Field Required Description
    operator Yes object
    Operator
    operator.name Yes string
    Operator name
    operator.email No string
    Operator email
    operator.phone No string
    Operator phone

    Response

    Response200.

    Mark AcceptOffer

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offers/accept \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '{ "offerId": 123, "operator": { "name": "李明", "phone": "18600000001" }}'
    

    Mark a fake Offer as accepted.

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/offers/{offerId}/accept

    Request URL parameter

    Field Description
    offerId Fake offer id

    Request body(JSON)

    Field Required Description
    operator Yes object
    Operator
    operator.name Yes string
    Operator name
    operator.email No string
    Operator email
    operator.phone No string
    Operator phone

    Response

    Response200.

    Mark regular employee

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/Candidates/12798/hired \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '{ "operator": { "name": "李明", "phone": "18600000001" }}'
    

    Update a candidate applicationStatus to "Regular employee", and move to Regular employee talent pool

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/Candidates/{applicationId}/hired

    Request URL parameter

    Field Description
    applicationId The unique id of candidate application in Moka

    Request body(JSON)

    Field Required Description
    operator Yes object
    Operator
    operator.name Yes string
    Operator name
    operator.email No string
    Operator email
    operator.phone No string
    Operator phone

    Response

    Response200.

    Mark rejecting Offer/Give up onboarding

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/Candidates/12798/reject \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '{ "archiveReasonId": 133, "offerId": "gesk7uO58DZeThxx", "operator": { "name": "李明", "phone": "18600000001" }}'
    

    Update a candidate's application status to "Regular employee" and put it into the recruited talent pool.

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/Candidates/{applicationId}/reject

    Request URL parameter

    Field Description
    applicationId Candidate application's unique id in Moka

    Request body(JSON)

    Field Required Description
    archiveReasonId Yes integer
    Reject reason id
    offerId No string
    Fake offerId, if it is not empty, mark the Offer as rejected at the same time
    operator Yes object
    Operator
    operator.name Yes string
    Operator name
    operator.email No string
    Operator email
    operator.phone No string
    Operator phone

    Response

    Response200.

    Get rejection reason

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/archiveReasons \
      -u 'your_api_key:' \
      -X GET
    

    > Response example

    {
      "data": [
        {
          "id": 132,
          "name": "福利待遇不满足"
        },
        {
          "id": 133,
          "name": "Work location较远"
        },
        {
          "id": 134,
          "name": "对公司业务不感兴趣"
        }
      ]
    }
    

    Get candidate rejection reason list.

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/archiveReasons

    Response

    Returns a JSON object, where the data field corresponds to a list of rejection reasons. The structure of the rejection reasons is as follows:

    Field Description
    id integer
    Rejection reason id
    name string
    Rejection reason,, such as:Benefits not met

    ## Create Offer

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/create-offer \
       -u 'your_api_key:' \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '
        {
          "applicationId": 12,
          "salaryNumber": 1000,
          "salaryType": 1,
          "checkinDate": "2018-08-06T16:00:00.000Z",
          "contactUserName": "张三",
          "contactEmail": "zhangsan@mokahr.com",
          "contactPhone": "18612345678",
          "locationId": 1,
          "customFields": [
            {
              "name": "Field1",
              "value": "value1"
            },
            {
              "name": "Field2",
              "value": 2
            }
          ]
        } '
    

    > Response example

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

    Pass offer info to create an offer. This function should be opened by CSM

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/create-offer

    Request body parameter

    Field Required Type Description
    applicationId Yes integer The application id should be updated after the offer approval.
    salaryNumber No integer Candidate salary
    salaryType No integer Salary type
    Optional values are:
    1: Hourly salary
    2: Daily salary
    3: Hourly salary
    4:Annual salary
    checkinDate No string Onboard time
    locationId No integer Onboarding location id
    contactUserName No string Contact name
    contactPhone No string Contact phone
    contactEmail No string Contact email
    customFields No array Custom field
    customFields[].id No string Custom field name (Note: Id and name parameters must be passed one)
    customFields[].name No string Custom field name (Note: Id and name parameters must be passed one)
    customFields[].value No string Custom field value
    creatorEmail No string Creator email
    creatorNumber No string Creator employee No.
    toCandidateAttachment No array The attachment key sent to the candidate (obtained through the public API attachment upload interface), the number cannot exceed 5
    toApproverAttachment No array The attachment key sent to the approver (obtained through the public API attachment upload interface), the number cannot exceed 5
    hcId No integer Associates headcount id
    jobRankId No integer Position level id
    departmentCode No string Onboarding department code
    isCreateOfferAttachment No boolean false:Do not create offer attachments,true:Create a default offer attachment
    templateId No integer Offer attachment template id

    Update offer

    It is used to update the existing offers in the system. After updating the mandatory field of the offer, the original offer approval will become invalid, and the approval needs to be re-initiated

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offers/offerFields/update \
       -u 'your_api_key:' \
       -X POST \
       -d '
        {
          "applicationId": 1,
          "orgId": "test",
          "operatorName": "zwj",
          "fields": [
            {
              "name": "Estimated start time",
              "value": "2020-09-09"
            }
          ]
        } '
    

    > Response example

    {
      "code": 200,
      "msg": "xxx"
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/offers/offerFields/update

    Request body parameter

    Field Required Type Description
    applicationId Yes Long Application id
    orgId Yes String orgId
    operatorName Yes String Operator
    fields Yes array The field that needs to be updated, there can be multiple elements
    fields[].id No string Custom field name (Note: Id and name parameters must be passed one)
    fields[].name Yes String Field Chinese name
    fields[].value Yes String Corresponding value of name

    Response body in JSON

    Field Type Description
    code string 200:Success
    not 200 represents error
    msg string Interface return value illustration

    Get the list of offer attachment templates

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/listOfferTemplateByOrgId \
       -u 'your_api_key:' \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '{ "hireMode": 1 }'
    

    > Response example

    {
        "code": 200,
        "msg": "success",
        "data": [
            {
                "id": 410002334,
                "templateName": "系统默认Offer attachment模板",
                "templateCategory": 1,
                "version": "1.0"
            }
        ]
    }
    

    HTTP request

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

    Request body parameter

    Field Required Type Description
    hireMode Yes integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Response

    Response body in JSON

    Field Type Description
    id integer Template id
    templateName string Template name
    templateCategory integer Template type
    Optional values are:
    1:Online template
    2: Import template

    Get the offer approval list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offerApprovals?email={email}.={period} \
       -u 'your_api_key:' \
       -X GET \
    

    > Response example

    {
      "total": 1,
      "offerApprovals": [
        {
          "CandidateName": "Arturia Pendragon",
          "jobTitle": "Saber",
          "departmentName": "Servants",
          "initiatedAt": "2018-03-16T09:10:26.000Z",
          "url": "https://app.mokahr.com/"
        }
      ]
    }
    

    According to the user's email and offer approval status, get the offers that need to be approved by the user.

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/offerApprovals?email={email}.={period}

    Request query parameter

    Field Required Description
    email Yes The user email in Moka
    period Yes Approval status
    Optional values are:
    past: Approved<br/ pending: Pending

    Response

    Response body in JSON

    Field Type Description
    total integer Return the total number of data
    offerApprovals[].CandidateName string Candidate name
    offerApprovals[].jobTitle string Job title
    offerApprovals[].departmentName string Department name
    offerApprovals[].initiatedAt string Initiate approval time. Date format is: ISO8601
    offerApprovals[].url string Approval url

    Approve offer

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/applications/offerApproval \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '
        {
          "applicationId": 12,
          "status": 1
        } '
    

    > Response example

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

    Update the offer approval result based on the application ID and status, and your csm needs to enable the external approval function

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/applications/offerApproval

    Request body parameter

    Field Required Type Description
    applicationId Yes integer The application id should be updated after the offer approval.
    status Yes integer Update status of approval result
    Optional values are:
    1: Approved
    2: Denied
    3: in approval

    Send Offer

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/sendOffer \
       -u 'your_api_key:' \
       -X POST \
       -H 'Content-Type: application/json' \
       -d '
        {
          "applicaitonId":1234,
          "notifySms":false,
          "notifyEmail":true,
          "notifyWechat":true
        }'
    

    > Response example

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

    Send Offer according to applicationId

    HTTP request

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

    Request body parameter

    Field Required Type Description
    applicationId Yes integer applicationId
    hrEmail Yes string Operate HR email
    notifySms No boolean Whether to send SMS to Candidates, the default is No
    notifyEmail No boolean Whether to send emails to Candidates, the default is no
    notifyWechat No boolean Whether to send WeChat to Candidates, the default is no
    ccUserEmails No array CC person (controlled by notifyEmail switch) eg: ["123@mail.com"]

    Receive/Reject Offer

    Set the candidate Offer feedback status, and the Moka system will mark the corresponding application as accepted or rejected after receiving it.

    > Request example

    $ curl http://api.mokahr.com/api-platform/v1/offer/status?applicationId=89&accepted=1&reasonId=1 \
       -u 'your_api_key:' \
       -X PUT \
    

    > Response example

    {
        "code": 0
    }
    

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/offer/status?applicationId={applicationId}&accepted={accepted}&reasonId={reasonId}

    Request parameter

    Field Required Description
    applicationId Yes Apply id
    accepted Yes Feedback status
    Optional values are:
    1: Accept
    0:Reject
    reasonId No System filing reason and customer-defined filing reason id, required when the feedback status is rejectedn
    talentPoolId No Public talent pool id, if not filled in, it will enter the public talent pool by default, it will take effect when the feedback status is rejected
    fbTime No Feedback time

    Response

    Response body in JSON

    Field Type Description
    code integer 0: Setting successful

    Get Offer custom field list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v2/offers/custom_fields
        -u 'your-api-key:'
        -X POST
        -H 'Content-Type: application/json'
        -d '{
          "hireMode": 1
          }'
    

    > Response example

    {
        "code": 0,
        "message": "success",
        "data": [
            {
                "id": "7513",
                "name": "Estimated start time",
                "hireMode": 1,
                "type": 4,
                "isBuiltin": true,
                "isRequired": false,
                "isSensitive": false,
                "isVisible": true,
                "reapprovalRequired": false
            },
            {
                "id": "410000250",
                "name": " Multiple-line text-1",
                "hireMode": 1,
                "type": 1,
                "supplementaryLocales": {
                    "en-US": {
                        "name": ""
                    }
                },
                "isBuiltin": false,
                "isRequired": true,
                "isSensitive": true,
                "isVisible": true,
                "reapprovalRequired": true
            },
            {
                "id": "410000251",
                "name": "Yes-or-No question",
                "hireMode": 1,
                "type": 3,
                "supplementaryLocales": {
                    "en-US": {
                        "name": ""
                    }
                },
                "isBuiltin": false,
                "isRequired": false,
                "isSensitive": false,
                "isVisible": true,
                "reapprovalRequired": false
            },       {
                "id": "410002280",
                "name": " Choice question",
                "hireMode": 1,
                "type": 6,
                "supplementaryLocales": {
                    "en-US": {
                        "name": "",
                        "detail": []
                    }
                },
                "detail": [
                    "A",
                    "B",
                    "C",
                    "D"
                ],
                "codes": [
                    "1001",
                    "1002",
                    "1003",
                    "1004"
                ],
                "isBuiltin": false,
                "isRequired": false,
                "isSensitive": false,
                "isVisible": true,
                "reapprovalRequired": false
            },
            {
                "id": "410002282",
                "name": "年月",
                "hireMode": 1,
                "type": 4,
                "supplementaryLocales": {
                    "en-US": {
                        "name": ""
                    }
                },
                "isBuiltin": false,
                "isRequired": false,
                "isSensitive": false,
                "isVisible": true,
                "reapprovalRequired": false
            },
            {
                "id": "410002283",
                "name": "时间年月日----0",
                "hireMode": 1,
                "type": 9,
                "supplementaryLocales": {
                    "en-US": {
                        "name": ""
                    }
                },
                "isBuiltin": false,
                "isRequired": false,
                "isSensitive": false,
                "isVisible": true,
                "reapprovalRequired": false
            },
            {
                "id": "410002292",
                "name": " Time period",
                "hireMode": 1,
                "type": 7,
                "supplementaryLocales": {
                    "en-US": {
                        "name": ""
                    }
                },
                "isBuiltin": false,
                "isRequired": false,
                "isSensitive": false,
                "isVisible": true,
                "reapprovalRequired": false
            },
            {
                "id": "410012394",
                "name": "测33333试",
                "hireMode": 1,
                "type": 6,
                "supplementaryLocales": {
                    "en-US": {
                        "name": "测试- Single line text-EnglishTitle",
                        "detail": [
                            "选项1-e",
                            "选项2-e"
                        ]
                    }
                },
                "detail": [
                    "选项1",
                    "选项2"
                ],
                "codes": [
                    "1005",
                    "1006"
                ],
                "isBuiltin": false,
                "isRequired": true,
                "isSensitive": true,
                "isVisible": false,
                "reapprovalRequired": true
            }
        ]
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v2/offers/custom_fields

    Request body

    Field Whether it is required Type Description
    hireMode Yes integer Recruitment mode
    Optional values are:
    1:experienced hires
    2:Campus recruitment

    Response

    Response body in JSON

    Field Type Description
    code integer Response code:200 normal, others are error
    msg string Success response success, failure response false
    data array or object If it is a single piece of data, it returns an object and multiple pieces of data return an array
    data.id integer Custom field id
    data.name string Custom field name
    data.hireMode integer Recruitment type
    Optional values are:
    1: experienced hires
    2 :Campus recruitment
    data.type integer Custom field type
    Optional values are:
    1: Single line text
    2: Multiple-line text
    3:Yes-or-No question
    4:Select year and month
    5: File
    6: Choice question7: Time period
    8:HC related to Offer
    9: Date
    data.detail array Options of custom field
    data.codes array The encoding corresponding to the custom field selection
    data.supplementaryLocales object Bilingual object
    data.supplementaryLocales.en-US object Multilingual English object
    data.supplementaryLocales.en-US.name string English name of the custom field
    data.supplementaryLocales.en-US.detail array Options of custom field
    data.isBuiltin boolean Whether it is in the system
    data.isRequired boolean Whether it is required
    data.isSensitive boolean Whether it is private
    data.isVisible boolean Whether it is visible
    data.reapprovalRequired boolean Whether it is reviewed

    Create Offer custom field list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offers/custom_field/create
        -u 'your-api-key:'
        -X POST
        -H 'Content-Type: application/json'
        -d '
        {
          "hireMode": 1,
          "detail":["选项1","选项2"],
          "codes":["1005","1006"],
          "supplementaryLocales":{
            "en-US": {
                "name":"测试- Single line text-EnglishTitle",
                "detail":["选项1-e","选项2-e"]
            }
          },
          "isRequired": true,
          "isSensitive": true,
          "isVisible": false,
          "name": "测33333试",
          "reapprovalRequired": true,
          "type": 6
        }
        '
    

    > Response example

    {
        "code": 200,
        "success": true,
        "msg": "success",
        "data": {
            "id": "410012399"
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/offers/custom_field/create

    Request body

    Field Required Type Description
    name Yes string Custom field name
    hireMode Yes integer Recruitment type
    Optional values are:
    1: experienced hires
    2: Campus recruitment
    type Yes integer Custom field type
    Optional values are:
    1: Single line text
    2: Multiple-line text
    3:Yes-or-No question
    4:Select year and month
    6: Choice question
    7: Time period
    8:HC related to Offer
    9: Date
    10:Number
    detail No array Custom field options, optional, when type is 6, add
    data.codes No array The encoding corresponding to the custom field selection
    supplementaryLocales No object multilingual object
    supplementaryLocales.en-US No object Multilingual English object
    supplementaryLocales.en-US.name No string English name of the custom field,optional.
    supplementaryLocales.en-US.detail No array Custom field options, optional
    isRequired No boolean Required, optional default is false
    isSensitive No boolean Whether private, optional is false by default
    isVisible No boolean Whether visible, optional is true by default
    reapprovalRequired No boolean Whether reviewed, optional is false by default
    attributeRule No object The attribute rule when type is 10
    attributeRule.decimalLength No number The number of decimal places is null by default
    attributeRule.isSupportNegative No boolean Whether to support negative numbers, not supported by default
    attributeRule.numberRange No objeact Number range
    attributeRule.numberRange.min No number Minimum value of number range
    attributeRule.numberRange.max No number Maximum value of number range

    Response

    Response body inJSON, as follows

    Field Type Description
    code string 200:Success
    not 200 represents error
    msg string Interface return value illustration
    success boolean Deprecated, please use code to judge the call result instead of business logic
    data object returned as an object
    data.id string Respond the currently created field id

    UpdateOffer custom field list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offers/custom_field/update
        -u 'your-api-key:'
        -X PUT
        -H 'Content-Type: application/json'
        -d '
        {
          "id":"410012399",
          "hireMode": 1,
          "detail":["选项1","选项2"],
          "codes":["1005","1006"],
          "supplementaryLocales":{
            "en-US": {
                "name":"测试- Single line text-EnglishTitle",
                "detail":["选项1-e","选项2-e"]
            }
          },
          "isRequired": true,
          "isSensitive": true,
          "isVisible": false,
          "name": "测33333试",
          "reapprovalRequired": true,
          "type": 6
        }
        '
    

    > Response example

    {
        "code": 200,
        "success": true,
        "msg": "success",
        "data": null
    }
    

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/offers/custom_field/update

    Request body

    Field Required Type Description
    id Yes integer The custom field id that needs to be modified, required
    name No string Custom field name, optional
    hireMode No integer Recruitment type
    Optional values are:
    1:experienced hires
    2: Campus recruitment
    type No integer Custom field type
    Optional values are:
    1: Single line text
    2: Multiple-line text
    3:Yes-or-No question
    4:Select year and month
    6: Choice question
    7: Time period
    9: Date
    10:Number
    detail No array Custom field options, optional
    data.codes No array The encoding corresponding to the custom field selection
    supplementaryLocales No object Multilingual object, if you set multilingual, you must set the parameters according to the following format, optional
    supplementaryLocales.en-US No object Multilingual English object, optional
    supplementaryLocales.en-US.name No string English name of the custom field,optional
    supplementaryLocales.en-US.detail No array Custom field options, optional
    isRequired No boolean Required,optional.
    isSensitive No boolean Whether private or not, optional
    isVisible No boolean Visible or not, optional
    reapprovalRequired No boolean Whether reviewed or not, optional
    attributeRule No object The attribute rule when type is 10
    attributeRule.decimalLength No number The number of decimal places is null by default
    attributeRule.isSupportNegative No boolean Whether to support negative numbers, not supported by default
    attributeRule.numberRange No objeact Number range
    attributeRule.numberRange.min No number Minimum value of number range
    attributeRule.numberRange.max No number Maximum value of number range

    Response

    Response body inJSON, as follows

    Field Type Description
    code string 200:Success
    not 200 represents error
    msg string Interface return value illustration
    success boolean Deprecated, please use code to judge the call result instead of business logic
    data object Respond null

    Delete Offer custom field list

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offers/custom_field/delete
        -u 'your-api-key:'
        -X DELETEl
        -H 'Content-Type: application/json'
        -d '
        {
          "id":"410012399"
        }
        '
    

    > Response example

    {
        "code": 200,
        "success": true,
        "msg": "success",
        "data": null
    }
    

    HTTP request

    DELETE https://api.mokahr.com/api-platform/v1/offers/custom_field/delete

    Request body

    Field Required Type Description
    id Yes integer The custom field id to be deleted, required

    Response

    Response body in JSON, as follows

    Field Type Description
    code string 200:Success
    not 200 represents error
    msg string Interface return value illustration
    success boolean Deprecated, please use code to judge the call result instead of business logic
    data object Respond null

    Get Offer attachment

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/offer/getOfferAttachment
        -u 'your-api-key:'
        -X POST
        -H 'Content-Type: application/json'
        -d '
        {
          "applicationId":"410012399"
        }
        '
    

    > Response example

    {
        "code": 200,
        "msg": "success",
        "data": {
          "downLoadUrl": "https://moka-test.oss-cn-beijing.aliyuncs.com/0d4281d9d86c43d8b0c46f1ad9fc9b0bf06d0e39fe6645e9a20b5171050259d1.pdf?Expires=1605597667&OSSAccessKeyId=LTAIoEXIQWCGUAZO&Signature=gVAYJv7BBCbIQ7fLYx3K%2Fy1FOso%3D&timestamp=1605594067646"
        }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/offer/getOfferAttachment

    Request body

    Field Required Type Description
    applicationId Yes integer Current Candidate's application id,required

    Response

    Response body inJSON, as follows

    Field Type Description
    code string 200:Success
    not 200 represents error
    msg string Interface return value illustration
    data object Object
    data.downLoadUrl string Link of offer attachment

    Onboarding API

    Mark candidate as to be onboarded

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/applications/33582/rejected \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
    

    > Response example

    {
      "success": true
    }
    or
    {
      "success": false,
      "errorMessage": "该Application has been archived"
    }
    

    Archive the application status and move it to the talent pool. Applications must be in the "to be onboarded" stage and not in the talent pool.

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/applications/{applicationId}/rejected

    Request Path parameter

    Field Required Type Description
    applicationId Yes integer Candidate application id to be marked as hired

    Request body parameter

    Field Required Type Description
    archiveReasonId No number Archiving reason id, if not passed, defaults to the built-in welfare benefits not satisfied
    talentPoolId No string Talent pool id, if not passed, defaults to the built-in system public talent pool (first use the query talent pool list interface to query the talent pool id)
    detail No string Archiving details, can be null

    Response

    Response body in JSON

    Field Description
    success boolean
    errorMessage string

    Mark CandidateRegular employee

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/applications/33582/hired \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '
        {
          "hcId": 5,
          "hiredAt": "2018-08-06T16:00:00.000Z",
          "probation": 3
        } '
    

    > Response example

    {
      "success": true
    }
    or
    {
      "success": false,
      "errorMessage": "hcId Parameter error"
    }
    
    {
      "success": false,
      "errorMessage": "该Application has been archived"
    }
    

    根据CandidateApplication id及对应Job requisition id.

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/applications/{applicationId}/hired

    Request Path parameter

    Field Required Type Description
    applicationId Yes integer Candidate application id to be marked as hired

    Request body parameter

    Field Required Type Description
    hcId No integer 1. When the "isUseOfferHcid" parameter is 1, (1) If "hcId" is not passed as a parameter, it will automatically fill in the recruitment requirement id associated with the offer under the current application; if the recruitment requirement id associated with the offer is empty, then The "hcId" parameter is empty. (2) If "hcId" is passed as a parameter, use the passed value. 2. If the passed value is null, it is not allowed to pass hcId="" or hcId=null, just don't pass this field directly.
    hiredAt Yes string Real start time
    probation Yes integer Probationary period
    Optional values are: 0-6
    0:No probation
    1-6:Months of probationary period
    isUseOfferHcid No integer Whether to use the job requisition associated with the offer when onboarding. Optional values: Pass 1: If the "hcId" parameter is not passed, it will automatically fill in the job requisition id associated with the offer under the current application. Do not pass parameters: Do not execute the logic of "use the job requisition associated with the offer when you join the job".

    Response

    Response body in JSON

    Field Type Description
    success boolean Whether it is successful
    errorMessage string Error info

    Mark CandidateRegular employee Transfer-to-regular

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/applications/33582/corrected \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '
        {
          "status": 1,
          "correctedAt": "2018-08-06T16:00:00.000Z"
        } '
    

    > Response example

    {
      "success": true
    }
    or
    {
      "success": false,
      "errorMessage": " Transfer-to-regularStatusError"
    }
    

    According to the candidate application id.

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/applications/{applicationId}/corrected

    Request Path parameter

    Field Required Type Description
    applicationId Yes integer Candidate application ids identified as hired\not hired; this application must in the regular employee talent pool

    Request body parameter

    Field Required Type Description
    status Yes integer Updated transfer-to-regular status
    Optional value
    1: Transfer-to-regular
    0:Not confirmed
    correctedAt No string Real transfer-to-regular time; pass when status=1, not pass is current time by default.

    Response

    Response body in JSON

    Field Type Description
    success boolean Whether it is successful
    errorMessage string Error info

    Mark terminated employment candidate

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/applications/35392/resign \
       -u 'your_api_key:' \
       -X PUT \
       -H 'Content-Type: application/json' \
       -d '
        {
          "type": 1,
          "detail":"世界那么大,我想去看看",
          "time": "2018-08-06T16:00:00.000Z"
        }
    

    > Response example

    {
      "success": true
    }
    or
    {
      "success": false,
      "errorMessage": "Archive reason cannot be found,归档信息Error",
      "code": 40040102
    }
    

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/applications/{applicationId}/resign

    Request Path parameter

    Field Required Type Description
    applicationId Yes integer identify the application id of terminated employee

    Request body parameter

    Field Required Type Description
    reasonType No integer The archive reason id of the terminated type
    detail Yes string Reason for resignation
    time No string Terminated time (request time by default)
    email No string Operator email
    talentPoolId No array The talent pool id with which the operator has permission (first use the query talent pool list interface to query the talent pool id)
    isResignWriteJob No boolean Whether to write back the resignation information
    Optional values are:
    0:Disable
    1: Enable, and requires terminated position
    Default: 0
    resignJobName No string Terminated position
    resignDepartment No string Terminated department
    reason No int Reason for resignation
    Optional values are:
    0:Terminated employment
    1: Resignation
    2: Dismission
    resignJobType No string Terminated job classification

    When the passed job category are the same, the system will automatically merge together.

    Response

    Response body in JSON

    Field Description
    success boolean
    Deprecated, please use code to judge the call result instead of business logic
    errorMessage string
    Error info
    code string

    not 200 represents error

    Possible error info

    code errorMessage Illustration
    0 success Success
    40040101 applicationId.error The candidate application id is wrong (a. the application id does not exist; b. the type is wrong)
    40040102 reason.error Wrong reason for leaving (wrong type)
    40040104 talent_pool_Id.error Talent pool error (a. not a former talent pool)
    40040105 email.error User email error (a. the user does not exist; b. email error)
    40040106 user_permission.error The user no permission

    Internal Referral Reward API

    Query Internal Referral Reward

    Request example

    $ curl https://api.mokahr.com/api-platform/v1/recommend/reward/getRecord
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '{operatorEmail: "test@test.com", statusList: ["unconfirmed"], "rewardRecordCreateAtRange": {
        "start": "2024-01-01",
        "end": "2025-01-01",
      }, "pageNum": "1", "pageSize": "30"}'
    

    Response example

    {
        "code": 0,
        "codeType": 0,
        "data": {
            "list": [
                {
                    "applicationCreatedAt": "2024-10-09",
                    "candidate": {
                        "name": "某某某"
                    },
                    "job": {
                        "id": "67f079a1-9372-4f2f-a284-28038b491f57",
                        "mjCode": "MJ025244",
                        "title": "咖啡师"
                    },
                    "lastChangeInfo": {},
                    "recommender": {
                        "email": "testo@mokahr.com",
                        "id": 355575,
                        "name": "test",
                        "number": "355575",
                        "phone": "11111111111",
                        "role": 50,
                        "roleName": "超级管理员"
                     ,
                    "recordNo": "OD10083726924",
                    "reward": {
                        "money": 0,
                        "score": 333
                    },
                    "rewardCreatedAt": "2024-10-09",
                    "rewardReason": "执行奖励原因",
                    "status": "unconfirmed",
                    "statusLastChangeAt": "2024-10-09",
                    "version": "1.0"
                }
            ],
            "pageNum": 1,
            "pageSize": 30,
            "size": 1,
            "total": 1,
            "version": "1.0"
        },
        "msg": "成功",
        "success": true
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/recommend/reward/getRecord

    Request body(JSON)

    Field Whether it is necessary Type Description
    operatorEmail No string Operator's email (If the operator's email is provided, records will be queried based on the permissions of that user)
    operatorNumber No string Operator's employee number (If the operator's employee number is provided, records will be queried based on the permissions of that user)
    statusList No array List of reward statuses to query, default is "unconfirmed"
    Optional values:
    unconfirmed: Unconfirmed
    confirmed: Confirmed
    cancel: Cancelled
    applicationCreateAtRange No object Application creation time range
    applicationCreateAtRange.start No string Application creation start time(yyyy-MM-dd)
    applicationCreateAtRange.end No string Application creation end time(yyyy-MM-dd)
    rewardRecordCreateAtRange No object Reward occurrence date range
    rewardRecordCreateAtRange.start No string Reward occurrence start time(yyyy-MM-dd)
    rewardRecordCreateAtRange.end No string Reward occurrence end time(yyyy-MM-dd)
    statusLastChangeAt No object Confirmation/cancellation date range
    statusLastChangeAt.start No string Confirmation/cancellation start time(yyyy-MM-dd)
    statusLastChangeAt.end No string Confirmation/cancellation end time(yyyy-MM-dd)
    pageNum No integer Page number, default value is 1
    pageSize No integer Page size, default value is 30

    Response

    Response body in JSON

    Field Type Description
    total integer Total record count
    size integer Number of items on the current page
    pageNum integer Current page number
    pageSize integer Number of items per page
    list[] array Reward record collection
    list[].recommender object Referrer
    list[].recommender.name string Referrer's name
    list[].recommender.id long Referrer's ID
    list[].recommender.role integer Referrer's role
    list[].recommender.roleName string Referrer's role description
    list[].recommender.email string Referrer's email
    list[].recommender.phone string Referrer's phone number
    list[].recommender.number string Referrer's employee number
    list[].candidate object Candidate
    list[].candidate.name string Candidate's name
    list[].candidate.applicationId long Application ID
    list[].job object Job information
    list[].job.title string Job title
    list[].job.id string Job ID
    list[].job.mjCode string Job code
    list[].recordNo string Reward record number
    list[].status string Reward status
    list[].reward object Reward content
    list[].reward.score long Reward points
    list[].reward.money long Reward money
    list[].rewardReason string Reason for the reward
    list[].applicationCreatedAt string Application creation date(yyyy-MM-dd)
    list[].rewardCreatedAt string Reward occurrence date(yyyy-MM-dd)
    list[].statusLastChangeAt string Confirmation/cancellation date(yyyy-MM-dd)
    list[].lastChangeInfo object Cancellation reason
    list[].lastChangeInfo.reason string Cancellation reason description

    Confirm Referral Reward

    Request example

    $ curl https://api.mokahr.com/api-platform/v1/recommend/reward/confirm
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '{operatorEmail: "test@test.com", recordNoList:["1234567"]}'
    

    Response example

    { 
      "code": 200,
      "msg": "success",
      "data": null
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/recommend/reward/confirm

    Request body(JSON)

    Field Whether it is necessary Type Description
    operatorEmail At least one of email or employee number must be provided string Operator's email
    operatorNumber At least one of email or employee number must be provided string Operator's employee number
    recordNoList Yes array Referral reward record numbers

    Response

    Response body in JSON

    Field Type Description
    code number 0: Success
    Non-zero values represent failure
    message string Message

    Cancel Referral Reward

    Request example

    $ curl https://api.mokahr.com/api-platform/v1/recommend/reward/cancel
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '{operatorEmail: "test@test.com", reason: "取消奖励", recordNoList:["1234567"]}'
    

    Response example

    { 
      "code": 200,
      "msg": "success",
      "data": null
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/recommend/reward/cancel

    Request body(JSON)

    Field Whether it is necessary Type Description
    operatorEmail At least one of email or employee number must be provided string Operator's email
    operatorNumber At least one of email or employee number must be provided string Operator's employee number
    reason Yes string Reason for cancelling the reward
    recordNoList Yes array Referral reward record numbers

    Response

    Response body in JSON

    Field Type Description
    code number 0: Success
    Non-zero values represent failure
    message string Message

    Employee referral accountAPI

    Check employee referral account

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/user/recommend_account/search
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '{ "emails": ["hello@mokahr.com", "admin@mokahr.com"], "phones": ["18600000001"], "employeeIds": ["123456", "32123"]}'
    

    > Response example

    [
      {
        "name": "超级Administrator",
        "email": "hello@mokahr.com",
        "phone": "18600000002",
        "deactivated": 0,
        "recommend_score": 0,
        "recommend_money": 0,
        "employee_id": "123456"
      }
    ]
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/user/recommend_account/search

    Request body(JSON)

    A single query is only allowed to query 20 users (the sum of the number of emails + phones does not exceed 20)

    Field Whether it is necessary Type Description
    emails Pass at least one from emails, phones, and employee ids array Array of email addresses of referral users to be queried
    phones Pass at least one from emails, phones, and employee ids array Array of phone number of referral users to be queried
    employeeIds Pass at least one from emails, phones, and employee ids array Array of employee number of referral users to be queried

    Response

    Response body in JSON

    Field Type Description
    name string Name
    email string Email
    phone string Phone number
    employee_id string Employee No.
    deactivated number Whether be disabled
    Optional values are:
    0:Available
    1:Disabled
    recommend_score number Referral points
    recommend_money number Referral cash

    Adding and subtracting the balance of referrals

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/user/recommend_account/wallet_balance_changes
      -u 'your-api-key:'
      -X PUT
      -H 'content-type: application/json'
      -d '{ "user": { "email": "hello@mokahr.com" }, "currencyChanges": { "SCORE": { "method": 0, "number": 100 }, "MONEY": { "method": 0, "number": 100 } }, "comment": "积分商城兑换 iPhoneX" }'
    

    > Response example

    {
      "name": "超级Administrator",
      "email": "hello@mokahr.com",
      "phone": "18600000001",
      "employeeId": "123456",
      "recommendScore": 10,
      "recommendMoney": 800
    }
    

    HTTP request

    PUT https://api.mokahr.com/api-platform/v1/user/recommend_account/wallet_balance_changes

    Request body(JSON)

    Field Whether it is necessary Type Description
    user Yes object User of operated referee
    user.email Pass at least one from user.email, user.phone, and user.employeeid object Email of operated referrer
    user.phone Pass at least one from user.email, user.phone, and user.employeeid object Phone of operated referrer
    user.employeeId Pass at least one from user.email, user.phone, and user.employeeid object Employee number of operated referrer
    currencyChanges Yes object Change currency object
    currencyChanges.SCORE Pass at least one from currencyChanges.SCORE and currencyChanges.MONEY object Operate user's points
    currencyChanges.SCORE.method Yes 0 or 1 0 :Reduce
    1: Increase
    currencyChanges.SCORE.number Yes number The amount to add or subtract, must be a number and can only enter up to 2 decimal places
    currencyChanges.MONEY Pass at least one from currencyChanges.SCORE and currencyChanges.MONEYPass at least one from currencyChanges.SCORE and currencyChanges.MONEY object Operate user's cash
    currencyChanges.MONEY.method Yes 0 or 1 0 :Reduce
    1: Increase
    currencyChanges.MONEY.number Yes number The amount to add or subtract, must be a number and can only enter up to 2 decimal places
    comment Optional values are string Operation note, such as (exchange iPhoneX

    Response value

    Introduced user balance after change

    Query referral points

    > Request example

    $ curl https://api.mokahr.com/api-platform/v2/user/recommend_account/search
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '{
      "emails":["son@mokahr.com",""],
      "phones":["12345678"],
      "numbers":["123","234"]
      }'
    

    > Response example

    {
      "code": 0,
      "codeType": 0,
      "data": [
        {
          "deactivated": 0,
          "email": "son@mokahr.com",
          "name": "宋秋晓",
          "phone": "",
          "recommendMoney": 0.00,
          "recommendScore": 45.00,
          "version": "1.0"
        }
      ],
      "msg": "成功",
      "success": true
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v2/user/recommend_account/search

    Request body(JSON)

    Field Whether it is necessary Type Description
    emails At least one of emails、phones and numbers should be passed in. array Array of email addresses of referral users to be queried
    phones At least one of emails、phones and numbers should be passed in. array Array of phone number of referral users to be queried
    numbers At least one of emails、phones and numbers should be passed in. array Array of employee number of referral users to be queried

    Response

    Response body in JSON

    Field Type Description
    name string Name
    email string Email
    phone string Phone
    number string employee No.
    deactivated integer Whether be disabled
    Optional values are:
    0:Available
    1:Disabled
    recommendScore number Referral points
    recommendMoney number Referral cash

    Headhunter API

    Headhunter management has been upgraded to headhunter contract management. Headhunter contract and headhunter company are two concepts, which can meet the scenario of "an enterprise signing multiple contracts with the same headhunter company". The specific changes are as follows:
    1.New field [Headhunter Contract Name];
    2.The same headhunter consultant can be under different headhunter contracts.
    After the upgrade, the impact on the following version 1 headhunter API:
    1.Version 1 headhunter API is only applicable to the scenario of "signing one contract with a headhunter company";
    2."Add headhunter", "Update headhunter" API actually adds and modifies the headhunter contract. When adding a headhunter company, the system will default to assign the value of the [Headhunter Contract Name] field to the [Headhunter Company Name] field;
    3."Get headhunter" and "Get headhunter consultant" API are actually queries the contracts and consultants under the headhunter contract;
    4."Add headhunter" and "Update headhunter" API actually add and modify the consultants under the headhunter contract.
    In particular, if multiple contracts are manually created for a particular headhunter company in the system, the "Get headhunter" API returns the first created contract under the headhunter company by default.

    Add Headhunter

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headhunters/addCompany
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '
    {
        "activated": true,
        "authorizedUserEmails": [
            "fengxiang@mokahr.com"
        ],
        "company": "20210917165310",
        "contactEmail": "2021091716531012@mokahr.com",
        "contactName": "         v        ",
        "contactPhone": "13111111111",
        "endDate": "2021-08-22T00:00:00+08:00",
        "needPermission": true,
        "notifiedUserEmails": [
            "fengxiang@mokahr.com"
        ],
        "operatorEmail": "fengxiang@mokahr.com",
        "orgId": "bytedance003",
        "protectTime": "10005",
        "rate": "hahah",
        "rpoEnabled": "true",
        "rpoProtectTime": "90",
        "startDate": "2021-08-20T00:00:00+08:00",
        "telephone": "1111111",
        "telephonePrefixLocal": "111",
        "telephonePrefixInternational": "11"
    }
      '
    

    > Response example

    {
      "code": 200,
      "msg": "success",
      "data": {
        "id": 410020302
      }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/headhunters/addCompany

    Request body(JSON)

    Field Required Type Description
    activated Yes boolean Headhunter agency status
    Optional values are:
    0:No
    1:Yes
    authorizedUserEmails No array[string] Authorized user email
    company Yes string Headhunter agency name
    contactEmail No string Headhunter agency contact email
    contactName No string Headhunter agency contact name
    contactPhone No string Headhunter agency contact phone
    endDate No string The end date of headhunter agency contract
    needPermission No boolean whether the agency authorized headhunter?
    notifiedUserEmails No array[string] Headhunter agency interface with
    operatorEmail Yes string Operator email, must be Moka user
    rate No string Headhunter agency fee rate
    headhunterEnabled boolean Whether the agency open headhunter
    protectTime string number Headhunter agency protection (days)
    rpoEnabled No boolean Whether the agency open RPO
    rpoProtectTime No number Headhunter agency bulk import Candidate protection (RPO)
    startDate No string The start date of headhunter agency contract
    telephone No string Headhunter agency contact landline
    telephonePrefixLocal No string Landline area code
    telephonePrefixInternational No string Landline international code

    Response

    Response body in JSON

    Field Type Description
    code number Return code: non-200 means error
    msg number Error info
    data object
    data.id number Current data id

    Update Headhunter

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headhunters/updateCompany
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '
    {
        "activated": "true",
        "authorizedUserEmails": [
            "fengxiang@mokahr.com"
        ],
        "company": "20210917165739\u66f4\u65b0",
        "contactEmail": "20210917165739fengxiang11111@mokahr.com",
        "contactName": "\t\r\n\\~!@#$%^&amp;*()_+&lt;&gt;?",
        "contactPhone": "13111111111",
        "endDate": "2021-08-22T00:00:00+08:00",
        "needPermission": true,
        "notifiedUserEmails": [
            "fengxiang@mokahr.com"
        ],
        "operatorEmail": "fengxiang@mokahr.com",
        "orgId": "bytedance003",
        "protectTime": "10000",
        "rate": "99",
        "rpoEnabled": "true",
        "rpoProtectTime": "0",
        "startDate": "2021-08-31T00:00:00+08:00",
        "telephone": "12229211",
        "telephonePrefixLocal": "010",
        "telephonePrefixInternational": "86",
        "id": 410020302
    }
      '
    

    > Response example

    {
      "code": 200,
      "msg": "success",
      "data": {
        "id": 410020302
      }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/headhunters/updateCompany

    Request body(JSON)

    Field Required Type Description
    id Yes number Headhunter agency id
    activated Yes boolean Headhunter agency status
    Optional values are:
    0:No
    1:Yes
    authorizedUserEmails No array[string] Authorized user email
    company Yes string Headhunter agency name
    contactEmail No string Headhunter agency contact email
    contactName No string Headhunter agency contact name
    contactPhone No string Headhunter agency contact phone
    endDate No string The end date of headhunter agency contract
    needPermission No boolean whether the agency authorized headhunter?
    notifiedUserEmails No array[string] Headhunter agency interface with
    operatorEmail Yes string Operator email, must be Moka user
    rate No string Headhunter agency fee rate
    protectTime string number Headhunter agency protection (days)
    rpoEnabled No boolean Whether the agency open RPO
    rpoProtectTime No number Headhunter agency bulk import Candidate protection (RPO)
    startDate No string The start date of headhunter agency contract
    telephone No string Headhunter agency contact landline
    telephonePrefixLocal No string Landline area code
    telephonePrefixInternational No string Landline international code

    Response

    Response body in JSON

    Field Type Description
    code number Response code:not200represents Error
    msg number Error info
    data object
    data.id number Current data id

    Get Headhunter

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headhunters/getCompany?orgId=test
      -u 'your-api-key:'
      -X GET
    

    > Response example

    {
      "code": 200,
      "msg": "success",
      "data": [{
        "activated": true,
        "authorizedUserEmails": [
          "fengxiang@mokahr.com"
        ],
        "company": "20210917165739Update",
        "contactEmail": "20210917165739fengxiang11111@mokahr.com",
        "contactName": "\t\r\n\\~!@#$%^&*()_+&lt;&gt;?",
        "contactPhone": "13111111111",
        "contacts": [],
        "telephone": "12229211",
        "endDate": "2021-08-22T00:00",
        "id": 410020302,
        "needPermission": true,
        "notifiedUserEmails": [
          "fengxiang@mokahr.com"
        ],
        "protectTime": 10000,
        "rate": "99",
        "rpoEnabled": true,
        "rpoProtectTime": 0,
        "startDate": "2021-08-31T00:00"
      }
    
      ]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/headhunters/getCompany

    Request Query (JSON)

    Field Required Type Description
    orgId Yes string Current company orgld

    Response

    Response body in JSON

    Field Type Description
    code number Response code:not200represents Error
    msg number Error info
    data array(object)
    data[].id boolean Headhunter agency id
    data[].activated boolean Headhunter agency status
    Optional values are:
    0:No
    1:Yes
    data[].authorizedUserEmails array[string] Authorized user email
    data[].company string Headhunter agency name
    data[].contactEmail string Headhunter agency contact email
    data[].contactName string Headhunter agency contact name
    data[].contactPhone string Headhunter agency contact phone
    data[].contacts array Headhunter consultant -todo
    data[].endDate string The end date of headhunter agency contract
    data[].needPermission boolean whether the agency authorized headhunter?
    data[].notifiedUserEmails array[string] Headhunter agency interface with
    data[].operatorEmail string Operator email, must be Moka user
    data[].rate string Headhunter agency fee rate
    data[].protectTime number Headhunter agency protection (days)
    data[].rpoEnabled boolean Whether the agency open RPO
    data[].rpoProtectTime number Headhunter agency bulk import Candidate protection (RPO)
    data[].startDate string The start date of headhunter agency contract
    data[].telephone string Headhunter agency contact landline
    data[].telephonePrefixLocal string Landline area code
    data[].telephonePrefixInternational string Landline international code

    Get Headhunter consultant

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headhunters/getContacts?orgId=test&headhunterCompanyId=1
      -u 'your-api-key:'
      -X GET
    

    > Response example

    {
      "code": 200,
      "msg": "success",
      "data": [{
        "activated": 1,
        "active": false,
        "headHunterId": 410022372,
        "headHunterName": "20210917163223",
        "headHunterPhone": "13111111111",
        "headHunterTelephone": "11111111",
        "telephonePrefixLocal": "010",
        "telephonePrefixInternational": "89",
        "headhunterEmail": "1631867543@qq.com"
      }]
    }
    

    HTTP request

    GET https://api.mokahr.com/api-platform/v1/headhunters/getContacts

    Request Query (JSON)

    Field Required Type Description
    orgId Yes string Current company org id
    headhunterCompanyId Yes string Headhunter agency id

    Response

    Response body in JSON

    Field Type Description
    code number Response code:not200represents Error
    msg number Error info
    data array(object)
    data[].activated number Headhunter consultant status
    Optional values are:
    0:No
    1:Yes
    data[].active boolean Headhunting consultant status: activated or not
    data[].headHunterId number Headhunter consultant id
    data[].headHunterName string Headhunter consultant name
    data[].headHunterPhone string Headhunter consultant phone
    data[].headHunterTelephone string Headhunter consultant landline
    data[].telephonePrefixLocal string Landline area code
    data[].telephonePrefixInternational string Landline international code
    data[].headhunterEmail string Headhunter consultant email

    Add Headhunter consultant

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headhunters/addContacts
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '
    {
        "activated": 1,
        "headHunterName": "202101701371",
        "headHunterPhone": "13111111311",
        "telephonePrefixInternational": "89",
        "telephonePrefixLocal": "010",
        "headHunterTelephone": "11111111",
        "headhunterCompanyId": 410020302,
        "headhunterEmail": "16318917@qq.com",
        "operatorEmail": "fengxiang@mokahr.com",
        "orgId": "bytedance003"
    }
      '
    

    > Response example

    {
      "code": 200,
      "msg": "success",
      "data": {
        "headHunterId":3344555
      }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/headhunters/addContacts

    Request body(JSON)

    Field Required Type Description
    activated Yes number Whether to enable
    Optional values are:
    0:No
    1:Yes
    headHunterName Yes string Headhunter consultant name
    headHunterPhone No string Headhunter consultant phone
    headHunterTelephone No string Headhunter consultant landline
    telephonePrefixLocal No string Landline area code
    telephonePrefixInternational No string Landline international code
    headhunterCompanyId Yes number Headhunter agency id
    headhunterEmail Yes string Headhunter consultant email
    operatorEmail Yes string Operator email, must be Moka user

    Response

    Response body in JSON

    Field Type Description
    code number Return code: non-200 means error
    msg number Error info
    data object
    data.headHunterId number Headhunter consultant id

    Update headhunter consultant

    > Request example

    $ curl https://api.mokahr.com/api-platform/v1/headhunters/updateContacts
      -u 'your-api-key:'
      -X POST
      -H 'content-type: application/json'
      -d '
    {
        "activated": "1",
        "headHunterName": "  d  ",
        "headHunterPhone": "13111111311",
        "telephonePrefixInternational": "88",
        "telephonePrefixLocal": "0352",
        "headHunterTelephone": "222222",
        "headhunterCompanyId": 410020302,
        "headHunterId": 410024263,
        "headhunterEmail": "fengxiang@mokahr.com",
        "operatorEmail": "fengxiang@mokahr.com",
        "orgId": "bytedance003"
    }
      '
    

    > Response example

    {
      "code": 200,
      "msg": "success",
      "data": {
        "headHunterId": 33444
      }
    }
    

    HTTP request

    POST https://api.mokahr.com/api-platform/v1/headhunters/addContacts

    Request body(JSON)

    Field Required Type Description
    headerHunterId Yes number Current data id
    activated Yes number Whether to enable
    Optional values are:
    0:No
    1:Yes
    headHunterName Yes string Headhunter consultant name
    headHunterPhone No string Headhunter consultant phone
    headHunterTelephone No string Headhunter consultant landline
    telephonePrefixLocal No string Landline area code
    telephonePrefixInternational No string Landline international code
    headhunterCompanyId Yes number Headhunter agency id
    headhunterEmail Yes string Headhunter consultant email
    operatorEmail Yes string Operator email, must be Moka user

    Response

    Response body in JSON

    Field Type Description
    code number Return code: non-200 means error
    msg number Error info
    data object
    data.headHunterId number Headhunter consultant id

    BI report API

    Get a certain report result data

    > Request example

    curl --location --request POST 'https://api.mokahr.com/api-platform/v1/getReportData' \
                --header 'Content-Type: application/json' \
                --header 'Authorization: Basic dGVzdDo=' \
                --data-raw '{
                    "reportId": 12318
                }'
    

    > Response example

    {
      "code": 200,
      "data": {
        "headers": [{
          "dataIndex": "c_1",
          "title": "Gender",
          "type": "HEADER"
        }, {
          "dataIndex": "c_2",
          "title": "Ethnicity",
          "type": "HEADER"
        }],
        "rows": [{
          "c_1": "Male性",
          "c_2": "汉族"
        }],
        "size": 1
      },
      "msg": "Success"
    }
    

    HTTP request

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

    Request body(JSON)

    Field Required Type Description
    reportId Yes integer Report id

    Response

    The returned JSON data of the body is as follows. The above returned data has a total of one row and two columns. The first column is gender, and the second column is ethnicity:

    Field Type Description
    code number Return code: non-200 means error
    msg number Error info
    data object
    data.headers object Header
    data.headers.dataIndex integer The mapping relationship between header and result
    data.headers.title string Header name
    data.headers.type string Header type, only possible as HEADER or DATA
    data.headers.children object The element type is the same as data.headers (representing multi-level headers)
    data.rows array Result data
    data.rows.c_$ string Result data index key:value format

    JD template list API

    Get JD template list

    > Request example

    curl --location 'https://api.mokahr.com/api-platform/v1/job/job_desc_template/list' \
    --header 'Accept: */*' \
    --header 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8' \
    --header 'Connection: keep-alive' \
    --header 'Content-Type: application/json' \
    --data '{
        "hireMode":1
    }'
    

    > Response example

    {
      "code": 0,
      "codeType": 0,
      "data": {
        "jobDescTemplateDTOList": [
          {
            "id": 100000908,
            "jobDescription": "<p>一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十.一二三四五六七八九十导入902-描述</p>",
            "jobTitle": "导入902-名称1",
            "name": "导入9021",
            "version": "1.0"
          }
        ],
        "total": 1004,
        "version": "1.0"
      },
      "msg": "成功",
      "success": true
    }
    

    HTTP request

    `POST https://api.mokahr.com/api-platform/v1/job/job_desc_template/list

    Request body(JSON)

    Field Required Type Description
    hireMode Yes number Recruitment mode (social recruitment 1, school recruitment 2)
    pageSize No number Number of entries per page for pagination, default 100
    nextCursor No number Pagination cursor, no need to pass it for the first query.The value of this attribute is taken from the nextCursor value returned by the response parameter on the last call.

    Response body(JSON)

    Field Type Description
    total integer Total JDs
    hasMore boolean Indicates whether there is a return value on the next page.
    nextCursor string Pagination cursor
    jds[] array JD list
    jds[].id integer JD id
    jds[].title string JD title
    jds[].jobTitle string Job name
    jds[].jobDescription string Job description

    Administrative area code

    Administrative area code

    > Administrative area code

    {
     "110000": "北京City",
     "110101": "东城District",
     "110102": "西城District",
     "110105": "朝阳District",
     "110106": "丰台District",
     "110107": "石景山District",
     "110108": "海淀District",
     "110109": "门头沟District",
     "110111": "房山District",
     "110112": "通州District",
     "110113": "顺义District",
     "110114": "昌平District",
     "110115": "大兴District",
     "110116": "怀柔District",
     "110117": "平谷District",
     "110118": "密云District",
     "110119": "延庆District",
     "120000": "天津City",
     "120101": "和平District",
     "120102": "河东District",
     "120103": "河西District",
     "120104": "南开District",
     "120105": "河北District",
     "120106": "红桥District",
     "120110": "东丽District",
     "120111": "西青District",
     "120112": "津南District",
     "120113": "北辰District",
     "120114": "武清District",
     "120115": "宝坻District",
     "120116": "滨海新District",
     "120117": "宁河District",
     "120118": "静海District",
     "120119": "蓟州District",
     "130000": "河北",
     "130100": "石家庄City",
     "130102": "长安District",
     "130104": "桥西District",
     "130105": "新华District",
     "130107": "井陉矿District",
     "130108": "裕华District",
     "130109": "藁城District",
     "130110": "鹿泉District",
     "130111": "栾城District",
     "130121": "井陉县",
     "130123": "正定县",
     "130125": "行唐县",
     "130126": "灵寿县",
     "130127": "高邑县",
     "130128": "深泽县",
     "130129": "赞皇县",
     "130130": "None极县",
     "130131": "平山县",
     "130132": "元氏县",
     "130133": "赵县",
     "130171": "石家庄高新技术产业开发District",
     "130172": "石家庄循环化工园District",
     "130181": "辛集City",
     "130183": "晋州City",
     "130184": "新乐City",
     "130200": "唐山City",
     "130202": "路南District",
     "130203": "路北District",
     "130204": "古冶District",
     "130205": "开平District",
     "130207": "丰南District",
     "130208": "丰润District",
     "130209": "曹妃甸District",
     "130223": "滦县(旧)",
     "130224": "滦南县",
     "130225": "乐亭县",
     "130227": "迁西县",
     "130229": "玉田县",
     "130271": "河北唐山芦台经济开发District",
     "130272": "唐山City汉沽管理District",
     "130273": "唐山高新技术产业开发District",
     "130274": "河北唐山海港经济开发District",
     "130281": "遵化City",
     "130283": "迁安City",
     "130284": "滦州City",
     "130300": "秦皇岛City",
     "130302": "海港District",
     "130303": "山海关District",
     "130304": "北戴河District",
     "130306": "抚宁District",
     "130321": "青龙满族自治县",
     "130322": "昌黎县",
     "130324": "卢龙县",
     "130371": "秦皇岛City经济技术开发District",
     "130372": "北戴河新District",
     "130400": "邯郸City",
     "130402": "邯山District",
     "130403": "丛台District",
     "130404": "复兴District",
     "130406": "峰峰矿District",
     "130407": "肥乡District",
     "130408": "永年District",
     "130423": "临漳县",
     "130424": "成安县",
     "130425": "大名县",
     "130426": "涉县",
     "130427": "磁县",
     "130430": "邱县",
     "130431": "鸡泽县",
     "130432": "广平县",
     "130433": "馆陶县",
     "130434": "魏县",
     "130435": "曲周县",
     "130471": "邯郸经济技术开发District",
     "130473": "邯郸冀南新District",
     "130481": "武安City",
     "130500": "邢台City",
     "130502": "襄都District",
     "130503": "信都District",
     "130505": "任泽District",
     "130506": "南和District",
     "130521": "邢台县(旧)",
     "130522": "临城县",
     "130523": "内丘县",
     "130524": "柏乡县",
     "130525": "隆尧县",
     "130526": "任县(旧)",
     "130527": "南和县(旧)",
     "130528": "宁晋县",
     "130529": "巨鹿县",
     "130530": "新河县",
     "130531": "广宗县",
     "130532": "平乡县",
     "130533": "威县",
     "130534": "清河县",
     "130535": "临西县",
     "130571": "河北邢台经济开发District",
     "130581": "南宫City",
     "130582": "沙河City",
     "130600": "保定City",
     "130602": "竞秀District",
     "130604": "南CityDistrict(旧)",
     "130606": "莲池District",
     "130607": "满城District",
     "130608": "清苑District",
     "130609": "徐水District",
     "130623": "涞水县",
     "130624": "阜平县",
     "130626": "定兴县",
     "130627": "唐县",
     "130628": "高阳县",
     "130629": "容城县",
     "130630": "涞源县",
     "130631": "望都县",
     "130632": "安新县",
     "130633": "易县",
     "130634": "曲阳县",
     "130635": "蠡县",
     "130636": "顺平县",
     "130637": "博野县",
     "130638": "雄县",
    "130671": "保定高新技术产业开发District",
     "130672": "保定白沟新城",
     "130681": "涿州City",
     "130682": "定州City",
     "130683": "安国City",
     "130684": "高碑店City",
     "130700": "张家口City",
     "130702": "桥东District",
     "130703": "桥西District",
     "130705": "宣化District",
     "130706": "下花园District",
     "130708": "万全District",
     "130709": "崇礼District",
     "130722": "张北县",
     "130723": "康保县",
     "130724": "沽源县",
     "130725": "尚义县",
     "130726": "蔚县",
     "130727": "阳原县",
     "130728": "怀安县",
     "130730": "怀来县",
     "130731": "涿鹿县",
     "130732": "赤城县",
     "130771": "张家口经济开发District",
     "130772": "张家口City察北管理District",
     "130773": "张家口City塞北管理District",
     "130800": "承德City",
     "130802": "双桥District",
     "130803": "双滦District",
     "130804": "鹰手营子矿District",
     "130821": "承德县",
     "130822": "兴隆县",
     "130823": "平泉县(旧)",
     "130824": "滦平县",
     "130825": "隆化县",
     "130826": "丰宁满族自治县",
     "130827": "宽城满族自治县",
     "130828": "围场满族蒙古族自治县",
     "130871": "承德高新技术产业开发District",
     "130881": "平泉City",
     "130900": "沧州City",
     "130902": "新华District",
     "130903": "运河District",
     "130921": "沧县",
     "130922": "青县",
     "130923": "东光县",
     "130924": "海兴县",
     "130925": "盐山县",
     "130926": "肃宁县",
     "130927": "南皮县",
     "130928": "吴桥县",
     "130929": "献县",
     "130930": "孟村回族自治县",
     "130971": "河北沧州经济开发District",
     "130972": "沧州高新技术产业开发District",
     "130973": "沧州渤海新District",
     "130981": "泊头City",
     "130982": "任丘City",
     "130983": "黄骅City",
     "130984": "河间City",
     "131000": "廊坊City",
     "131002": "安次District",
     "131003": "广阳District",
     "131022": "固安县",
     "131023": "永清县",
     "131024": "香河县",
     "131025": "大城县",
     "131026": "文安县",
     "131028": "大厂回族自治县",
     "131071": "廊坊经济技术开发District",
     "131081": "霸州City",
     "131082": "三河City",
     "131100": "衡水City",
     "131102": "桃城District",
     "131103": "冀州District",
     "131121": "枣强县",
     "131122": "武邑县",
     "131123": "武强县",
     "131124": "饶阳县",
     "131125": "安平县",
     "131126": "故城县",
     "131127": "景县",
     "131128": "阜城县",
     "131171": "河北衡水高新技术产业开发District",
     "131172": "衡水滨湖新District",
     "131182": "深州City",
     "140000": "山西",
     "140100": "太原City",
     "140105": "小店District",
     "140106": "迎泽District",
     "140107": "杏花岭District",
     "140108": "尖草坪District",
     "140109": "万柏林District",
     "140110": "晋源District",
     "140121": "清徐县",
     "140122": "阳曲县",
     "140123": "娄烦县",
     "140171": "山西转型综合改革示范District",
     "140181": "古交City",
     "140200": "大同City",
     "140202": "城District(旧)",
     "140203": "矿District(旧)",
     "140211": "南郊District(旧)",
     "140212": "新荣District",
     "140213": "平城District",
     "140214": "云冈District",
     "140215": "云州District",
     "140221": "阳高县",
     "140222": "天镇县",
     "140223": "广灵县",
     "140224": "灵丘县",
     "140225": "浑源县",
     "140226": "左云县",
     "140227": "大同县(旧)",
     "140271": "山西大同经济开发District",
     "140300": "阳泉City",
     "140302": "城District",
     "140303": "矿District",
     "140311": "郊District",
     "140321": "平定县",
     "140322": "盂县",
     "140400": "长治City",
     "140402": "城District(旧)",
     "140403": "潞州District",
     "140404": "上党District",
     "140405": "屯留District",
     "140406": "潞城District",
     "140411": "郊District(旧)",
     "140412": "潞州District(旧)",
     "140421": "长治县(旧)",
     "140423": "襄垣县",
     "140424": "屯留县(旧)",
     "140425": "平顺县",
     "140426": "黎城县",
     "140427": "壶关县",
     "140428": "长子县",
     "140429": "武乡县",
     "140430": "沁县",
     "140431": "沁源县",
     "140471": "山西长治高新技术产业园District",
     "140481": "潞City(旧)",
     "140500": "晋City",
     "140502": "城District",
     "140521": "沁水县",
     "140522": "阳城县",
     "140524": "陵川县",
     "140525": "泽州县",
     "140581": "高平City",
     "140600": "朔州City",
     "140602": "朔城District",
     "140603": "平鲁District",
     "140621": "山阴县",
     "140622": "应县",
     "140623": "右玉县",
     "140624": "怀仁县(旧)",
     "140671": "山西朔州经济开发District",
     "140681": "怀仁City",
     "140700": "晋中City",
     "140702": "榆次District",
     "140703": "太谷District",
     "140721": "榆社县",
     "140722": "左权县",
     "140723": "和顺县",
     "140724": "昔阳县",
     "140725": "寿阳县",
     "140726": "太谷县(旧)",
     "140727": "祁县",
     "140728": "平遥县",
     "140729": "灵石县",
     "140781": "介休City",
     "140800": "运City",
     "140802": "盐湖District",
     "140821": "临猗县",
     "140822": "万荣县",
     "140823": "闻喜县",
     "140824": "稷山县",
     "140825": "新绛县",
     "140826": "绛县",
     "140827": "垣曲县",
     "140828": "夏县",
     "140829": "平陆县",
     "140830": "芮城县",
     "140881": "永济City",
     "140882": "河津City",
     "140900": "忻州City",
     "140902": "忻府District",
     "140921": "定襄县",
     "140922": "五台县",
     "140923": "代县",
     "140924": "繁峙县",
     "140925": "宁武县",
     "140926": "静乐县",
     "140927": "神池县",
     "140928": "五寨县",
     "140929": "岢岚县",
     "140930": "河曲县",
     "140931": "保德县",
     "140932": "偏关县",
     "140971": "五台山风景名胜District",
     "140981": "原平City",
     "141000": "临汾City",
     "141002": "尧都District",
     "141021": "曲沃县",
     "141022": "翼城县",
     "141023": "襄汾县",
     "141024": "洪洞县",
     "141025": "古县",
     "141026": "安泽县",
     "141027": "浮山县",
     "141028": "吉县",
     "141029": "乡宁县",
     "141030": "大宁县",
     "141031": "隰县",
     "141032": "永和县",
     "141033": "蒲县",
     "141034": "汾西县",
     "141081": "侯马City",
     "141082": "霍州City",
     "141100": "吕梁City",
     "141102": "离石District",
     "141121": "文水县",
     "141122": "交城县",
     "141123": "兴县",
     "141124": "临县",
     "141125": "柳林县",
     "141126": "石楼县",
     "141127": "岚县",
     "141128": "方山县",
     "141129": "中阳县",
     "141130": "交口县",
     "141181": "孝义City",
     "141182": "汾阳City",
     "150000": "内蒙古",
     "150100": "呼和浩特City",
     "150102": "新城District",
     "150103": "回民District",
     "150104": "玉泉District",
     "150105": "赛罕District",
     "150121": "土默特左旗",
     "150122": "托克托县",
     "150123": "和林格尔县",
     "150124": "清水河县",
     "150125": "武川县",
     "150172": "呼和浩特经济技术开发District",
     "150200": "包头City",
     "150202": "东河District",
     "150203": "昆都仑District",
     "150204": "青山District",
     "150205": "石拐District",
     "150206": "白云鄂博矿District",
     "150207": "九原District",
     "150221": "土默特右旗",
     "150222": "固阳县",
     "150223": "达尔罕茂明安联合旗",
     "150271": "包头稀土高新技术产业开发District",
     "150300": "乌海City",
     "150302": "海勃湾District",
     "150303": "海南District",
     "150304": "乌达District",
     "150400": "赤峰City",
     "150402": "红山District",
     "150403": "元宝山District",
     "150404": "松山District",
     "150421": "阿鲁科尔沁旗",
     "150422": "巴林左旗",
     "150423": "巴林右旗",
     "150424": "林西县",
     "150425": "克什克腾旗",
     "150426": "翁牛特旗",
     "150428": "喀喇沁旗",
     "150429": "宁城县",
     "150430": "敖汉旗",
     "150500": "通辽City",
     "150502": "科尔沁District",
     "150521": "科尔沁左翼中旗",
     "150522": "科尔沁左翼后旗",
     "150523": "开鲁县",
     "150524": "库伦旗",
     "150525": "奈曼旗",
     "150526": "扎鲁特旗",
     "150571": "通辽经济技术开发District",
     "150581": "霍林郭勒City",
     "150600": "鄂尔多斯City",
     "150602": "东胜District",
     "150603": "康巴什District",
     "150621": "达拉特旗",
     "150622": "准格尔旗",
     "150623": "鄂托克前旗",
     "150624": "鄂托克旗",
     "150625": "杭锦旗",
     "150626": "乌审旗",
     "150627": "伊金霍洛旗",
     "150700": "呼伦贝尔City",
     "150702": "海拉尔District",
     "150703": "扎赉诺尔District",
     "150721": "阿荣旗",
     "150722": "莫力达瓦达斡尔族自治旗",
     "150723": "鄂伦春自治旗",
     "150724": "鄂温克族自治旗",
     "150725": "陈巴尔虎旗",
     "150726": "新巴尔虎左旗",
     "150727": "新巴尔虎右旗",
     "150781": "满洲里City",
     "150782": "牙克石City",
     "150783": "扎兰屯City",
     "150784": "额尔古纳City",
     "150785": "根河City",
     "150800": "巴彦淖尔City",
     "150802": "临河District",
     "150821": "五原县",
     "150822": "磴口县",
     "150823": "乌拉特前旗",
     "150824": "乌拉特中旗",
     "150825": "乌拉特后旗",
     "150826": "杭锦后旗",
     "150900": "乌兰察布City",
     "150902": "集宁District",
     "150921": "卓资县",
     "150922": "化德县",
     "150923": "商都县",
     "150924": "兴和县",
     "150925": "凉城县",
     "150926": "察哈尔右翼前旗",
     "150927": "察哈尔右翼中旗",
     "150928": "察哈尔右翼后旗",
     "150929": "四子王旗",
     "150981": "丰镇City",
     "152200": "兴安盟",
     "152201": "乌兰浩特City",
     "152202": "阿尔山City",
     "152221": "科尔沁右翼前旗",
     "152222": "科尔沁右翼中旗",
     "152223": "扎赉特旗",
     "152224": "突泉县",
     "152500": "锡林郭勒盟",
     "152501": "二连浩特City",
     "152502": "锡林浩特City",
     "152522": "阿巴嘎旗",
     "152523": "苏尼特左旗",
     "152524": "苏尼特右旗",
     "152525": "东乌珠穆沁旗",
     "152526": "西乌珠穆沁旗",
     "152527": "太仆寺旗",
     "152528": "镶黄旗",
     "152529": "正镶白旗",
     "152530": "正蓝旗",
     "152531": "多伦县",
     "152571": "乌拉盖管委会",
     "152900": "阿拉善盟",
     "152921": "阿拉善左旗",
     "152922": "阿拉善右旗",
     "152923": "额济纳旗",
     "152971": "内蒙古阿拉善高新技术产业开发District",
     "210000": "辽宁",
     "210100": "沈阳City",
     "210102": "和平District",
     "210103": "沈河District",
     "210104": "大东District",
     "210105": "皇姑District",
     "210106": "铁西District",
     "210111": "苏家屯District",
     "210112": "浑南District",
     "210113": "沈北新District",
     "210114": "于洪District",
     "210115": "辽中District",
     "210123": "康平县",
     "210124": "法库县",
     "210181": "新民City",
     "210200": "大连City",
     "210202": "中山District",
     "210203": "西岗District",
     "210204": "沙河口District",
     "210211": "甘井子District",
     "210212": "旅顺口District",
     "210213": "金州District",
     "210214": "普兰店District",
     "210224": "长海县",
     "210281": "瓦房店City",
     "210283": "庄河City",
     "210300": "鞍山City",
     "210302": "铁东District",
     "210303": "铁西District",
     "210304": "立山District",
     "210311": "千山District",
     "210321": "台安县",
     "210323": "岫岩满族自治县",
     "210381": "海City",
     "210400": "抚顺City",
     "210402": "新抚District",
     "210403": "东洲District",
     "210404": "望花District",
     "210411": "顺城District",
     "210421": "抚顺县",
     "210422": "新宾满族自治县",
     "210423": "清原满族自治县",
     "210500": "本溪City",
     "210502": "平山District",
     "210503": "溪湖District",
     "210504": "明山District",
     "210505": "南芬District",
     "210521": "本溪满族自治县",
     "210522": "桓仁满族自治县",
     "210600": "丹东City",
     "210602": "元宝District",
     "210603": "振兴District",
     "210604": "振安District",
     "210624": "宽甸满族自治县",
     "210681": "东港City",
     "210682": "凤City",
     "210700": "锦州City",
     "210702": "古塔District",
     "210703": "凌河District",
     "210711": "太和District",
     "210726": "黑山县",
     "210727": "义县",
     "210781": "凌海City",
     "210782": "北镇City",
     "210800": "营口City",
     "210802": "站前District",
     "210803": "西CityDistrict",
     "210804": "鲅鱼圈District",
     "210811": "老边District",
     "210881": "盖州City",
     "210882": "大石桥City",
     "210900": "阜新City",
     "210902": "海州District",
     "210903": "新邱District",
     "210904": "太平District",
     "210905": "清河门District",
     "210911": "细河District",
     "210921": "阜新蒙古族自治县",
     "210922": "彰武县",
     "211000": "辽阳City",
     "211002": "白塔District",
     "211003": "文圣District",
     "211004": "宏伟District",
     "211005": "弓长岭District",
     "211011": "太子河District",
     "211021": "辽阳县",
     "211081": "灯塔City",
     "211100": "盘锦City",
     "211102": "双台子District",
     "211103": "兴隆台District",
     "211104": "大洼District",
     "211122": "盘山县",
     "211200": "铁岭City",
     "211202": "银州District",
     "211204": "清河District",
     "211221": "铁岭县",
     "211223": "西丰县",
     "211224": "昌图县",
     "211281": "调兵山City",
     "211282": "开原City",
     "211300": "朝阳City",
     "211302": "双塔District",
     "211303": "龙城District",
     "211321": "朝阳县",
     "211322": "建平县",
     "211324": "喀喇沁左翼蒙古族自治县",
     "211381": "北票City",
     "211382": "凌源City",
     "211400": "葫芦岛City",
     "211402": "连山District",
     "211403": "龙港District",
     "211404": "南票District",
     "211421": "绥中县",
     "211422": "建昌县",
     "211481": "兴City",
     "220000": "吉林",
     "220100": "长春City",
     "220102": "南关District",
     "220103": "宽城District",
     "220104": "朝阳District",
     "220105": "二道District",
     "220106": "绿园District",
     "220112": "双阳District",
     "220113": "九台District",
     "220122": "农安县",
     "220171": "长春经济技术开发District",
     "220172": "长春净月高新技术产业开发District",
     "220173": "长春高新技术产业开发District",
     "220174": "长春汽车经济技术开发District",
     "220182": "榆树City",
     "220183": "德惠City",
     "220184": "公主岭City",
     "220200": "吉林City",
     "220202": "昌邑District",
     "220203": "龙潭District",
     "220204": "船营District",
     "220211": "丰满District",
     "220221": "永吉县",
     "220271": "吉林经济开发District",
     "220272": "吉林高新技术产业开发District",
     "220273": "吉林中国新加坡食品District",
     "220281": "蛟河City",
     "220282": "桦甸City",
     "220283": "舒兰City",
     "220284": "磐石City",
     "220300": "四平City",
     "220302": "铁西District",
     "220303": "铁东District",
     "220322": "梨树县",
     "220323": "伊通满族自治县",
     "220381": "公主岭City(旧)",
     "220382": "双辽City",
     "220400": "辽源City",
     "220402": "龙山District",
     "220403": "西安District",
     "220421": "东丰县",
     "220422": "东辽县",
     "220500": "通化City",
     "220502": "东昌District",
     "220503": "二道江District",
     "220521": "通化县",
     "220523": "辉南县",
     "220524": "柳河县",
     "220581": "梅河口City",
     "220582": "集安City",
     "220600": "白山City",
     "220602": "浑江District",
     "220605": "江源District",
     "220621": "抚松县",
     "220622": "靖宇县",
     "220623": "长白朝鲜族自治县",
     "220681": "临江City",
     "220700": "松原City",
     "220702": "宁江District",
     "220721": "前郭尔罗斯蒙古族自治县",
     "220722": "长岭县",
     "220723": "乾安县",
     "220771": "吉林松原经济开发District",
     "220781": "扶余City",
     "220800": "白City",
     "220802": "洮北District",
     "220821": "镇赉县",
     "220822": "通榆县",
     "220871": "吉林白城经济开发District",
     "220881": "洮南City",
     "220882": "大安City",
     "222400": "延边朝鲜族自治州",
     "222401": "延吉City",
     "222402": "图们City",
     "222403": "敦化City",
     "222404": "珲春City",
     "222405": "龙井City",
     "222406": "和龙City",
     "222424": "汪清县",
     "222426": "安图县",
     "230000": "黑龙江",
     "230100": "哈尔滨City",
     "230102": "道里District",
     "230103": "南岗District",
     "230104": "道外District",
     "230108": "平房District",
     "230109": "松北District",
     "230110": "香坊District",
     "230111": "呼兰District",
     "230112": "阿城District",
     "230113": "双城District",
     "230123": "依兰县",
     "230124": "方正县",
     "230125": "宾县",
     "230126": "巴彦县",
     "230127": "木兰县",
     "230128": "通河县",
     "230129": "延寿县",
     "230183": "尚志City",
     "230184": "五常City",
     "230200": "齐齐哈尔City",
     "230202": "龙沙District",
     "230203": "建华District",
     "230204": "铁锋District",
     "230205": "昂昂溪District",
     "230206": "富拉尔基District",
     "230207": "碾子山District",
     "230208": "梅里斯达斡尔族District",
     "230221": "龙江县",
     "230223": "依安县",
     "230224": "泰来县",
     "230225": "甘南县",
     "230227": "富裕县",
     "230229": "克山县",
     "230230": "克东县",
     "230231": "拜泉县",
     "230281": "讷河City",
     "230300": "鸡西City",
     "230302": "鸡冠District",
     "230303": "恒山District",
     "230304": "滴道District",
     "230305": "梨树District",
     "230306": "城子河District",
     "230307": "麻山District",
    "230321": "鸡东县",
     "230381": "虎林City",
     "230382": "密山City",
     "230400": "鹤岗City",
     "230402": "向阳District",
     "230403": "工农District",
     "230404": "南山District",
     "230405": "兴安District",
     "230406": "东山District",
     "230407": "兴山District",
     "230421": "萝北县",
     "230422": "绥滨县",
     "230500": "双鸭山City",
     "230502": "尖山District",
     "230503": "岭东District",
     "230505": "四方台District",
     "230506": "宝山District",
     "230521": "集贤县",
     "230522": "友谊县",
     "230523": "宝清县",
     "230524": "饶河县",
     "230600": "大庆City",
     "230602": "萨尔图District",
     "230603": "龙凤District",
     "230604": "让胡路District",
     "230605": "红岗District",
     "230606": "大同District",
     "230621": "肇州县",
     "230622": "肇源县",
     "230623": "林甸县",
     "230624": "杜尔伯特蒙古族自治县",
     "230671": "大庆高新技术产业开发District",
     "230700": "伊春City",
     "230702": "伊春District(旧)",
     "230703": "南岔District(旧)",
     "230704": "友好District(旧)",
     "230705": "西林District(旧)",
     "230706": "翠峦District(旧)",
     "230707": "新青District(旧)",
     "230708": "美溪District(旧)",
     "230709": "金山屯District(旧)",
     "230710": "五营District(旧)",
     "230711": "乌马河District(旧)",
     "230712": "汤旺河District(旧)",
     "230713": "带岭District(旧)",
     "230714": "乌伊岭District(旧)",
     "230715": "红星District(旧)",
     "230716": "上甘岭District(旧)",
     "230717": "伊美District",
     "230718": "乌翠District",
     "230719": "友好District",
     "230722": "嘉荫县",
     "230723": "汤旺县",
     "230724": "丰林县",
     "230725": "大箐山县",
     "230726": "南岔县",
     "230751": "金林District",
     "230781": "铁力City",
     "230800": "佳木斯City",
     "230803": "向阳District",
     "230804": "前进District",
     "230805": "东风District",
     "230811": "郊District",
     "230822": "桦南县",
     "230826": "桦川县",
     "230828": "汤原县",
     "230881": "同江City",
     "230882": "富锦City",
     "230883": "抚远City",
     "230900": "七台河City",
     "230902": "新兴District",
     "230903": "桃山District",
     "230904": "茄子河District",
     "230921": "勃利县",
     "231000": "牡丹江City",
     "231002": "东安District",
     "231003": "阳明District",
     "231004": "爱民District",
     "231005": "西安District",
     "231025": "林口县",
     "231071": "牡丹江经济技术开发District",
     "231081": "绥芬河City",
     "231083": "海林City",
     "231084": "宁安City",
     "231085": "穆棱City",
     "231086": "东宁City",
     "231100": "黑河City",
     "231102": "爱辉District",
     "231121": "嫩江县(旧)",
     "231123": "逊克县",
     "231124": "孙吴县",
     "231181": "北安City",
     "231182": "五大连池City",
     "231183": "嫩江City",
     "231200": "绥化City",
     "231202": "北林District",
     "231221": "望奎县",
     "231222": "兰西县",
     "231223": "青冈县",
     "231224": "庆安县",
     "231225": "明水县",
     "231226": "绥棱县",
     "231281": "安达City",
     "231282": "肇东City",
     "231283": "海伦City",
     "232700": "大兴安岭Region",
     "232701": "漠河City",
     "232721": "呼玛县",
     "232722": "塔河县",
     "232723": "漠河县(旧)",
     "232761": "加格达奇District",
     "232762": "松岭District",
     "232763": "新林District",
     "232764": "呼中District",
     "310000": "上海City",
     "310101": "黄浦District",
     "310104": "徐汇District",
     "310105": "长宁District",
     "310106": "静安District",
     "310107": "普陀District",
     "310109": "虹口District",
     "310110": "杨浦District",
     "310112": "闵行District",
     "310113": "宝山District",
     "310114": "嘉定District",
     "310115": "浦东新District",
     "310116": "金山District",
     "310117": "松江District",
     "310118": "青浦District",
     "310120": "奉贤District",
     "310151": "崇明District",
     "320000": "江苏",
     "320100": "南京City",
     "320102": "玄武District",
     "320104": "秦淮District",
     "320105": "建邺District",
     "320106": "鼓楼District",
     "320111": "浦口District",
     "320113": "栖霞District",
     "320114": "雨花台District",
     "320115": "江宁District",
     "320116": "六合District",
     "320117": "溧水District",
     "320118": "高淳District",
     "320200": "None锡City",
     "320205": "锡山District",
     "320206": "惠山District",
     "320211": "滨湖District",
     "320213": "梁溪District",
     "320214": "新吴District",
     "320281": "江阴City",
     "320282": "宜兴City",
     "320300": "徐州City",
     "320302": "鼓楼District",
     "320303": "云龙District",
     "320305": "贾汪District",
     "320311": "泉山District",
     "320312": "铜山District",
     "320321": "丰县",
     "320322": "沛县",
     "320324": "睢宁县",
     "320371": "徐州经济技术开发District",
     "320381": "新沂City",
     "320382": "邳州City",
     "320400": "常州City",
     "320402": "天宁District",
     "320404": "钟楼District",
     "320411": "新北District",
     "320412": "武进District",
     "320413": "金坛District",
     "320481": "溧阳City",
     "320500": "苏州City",
     "320505": "虎丘District",
     "320506": "吴中District",
     "320507": "相城District",
     "320508": "姑苏District",
     "320509": "吴江District",
     "320571": "苏州工业园District",
     "320581": "常熟City",
     "320582": "张家港City",
     "320583": "昆山City",
     "320585": "太仓City",
     "320600": "南通City",
     "320602": "崇川District(旧)",
     "320611": "港闸District(旧)",
     "320612": "通州District",
     "320613": "崇川District",
     "320614": "海门District",
     "320621": "海安县(旧)",
     "320623": ", such as东县",
     "320671": "南通经济技术开发District",
     "320681": "启东City",
     "320682": ", such as皋City",
     "320684": "海门City(旧)",
     "320685": "海安City",
     "320700": "连云港City",
     "320703": "连云District",
     "320706": "海州District",
     "320707": "赣榆District",
     "320722": "东海县",
     "320723": "灌云县",
     "320724": "灌南县",
     "320771": "连云港经济技术开发District",
     "320772": "连云港高新技术产业开发District",
     "320800": "淮安City",
     "320803": "淮安District",
     "320804": "淮阴District",
     "320812": "清江浦District",
     "320813": "洪泽District",
     "320826": "涟水县",
     "320830": "盱眙县",
     "320831": "金湖县",
     "320871": "淮安经济技术开发District",
     "320900": "盐City",
     "320902": "亭湖District",
     "320903": "盐都District",
     "320904": "大丰District",
     "320921": "响水县",
     "320922": "滨海县",
     "320923": "阜宁县",
     "320924": "射阳县",
     "320925": "建湖县",
     "320971": "盐城经济技术开发District",
     "320981": "东台City",
     "321000": "扬州City",
     "321002": "广陵District",
     "321003": "邗江District",
     "321012": "江都District",
     "321023": "宝应县",
     "321071": "扬州经济技术开发District",
     "321081": "仪征City",
     "321084": "高邮City",
     "321100": "镇江City",
     "321102": "京口District",
     "321111": "润州District",
     "321112": "丹徒District",
     "321171": "镇江新District",
     "321181": "丹阳City",
     "321182": "扬中City",
     "321183": "句容City",
     "321200": "泰州City",
     "321202": "海陵District",
     "321203": "高港District",
     "321204": "姜堰District",
     "321271": "泰州医药高新技术产业开发District",
     "321281": "兴化City",
     "321282": "靖江City",
     "321283": "泰兴City",
     "321300": "宿迁City",
     "321302": "宿城District",
     "321311": "宿豫District",
     "321322": "沭阳县",
     "321323": "泗阳县",
     "321324": "泗洪县",
     "321371": "宿迁经济技术开发District",
     "330000": "浙江",
     "330100": "杭州City",
     "330102": "上城District",
     "330103": "下城District(旧)",
     "330104": "江干District(旧)",
     "330105": "拱墅District",
     "330106": "西湖District",
     "330108": "滨江District",
     "330109": "萧山District",
     "330110": "余杭District",
     "330111": "富阳District",
     "330112": "临安District",
     "330113": "临平District",
     "330114": "钱塘District",
     "330122": "桐庐县",
     "330127": "淳安县",
     "330182": "建德City",
     "330185": "临安City(旧)",
     "330200": "宁波City",
     "330203": "海曙District",
     "330205": "江北District",
     "330206": "北仑District",
     "330211": "镇海District",
     "330212": "鄞州District",
     "330213": "奉化District",
     "330225": "象山县",
     "330226": "宁海县",
     "330281": "余姚City",
     "330282": "慈溪City",
     "330300": "温州City",
     "330302": "鹿城District",
     "330303": "龙湾District",
     "330304": "瓯海District",
     "330305": "洞头District",
     "330324": "永嘉县",
     "330326": "平阳县",
     "330327": "苍南县",
     "330328": "文成县",
     "330329": "泰顺县",
     "330371": "温州经济技术开发District",
     "330381": "瑞安City",
     "330382": "乐清City",
     "330383": "龙港City",
     "330400": "嘉兴City",
     "330402": "南湖District",
     "330411": "秀洲District",
     "330421": "嘉善县",
     "330424": "海盐县",
     "330481": "海宁City",
     "330482": "平湖City",
     "330483": "桐乡City",
     "330500": "湖州City",
     "330502": "吴兴District",
     "330503": "南浔District",
     "330521": "德清县",
     "330522": "长兴县",
     "330523": "安吉县",
     "330600": "绍兴City",
     "330602": "越城District",
     "330603": "柯桥District",
     "330604": "上虞District",
     "330624": "新昌县",
     "330681": "诸暨City",
     "330683": "嵊州City",
     "330700": "金华City",
     "330702": "婺城District",
     "330703": "金东District",
     "330723": "武义县",
     "330726": "浦江县",
     "330727": "磐安县",
     "330781": "兰溪City",
     "330782": "义乌City",
     "330783": "东阳City",
     "330784": "永康City",
     "330800": "衢州City",
     "330802": "柯城District",
     "330803": "衢江District",
     "330822": "常山县",
     "330824": "开化县",
     "330825": "龙游县",
     "330881": "江山City",
     "330900": "舟山City",
     "330902": "定海District",
     "330903": "普陀District",
     "330921": "岱山县",
     "330922": "嵊泗县",
     "331000": "台州City",
     "331002": "椒江District",
     "331003": "黄岩District",
     "331004": "路桥District",
     "331021": "玉环县(旧)",
     "331022": "三门县",
     "331023": "天台县",
     "331024": "仙居县",
     "331081": "温岭City",
     "331082": "临海City",
     "331083": "玉环City",
     "331100": "丽水City",
     "331102": "莲都District",
     "331121": "青田县",
     "331122": "缙云县",
     "331123": "遂昌县",
     "331124": "松阳县",
     "331125": "云和县",
     "331126": "庆元县",
     "331127": "景宁畲族自治县",
     "331181": "龙泉City",
     "340000": "安徽",
     "340100": "合肥City",
     "340102": "瑶海District",
     "340103": "庐阳District",
     "340104": "蜀山District",
     "340111": "包河District",
     "340121": "长丰县",
     "340122": "肥东县",
     "340123": "肥西县",
     "340124": "庐江县",
     "340171": "合肥高新技术产业开发District",
     "340172": "合肥经济技术开发District",
     "340173": "合肥新站高新技术产业开发District",
     "340181": "巢湖City",
     "340200": "芜湖City",
     "340202": "镜湖District",
     "340203": "弋江District(旧)",
     "340207": "鸠江District",
     "340208": "三山District(旧)",
     "340209": "弋江District",
     "340210": "湾沚District",
     "340212": "繁昌District",
     "340221": "芜湖县(旧)",
     "340222": "繁昌县(旧)",
     "340223": "南陵县",
     "340225": "None为县(旧)",
     "340271": "芜湖经济技术开发District",
     "340272": "安徽芜湖三山经济开发District",
     "340281": "None为City",
     "340300": "蚌埠City",
     "340302": "龙子湖District",
     "340303": "蚌山District",
     "340304": "禹会District",
     "340311": "淮上District",
     "340321": "怀远县",
     "340322": "五河县",
     "340323": "固镇县",
     "340371": "蚌埠City高新技术开发District",
     "340372": "蚌埠City经济开发District",
     "340400": "淮南City",
     "340402": "大通District",
     "340403": "田家庵District",
     "340404": "谢家集District",
     "340405": "八公山District",
     "340406": "潘集District",
     "340421": "凤台县",
     "340422": "寿县",
     "340500": "马鞍山City",
     "340503": "花山District",
     "340504": "雨山District",
     "340506": "博望District",
     "340521": "当涂县",
     "340522": "含山县",
     "340523": "和县",
     "340600": "淮北City",
     "340602": "杜集District",
     "340603": "相山District",
     "340604": "烈山District",
     "340621": "濉溪县",
     "340700": "铜陵City",
     "340705": "铜官District",
     "340706": "义安District",
     "340711": "郊District",
     "340722": "枞阳县",
     "340800": "安庆City",
     "340802": "迎江District",
     "340803": "大观District",
     "340811": "宜秀District",
     "340822": "怀宁县",
     "340824": "潜山县(旧)",
     "340825": "太湖县",
     "340826": "宿松县",
     "340827": "望江县",
     "340828": "岳西县",
     "340871": "安徽安庆经济开发District",
     "340881": "桐City",
     "340882": "潜山City",
     "341000": "黄山City",
     "341002": "屯溪District",
     "341003": "黄山District",
     "341004": "徽州District",
     "341021": "歙县",
     "341022": "休宁县",
     "341023": "黟县",
     "341024": "祁门县",
     "341100": "滁州City",
     "341102": "琅琊District",
     "341103": "南谯District",
     "341122": "来安县",
     "341124": "全椒县",
     "341125": "定远县",
     "341126": "凤阳县",
     "341171": "中新苏滁高新技术产业开发District",
     "341172": "滁州经济技术开发District",
     "341181": "天长City",
     "341182": "明光City",
     "341200": "阜阳City",
     "341202": "颍州District",
     "341203": "颍东District",
     "341204": "颍泉District",
     "341221": "临泉县",
     "341222": "太和县",
     "341225": "阜南县",
     "341226": "颍上县",
     "341271": "阜阳合肥现代产业园District",
     "341272": "阜阳经济技术开发District",
     "341282": "界首City",
     "341300": "宿州City",
     "341302": "埇桥District",
     "341321": "砀山县",
     "341322": "萧县",
     "341323": "灵璧县",
     "341324": "泗县",
     "341371": "宿州马鞍山现代产业园District",
     "341372": "宿州经济技术开发District",
     "341500": "六安City",
     "341502": "金安District",
     "341503": "裕安District",
     "341504": "叶集District",
     "341522": "霍邱县",
     "341523": "舒城县",
     "341524": "金寨县",
     "341525": "霍山县",
     "341600": "亳州City",
     "341602": "谯城District",
     "341621": "涡阳县",
     "341622": "蒙城县",
     "341623": "利辛县",
     "341700": "池州City",
     "341702": "贵池District",
     "341721": "东至县",
     "341722": "石台县",
     "341723": "青阳县",
     "341800": "宣City",
     "341802": "宣州District",
     "341821": "郎溪县",
     "341822": "广德县(旧)",
     "341823": "泾县",
     "341824": "绩溪县",
     "341825": "旌德县",
     "341871": "宣City经济开发District",
     "341881": "宁国City",
     "341882": "广德City",
     "350000": "福建",
     "350100": "福州City",
     "350102": "鼓楼District",
     "350103": "台江District",
     "350104": "仓山District",
     "350105": "马尾District",
     "350111": "晋安District",
     "350112": "长乐District",
     "350121": "闽侯县",
     "350122": "连江县",
     "350123": "罗源县",
     "350124": "闽清县",
     "350125": "永泰县",
     "350128": "平潭县",
     "350181": "福清City",
     "350182": "长乐City(旧)",
     "350200": "厦门City",
     "350203": "思明District",
     "350205": "海沧District",
     "350206": "湖里District",
     "350211": "集美District",
     "350212": "同安District",
     "350213": "翔安District",
     "350300": "莆田City",
     "350302": "城厢District",
     "350303": "涵江District",
     "350304": "荔城District",
     "350305": "秀屿District",
     "350322": "仙游县",
     "350400": "三明City",
     "350402": "梅列District(旧)",
     "350403": "三元District(旧)",
     "350404": "三元District",
     "350405": "沙Province",
     "350421": "明溪县",
     "350423": "清流县",
     "350424": "宁化县",
     "350425": "大田县",
     "350426": "尤溪县",
     "350427": "沙县(旧)",
     "350428": "将乐县",
     "350429": "泰宁县",
     "350430": "建宁县",
     "350481": "永安City",
     "350500": "泉州City",
     "350502": "鲤城District",
     "350503": "丰泽District",
     "350504": "洛江District",
     "350505": "泉港District",
     "350521": "惠安县",
     "350524": "安溪县",
     "350525": "永春县",
     "350526": "德化县",
     "350527": "金门县",
     "350581": "石狮City",
     "350582": "晋江City",
     "350583": "南安City",
     "350600": "漳州City",
     "350602": "芗城District",
     "350603": "龙文District",
     "350604": "龙海District",
     "350605": "长泰District",
     "350622": "云霄县",
     "350623": "漳浦县",
     "350624": "诏安县",
     "350625": "长泰县(旧)",
     "350626": "东山县",
     "350627": "南靖县",
     "350628": "平和县",
     "350629": "华安县",
     "350681": "龙海City(旧)",
     "350700": "南平City",
     "350702": "延平District",
     "350703": "建阳District",
     "350721": "顺昌县",
     "350722": "浦城县",
     "350723": "光泽县",
     "350724": "松溪县",
     "350725": "政和县",
     "350781": "邵武City",
     "350782": "武夷山City",
     "350783": "建瓯City",
     "350800": "龙岩City",
     "350802": "新罗District",
     "350803": "永定District",
     "350821": "长汀县",
     "350823": "上杭县",
     "350824": "武平县",
     "350825": "连城县",
     "350881": "漳平City",
     "350900": "宁德City",
     "350902": "蕉城District",
     "350921": "霞浦县",
     "350922": "古田县",
     "350923": "屏南县",
     "350924": "寿宁县",
     "350925": "周宁县",
     "350926": "柘荣县",
     "350981": "福安City",
     "350982": "福鼎City",
     "360000": "江西",
     "360100": "南昌City",
     "360102": "东湖District",
     "360103": "西湖District",
     "360104": "青云谱District",
     "360105": "湾里District(旧)",
     "360111": "青山湖District",
     "360112": "新建District",
     "360113": "红谷滩District",
     "360121": "南昌县",
     "360123": "安义县",
     "360124": "进贤县",
     "360200": "景德镇City",
     "360202": "昌江District",
     "360203": "珠山District",
     "360222": "浮梁县",
     "360281": "乐平City",
     "360300": "萍乡City",
     "360302": "安源District",
     "360313": "湘东District",
     "360321": "莲花县",
     "360322": "上栗县",
     "360323": "芦溪县",
     "360400": "九江City",
     "360402": "濂溪District",
     "360403": "浔阳District",
     "360404": "柴桑District",
     "360421": "九江县(旧)",
     "360423": "武宁县",
     "360424": "修水县",
     "360425": "永修县",
     "360426": "德安县",
     "360427": "庐山City(旧)",
     "360428": "都昌县",
     "360429": "湖口县",
     "360430": "彭泽县",
     "360481": "瑞昌City",
     "360482": "共青City",
     "360483": "庐山City",
     "360500": "新余City",
     "360502": "渝水District",
     "360521": "分宜县",
     "360600": "鹰潭City",
     "360602": "月湖District",
     "360603": "余江District",
     "360622": "余江县(旧)",
     "360681": "贵溪City",
     "360700": "赣州City",
     "360702": "章贡District",
     "360703": "南康District",
     "360704": "赣Province",
     "360721": "赣Province(旧)",
     "360722": "信丰县",
     "360723": "大余县",
     "360724": "上犹县",
     "360725": "崇义县",
     "360726": "安远县",
     "360727": "龙南县(旧)",
     "360728": "定南县",
     "360729": "全南县",
     "360730": "宁都县",
     "360731": "于都县",
     "360732": "兴国县",
     "360733": "会昌县",
     "360734": "寻乌县",
     "360735": "石城县",
     "360781": "瑞金City",
     "360783": "龙南City",
     "360800": "吉安City",
     "360802": "吉州District",
     "360803": "青原District",
     "360821": "吉安县",
     "360822": "吉水县",
     "360823": "峡江县",
     "360824": "新干县",
     "360825": "永丰县",
     "360826": "泰和县",
     "360827": "遂川县",
     "360828": "万安县",
     "360829": "安福县",
     "360830": "永新县",
     "360881": "井冈山City",
     "360900": "宜春City",
     "360902": "袁州District",
     "360921": "奉新县",
     "360922": "万载县",
     "360923": "上高县",
     "360924": "宜丰县",
     "360925": "靖安县",
     "360926": "铜鼓县",
     "360981": "丰City",
     "360982": "樟树City",
     "360983": "高安City",
     "361000": "抚州City",
     "361002": "临川District",
     "361003": "东乡District",
     "361021": "南城县",
     "361022": "黎川县",
     "361023": "南丰县",
     "361024": "崇仁县",
     "361025": "乐安县",
     "361026": "宜黄县",
     "361027": "金溪县",
     "361028": "资溪县",
     "361029": "东乡District(旧)",
     "361030": "广昌县",
     "361100": "上饶City",
     "361102": "信州District",
     "361103": "广丰District",
     "361104": "广信District",
     "361121": "上饶县(旧)",
     "361123": "玉山县",
     "361124": "铅山县",
     "361125": "横峰县",
     "361126": "弋阳县",
     "361127": "余干县",
     "361128": "鄱阳县",
     "361129": "万年县",
     "361130": "婺源县",
     "361181": "德兴City",
     "370000": "山东",
     "370100": "济南City",
     "370102": "历下District",
     "370103": "City中District",
     "370104": "槐荫District",
     "370105": "天桥District",
     "370112": "历城District",
     "370113": "长清District",
     "370114": "章丘District",
     "370115": "济阳District",
     "370116": "莱芜District",
     "370117": "钢城District",
     "370124": "平阴县",
     "370125": "济阳县(旧)",
     "370126": "商河县",
     "370171": "济南高新技术产业开发District",
     "370181": "章丘District(旧)",
     "370200": "青岛City",
     "370202": "City南District",
     "370203": "City北District",
     "370211": "黄岛District",
     "370212": "崂山District",
     "370213": "李沧District",
     "370214": "城阳District",
     "370215": "即墨District",
     "370271": "青岛高新技术产业开发District",
     "370281": "胶州City",
     "370282": "即墨City(旧)",
     "370283": "平度City",
     "370285": "莱西City",
     "370300": "淄博City",
     "370302": "淄川District",
     "370303": "张店District",
     "370304": "博山District",
     "370305": "临淄District",
     "370306": "周村District",
     "370321": "桓台县",
     "370322": "高青县",
     "370323": "沂源县",
     "370400": "枣庄City",
     "370402": "City中District",
     "370403": "薛城District",
     "370404": "峄城District",
     "370405": "台儿庄District",
     "370406": "山亭District",
     "370481": "滕州City",
     "370500": "东营City",
     "370502": "东营District",
     "370503": "河口District",
     "370505": "垦利District",
     "370522": "利津县",
     "370523": "广饶县",
     "370571": "东营经济技术开发District",
     "370572": "东营港经济开发District",
     "370600": "烟台City",
     "370602": "芝罘District",
     "370611": "福山District",
     "370612": "牟平District",
     "370613": "莱山District",
     "370614": "蓬莱District",
     "370634": "长岛县(旧)",
     "370671": "烟台高新技术产业开发District",
     "370672": "烟台经济技术开发District",
     "370681": "龙口City",
     "370682": "莱阳City",
     "370683": "莱州City",
     "370684": "蓬莱City(旧)",
     "370685": "招远City",
     "370686": "栖霞City",
     "370687": "海阳City",
     "370700": "潍坊City",
     "370702": "潍城District",
     "370703": "寒亭District",
     "370704": "坊子District",
     "370705": "奎文District",
     "370724": "临朐县",
     "370725": "昌乐县",
     "370772": "潍坊滨海经济技术开发District",
     "370781": "青州City",
     "370782": "诸City",
     "370783": "寿光City",
     "370784": "安丘City",
     "370785": "高密City",
     "370786": "昌邑City",
     "370800": "济宁City",
     "370811": "任城District",
     "370812": "兖州District",
     "370826": "微山县",
     "370827": "鱼台县",
     "370828": "金乡县",
     "370829": "嘉祥县",
     "370830": "汶上县",
     "370831": "泗水县",
     "370832": "梁山县",
     "370871": "济宁高新技术产业开发District",
     "370881": "曲阜City",
     "370883": "邹City",
     "370900": "泰安City",
     "370902": "泰山District",
     "370911": "岱岳District",
     "370921": "宁阳县",
     "370923": "东平县",
     "370982": "新泰City",
     "370983": "肥City",
     "371000": "威海City",
     "371002": "环翠District",
     "371003": "文登District",
     "371071": "威海火炬高技术产业开发District",
     "371072": "威海经济技术开发District",
     "371073": "威海临港经济技术开发District",
     "371082": "荣成City",
     "371083": "乳山City",
     "371100": "日照City",
     "371102": "东港District",
     "371103": "岚山District",
     "371121": "五莲县",
     "371122": "莒县",
     "371171": "日照经济技术开发District",
     "371200": "莱芜City(旧)",
     "371202": "莱城District(旧)",
     "371203": "钢城District(旧)",
     "371300": "临沂City",
     "371302": "兰山District",
     "371311": "罗庄District",
     "371312": "河东District",
     "371321": "沂南县",
     "371322": "郯城县",
     "371323": "沂水县",
     "371324": "兰陵县",
     "371325": "费县",
     "371326": "平邑县",
     "371327": "莒南县",
     "371328": "蒙阴县",
     "371329": "临沭县",
     "371371": "临沂高新技术产业开发District",
     "371400": "德州City",
     "371402": "德城District",
     "371403": "陵城District",
     "371422": "宁津县",
     "371423": "庆云县",
     "371424": "临邑县",
     "371425": "齐河县",
     "371426": "平原县",
     "371427": "夏津县",
     "371428": "武城县",
     "371471": "德州经济技术开发District",
     "371472": "德州运河经济开发District",
     "371481": "乐陵City",
     "371482": "禹City",
     "371500": "聊City",
     "371502": "东昌府District",
     "371503": "茌平District",
     "371521": "阳谷县",
     "371522": "莘县",
     "371523": "茌平县(旧)",
     "371524": "东阿县",
     "371525": "冠县",
     "371526": "高唐县",
     "371581": "临清City",
     "371600": "滨州City",
     "371602": "滨城District",
     "371603": "沾化District",
     "371621": "惠民县",
     "371622": "阳信县",
     "371623": "None棣县",
     "371625": "博兴县",
     "371626": "邹平县(旧)",
     "371681": "邹平City",
     "371700": "菏泽City",
     "371702": "牡丹District",
     "371703": "定陶District",
     "371721": "曹县",
     "371722": "单县",
     "371723": "成武县",
     "371724": "巨野县",
     "371725": "郓城县",
     "371726": "鄄城县",
     "371728": "东明县",
     "371771": "菏泽经济技术开发District",
     "371772": "菏泽高新技术开发District",
     "410000": "河南",
     "410100": "郑州City",
     "410102": "中原District",
     "410103": "二七District",
     "410104": "管城回族District",
     "410105": "金水District",
     "410106": "上街District",
     "410108": "惠济District",
     "410122": "中牟县",
     "410171": "郑州经济技术开发District",
     "410172": "郑州高新技术产业开发District",
     "410173": "郑州航空港经济综合实验District",
     "410181": "巩义City",
     "410182": "荥阳City",
     "410183": "新密City",
     "410184": "新郑City",
     "410185": "登封City",
     "410186": "郑东新District(旧)",
     "410200": "开封City",
     "410202": "龙亭District",
     "410203": "顺河回族District",
     "410204": "鼓楼District",
     "410205": "禹王台District",
     "410212": "祥符District",
     "410221": "杞县",
     "410222": "通许县",
     "410223": "尉氏县",
     "410225": "兰考县",
     "410300": "洛阳City",
     "410302": "老城District",
     "410303": "西工District",
     "410304": "瀍河回族District",
     "410305": "涧西District",
     "410306": "吉利District(旧)",
     "410307": "偃师District",
     "410308": "孟津District",
     "410311": "洛龙District",
     "410322": "孟津县(旧)",
     "410323": "新安县",
     "410324": "栾川县",
     "410325": "嵩县",
     "410326": "汝阳县",
     "410327": "宜阳县",
     "410328": "洛宁县",
     "410329": "伊川县",
     "410371": "洛阳高新技术产业开发District",
     "410381": "偃师City(旧)",
     "410400": "平顶山City",
     "410402": "新华District",
     "410403": "卫东District",
     "410404": "石龙District",
     "410411": "湛河District",
     "410421": "宝丰县",
     "410422": "叶县",
     "410423": "鲁山县",
     "410425": "郏县",
     "410471": "平顶山高新技术产业开发District",
     "410472": "平顶山City城乡一体化示范District",
     "410481": "舞钢City",
     "410482": "汝州City",
     "410500": "安阳City",
     "410502": "文峰District",
     "410503": "北关District",
     "410505": "殷都District",
     "410506": "龙安District",
     "410522": "安阳县",
     "410523": "汤阴县",
     "410526": "滑县",
     "410527": "内黄县",
     "410571": "安阳高新技术产业开发District",
     "410581": "林州City",
     "410600": "鹤壁City",
     "410602": "鹤山District",
     "410603": "山城District",
     "410611": "淇滨District",
     "410621": "浚县",
     "410622": "淇县",
     "410671": "鹤壁经济技术开发District",
     "410700": "新乡City",
     "410702": "红旗District",
     "410703": "卫滨District",
     "410704": "凤泉District",
     "410711": "牧野District",
     "410721": "新乡县",
     "410724": "获嘉县",
     "410725": "原阳县",
     "410726": "延津县",
     "410727": "封丘县",
     "410728": "长垣县(旧)",
     "410771": "新乡高新技术产业开发District",
     "410772": "新乡经济技术开发District",
     "410773": "新乡City平原城乡一体化示范District",
     "410781": "卫辉City",
     "410782": "辉县City",
     "410783": "长垣City",
     "410800": "焦作City",
     "410802": "解放District",
     "410803": "中站District",
     "410804": "马村District",
     "410811": "山阳District",
     "410821": "修武县",
     "410822": "博爱县",
     "410823": "武陟县",
     "410825": "温县",
     "410871": "焦作城乡一体化示范District",
     "410882": "沁阳City",
     "410883": "孟州City",
     "410900": "濮阳City",
     "410902": "华龙District",
     "410922": "清丰县",
     "410923": "南乐县",
     "410926": "范县",
     "410927": "台前县",
     "410928": "濮阳县",
     "410971": "河南濮阳工业园District",
     "410972": "濮阳经济技术开发District",
     "411000": "许昌City",
     "411002": "魏都District",
     "411003": "建安District",
     "411023": "许昌县(旧)",
     "411024": "鄢陵县",
     "411025": "襄城县",
     "411071": "许昌经济技术开发District",
     "411081": "禹州City",
     "411082": "长葛City",
     "411100": "漯河City",
     "411102": "源汇District",
     "411103": "郾城District",
     "411104": "召陵District",
     "411121": "舞阳县",
     "411122": "临颍县",
     "411171": "漯河经济技术开发District",
     "411200": "三门峡City",
     "411202": "湖滨District",
     "411203": "陕州District",
     "411221": "渑池县",
     "411224": "卢氏县",
     "411271": "河南三门峡经济开发District",
     "411281": "义马City",
     "411282": "灵宝City",
     "411300": "南阳City",
     "411302": "宛城District",
     "411303": "卧龙District",
     "411321": "南召县",
     "411322": "方城县",
     "411323": "西峡县",
     "411324": "镇平县",
     "411325": "内乡县",
     "411326": "淅川县",
     "411327": "社旗县",
     "411328": "唐河县",
     "411329": "新野县",
     "411330": "桐柏县",
     "411371": "南阳高新技术产业开发District",
     "411372": "南阳City城乡一体化示范District",
     "411381": "邓州City",
     "411400": "商丘City",
     "411402": "梁园District",
     "411403": "睢阳District",
     "411421": "民权县",
     "411422": "睢县",
     "411423": "宁陵县",
     "411424": "柘城县",
     "411425": "虞城县",
     "411426": "夏邑县",
     "411471": "豫东综合物流产业聚集District",
     "411472": "河南商丘经济开发District",
     "411481": "永City",
     "411500": "信阳City",
     "411502": "浉河District",
     "411503": "平桥District",
     "411521": "罗山县",
     "411522": "光山县",
     "411523": "新县",
     "411524": "商城县",
     "411525": "固始县",
     "411526": "潢川县",
     "411527": "淮滨县",
     "411528": "息县",
     "411571": "信阳高新技术产业开发District",
     "411600": "周口City",
     "411602": "川汇District",
     "411603": "淮阳District",
     "411621": "扶沟县",
     "411622": "西华县",
     "411623": "商水县",
     "411624": "沈丘县",
     "411625": "郸城县",
     "411626": "淮阳县(旧)",
     "411627": "太康县",
     "411628": "鹿邑县",
     "411671": "河南周口经济开发District",
     "411681": "项City",
     "411700": "驻马店City",
     "411702": "驿城District",
     "411721": "西平县",
     "411722": "上蔡县",
     "411723": "平舆县",
     "411724": "正阳县",
     "411725": "确山县",
     "411726": "泌阳县",
     "411727": "汝南县",
     "411728": "遂平县",
     "411729": "新蔡县",
     "411771": "河南驻马店经济开发District",
     "419001": "济源City",
     "420000": "湖北",
     "420100": "武汉City",
     "420102": "江岸District",
     "420103": "江汉District",
     "420104": "硚口District",
     "420105": "汉阳District",
     "420106": "武昌District",
     "420107": "青山District",
     "420111": "洪山District",
     "420112": "东西湖District",
     "420113": "汉南District",
     "420114": "蔡甸District",
     "420115": "江夏District",
     "420116": "黄陂District",
     "420117": "新洲District",
     "420200": "黄石City",
     "420202": "黄石港District",
     "420203": "西塞山District",
     "420204": "下陆District",
     "420205": "铁山District",
     "420222": "阳新县",
     "420281": "大冶City",
     "420300": "十堰City",
     "420302": "茅箭District",
     "420303": "张湾District",
     "420304": "郧阳District",
     "420322": "郧西县",
     "420323": "竹山县",
     "420324": "竹溪县",
     "420325": "房县",
     "420381": "丹江口City",
     "420500": "宜昌City",
     "420502": "西陵District",
     "420503": "伍家岗District",
     "420504": "点军District",
     "420505": "猇亭District",
     "420506": "夷陵District",
     "420525": "远安县",
     "420526": "兴山县",
     "420527": "秭归县",
     "420528": "长阳土家族自治县",
     "420529": "五峰土家族自治县",
     "420581": "宜都City",
     "420582": "当阳City",
     "420583": "枝江City",
     "420600": "襄阳City",
     "420602": "襄城District",
     "420606": "樊城District",
     "420607": "襄州District",
     "420624": "南漳县",
     "420625": "谷城县",
     "420626": "保康县",
     "420682": "老河口City",
     "420683": "枣阳City",
     "420684": "宜City",
     "420700": "鄂州City",
     "420702": "梁子湖District",
     "420703": "华容District",
     "420704": "鄂城District",
     "420800": "荆门City",
     "420802": "东宝District",
     "420804": "掇刀District",
     "420821": "京山县(旧)",
     "420822": "沙洋县",
     "420881": "钟祥City",
     "420882": "京山City",
     "420900": "孝感City",
     "420902": "孝南District",
     "420921": "孝昌县",
     "420922": "大悟县",
     "420923": "云梦县",
     "420981": "应City",
     "420982": "安陆City",
     "420984": "汉川City",
     "421000": "荆州City",
     "421002": "沙CityDistrict",
     "421003": "荆州District",
     "421022": "公安县",
     "421023": "监利县(旧)",
     "421024": "江陵县",
     "421071": "荆州经济技术开发District",
     "421081": "石首City",
     "421083": "洪湖City",
     "421087": "松滋City",
     "421088": "监利City",
     "421100": "黄冈City",
     "421102": "黄州District",
     "421121": "团风县",
     "421122": "红安县",
     "421123": "罗田县",
     "421124": "英山县",
     "421125": "浠水县",
     "421126": "蕲春县",
     "421127": "黄梅县",
     "421171": "龙感湖管理District",
     "421181": "麻City",
     "421182": "武穴City",
     "421200": "咸宁City",
     "421202": "咸安District",
     "421221": "嘉鱼县",
     "421222": "通城县",
     "421223": "崇阳县",
     "421224": "通山县",
     "421281": "赤壁City",
     "421300": "随州City",
     "421303": "曾都District",
     "421321": "随县",
     "421381": "广水City",
     "422800": "恩施土家族苗族自治州",
     "422801": "恩施City",
     "422802": "利川City",
     "422822": "建始县",
     "422823": "巴东县",
     "422825": "宣恩县",
     "422826": "咸丰县",
     "422827": "来凤县",
     "422828": "鹤峰县",
     "429004": "仙桃City",
     "429005": "潜江City",
     "429006": "天门City",
     "429021": "神农架林District",
     "430000": "湖南",
     "430100": "长沙City",
     "430102": "芙蓉District",
     "430103": "天心District",
     "430104": "岳麓District",
     "430105": "开福District",
     "430111": "雨花District",
     "430112": "望城District",
     "430121": "长沙县",
     "430124": "宁乡县(旧)",
     "430181": "浏阳City",
     "430182": "宁乡City",
     "430200": "株洲City",
     "430202": "荷塘District",
     "430203": "芦淞District",
     "430204": "石峰District",
     "430211": "天元District",
     "430212": "渌口District",
     "430221": "株洲县(旧)",
     "430223": "攸县",
     "430224": "茶陵县",
     "430225": "炎陵县",
     "430271": "云龙示范District",
     "430281": "醴陵City",
     "430300": "湘潭City",
     "430302": "雨湖District",
     "430304": "岳塘District",
     "430321": "湘潭县",
     "430371": "湖南湘潭高新技术产业园District",
     "430372": "湘潭昭山示范District",
     "430373": "湘潭九华示范District",
     "430381": "湘乡City",
     "430382": "韶山City",
     "430400": "衡阳City",
     "430405": "珠晖District",
     "430406": "雁峰District",
     "430407": "石鼓District",
     "430408": "蒸湘District",
     "430412": "南岳District",
     "430421": "衡阳县",
     "430422": "衡南县",
     "430423": "衡山县",
     "430424": "衡东县",
     "430426": "祁东县",
     "430471": "衡阳综合保税District",
     "430472": "湖南衡阳高新技术产业园District",
     "430473": "湖南衡阳松木经济开发District",
     "430481": "耒阳City",
     "430482": "常宁City",
     "430500": "邵阳City",
     "430502": "双清District",
     "430503": "大祥District",
     "430511": "北塔District",
     "430521": "邵东县(旧)",
     "430522": "新邵县",
     "430523": "邵阳县",
     "430524": "隆回县",
     "430525": "洞口县",
     "430527": "绥宁县",
     "430528": "新宁县",
     "430529": "城步苗族自治县",
     "430581": "武冈City",
     "430582": "邵东City",
     "430600": "岳阳City",
     "430602": "岳阳楼District",
     "430603": "云溪District",
     "430611": "君山District",
     "430621": "岳阳县",
     "430623": "华容县",
     "430624": "湘阴县",
     "430626": "平江县",
     "430671": "岳阳City屈原管理District",
     "430681": "汨罗City",
     "430682": "临湘City",
     "430700": "常德City",
     "430702": "武陵District",
     "430703": "鼎城District",
     "430721": "安乡县",
     "430722": "汉寿县",
     "430723": "澧县",
     "430724": "临澧县",
     "430725": "桃源县",
     "430726": "石门县",
     "430771": "常德City西洞庭管理District",
     "430781": "津CityCity",
     "430800": "张家界City",
     "430802": "永定District",
     "430811": "武陵源District",
     "430821": "慈利县",
     "430822": "桑植县",
     "430900": "益阳City",
     "430902": "资阳District",
     "430903": "赫山District",
     "430921": "南县",
     "430922": "桃江县",
     "430923": "安化县",
     "430971": "益阳City大通湖管理District",
     "430972": "湖南益阳高新技术产业园District",
     "430981": "沅江City",
     "431000": "郴州City",
     "431002": "北湖District",
     "431003": "苏仙District",
     "431021": "桂阳县",
     "431022": "宜章县",
     "431023": "永兴县",
     "431024": "嘉禾县",
     "431025": "临武县",
     "431026": "汝城县",
     "431027": "桂东县",
     "431028": "安仁县",
     "431081": "资兴City",
     "431100": "永州City",
     "431102": "零陵District",
     "431103": "冷水滩District",
     "431121": "祁阳县(旧)",
     "431122": "东安县",
     "431123": "双牌县",
     "431124": "道县",
     "431125": "江永县",
     "431126": "宁远县",
     "431127": "蓝山县",
     "431128": "新田县",
     "431129": "江华瑶族自治县",
     "431171": "永州经济技术开发District",
     "431173": "永州City回龙圩管理District",
     "431181": "祁阳City",
     "431200": "怀化City",
     "431202": "鹤城District",
     "431221": "中方县",
     "431222": "沅陵县",
     "431223": "辰溪县",
     "431224": "溆浦县",
     "431225": "会同县",
     "431226": "麻阳苗族自治县",
     "431227": "新晃侗族自治县",
     "431228": "芷江侗族自治县",
     "431229": "靖州苗族侗族自治县",
     "431230": "通道侗族自治县",
     "431271": "怀化City洪江管理District",
     "431281": "洪江City",
     "431300": "娄底City",
     "431302": "娄星District",
     "431321": "双峰县",
     "431322": "新化县",
     "431381": "冷水江City",
     "431382": "涟源City",
     "433100": "湘西土家族苗族自治州",
     "433101": "吉首City",
     "433122": "泸溪县",
     "433123": "凤凰县",
     "433124": "花垣县",
     "433125": "保靖县",
     "433126": "古丈县",
     "433127": "永顺县",
     "433130": "龙山县",
     "440000": "广东",
     "440100": "广州City",
     "440103": "荔湾District",
     "440104": "越秀District",
     "440105": "海珠District",
     "440106": "天河District",
     "440111": "白云District",
     "440112": "黄埔District",
     "440113": "番禺District",
     "440114": "花都District",
     "440115": "南沙District",
     "440117": "从化District",
     "440118": "增城District",
     "440200": "韶关City",
     "440203": "武江District",
     "440204": "浈江District",
     "440205": "曲江District",
     "440222": "始兴县",
     "440224": "仁化县",
     "440229": "翁源县",
     "440232": "乳源瑶族自治县",
     "440233": "新丰县",
     "440281": "乐昌City",
     "440282": "南雄City",
     "440300": "深圳City",
     "440303": "罗湖District",
     "440304": "福田District",
     "440305": "南山District",
     "440306": "宝安District",
     "440307": "龙岗District",
     "440308": "盐田District",
     "440309": "龙华District",
     "440310": "坪山District",
     "440311": "光明District",
     "440400": "珠海City",
     "440402": "香洲District",
     "440403": "斗门District",
     "440404": "金湾District",
     "440500": "汕头City",
     "440507": "龙湖District",
     "440511": "金平District",
     "440512": "濠江District",
     "440513": "潮阳District",
     "440514": "潮南District",
     "440515": "澄海District",
     "440523": "南澳县",
     "440600": "佛山City",
     "440604": "禅城District",
     "440605": "南海District",
     "440606": "顺德District",
     "440607": "三水District",
     "440608": "高明District",
     "440700": "江门City",
     "440703": "蓬江District",
     "440704": "江海District",
     "440705": "新会District",
     "440781": "台山City",
     "440783": "开平City",
     "440784": "鹤山City",
     "440785": "恩平City",
     "440800": "湛江City",
     "440802": "赤坎District",
     "440803": "霞山District",
     "440804": "坡头District",
     "440811": "麻章District",
     "440823": "遂溪县",
     "440825": "徐闻县",
     "440881": "廉江City",
     "440882": "雷州City",
     "440883": "吴川City",
     "440900": "茂名City",
     "440902": "茂南District",
     "440904": "电白District",
     "440981": "高州City",
     "440982": "化州City",
     "440983": "信宜City",
     "441200": "肇庆City",
     "441202": "端州District",
     "441203": "鼎湖District",
     "441204": "高要District",
     "441223": "广宁县",
     "441224": "怀集县",
     "441225": "封开县",
     "441226": "德庆县",
     "441284": "四会City",
     "441300": "惠州City",
     "441302": "惠城District",
     "441303": "惠阳District",
     "441322": "博罗县",
     "441323": "惠东县",
     "441324": "龙门县",
     "441400": "梅州City",
     "441402": "梅江District",
     "441403": "梅Province",
     "441422": "大埔县",
     "441423": "丰顺县",
     "441424": "五华县",
     "441426": "平远县",
     "441427": "蕉岭县",
     "441481": "兴宁City",
     "441500": "汕尾City",
     "441502": "城District",
     "441521": "海丰县",
     "441523": "陆河县",
     "441581": "陆丰City",
     "441600": "河源City",
     "441602": "源城District",
     "441621": "紫金县",
     "441622": "龙川县",
     "441623": "连平县",
     "441624": "和平县",
     "441625": "东源县",
     "441700": "阳江City",
     "441702": "江城District",
     "441704": "阳东District",
     "441721": "阳西县",
     "441781": "阳春City",
     "441800": "清远City",
     "441802": "清城District",
     "441803": "清新District",
     "441821": "佛冈县",
     "441823": "阳山县",
     "441825": "连山壮族瑶族自治县",
     "441826": "连南瑶族自治县",
     "441881": "英德City",
     "441882": "连州City",
     "441900": "东莞City",
     "442000": "中山City",
     "445100": "潮州City",
     "445102": "湘桥District",
     "445103": "潮安District",
     "445122": "饶平县",
     "445200": "揭阳City",
     "445202": "榕城District",
     "445203": "揭东District",
     "445222": "揭西县",
     "445224": "惠来县",
     "445281": "普宁City",
     "445300": "云浮City",
     "445302": "云城District",
     "445303": "云安District",
     "445321": "新兴县",
     "445322": "郁南县",
     "445381": "罗定City",
     "450000": "广西",
     "450100": "南宁City",
     "450102": "兴宁District",
     "450103": "青秀District",
     "450105": "江南District",
     "450107": "西乡塘District",
     "450108": "良庆District",
     "450109": "邕宁District",
     "450110": "武鸣District",
     "450123": "隆安县",
     "450124": "马山县",
     "450125": "上林县",
     "450126": "宾阳县",
     "450127": "横县(旧)",
     "450181": "横州City",
     "450200": "柳州City",
     "450202": "城中District",
     "450203": "鱼峰District",
     "450204": "柳南District",
     "450205": "柳北District",
     "450206": "柳江District",
     "450221": "柳江District(旧)",
     "450222": "柳城县",
     "450223": "鹿寨县",
     "450224": "融安县",
     "450225": "融水苗族自治县",
     "450226": "三江侗族自治县",
     "450300": "桂林City",
     "450302": "秀峰District",
     "450303": "叠彩District",
     "450304": "象山District",
     "450305": "七星District",
     "450311": "雁山District",
     "450312": "临桂District",
     "450321": "阳朔县",
     "450323": "灵川县",
     "450324": "全州县",
     "450325": "兴安县",
     "450326": "永福县",
     "450327": "灌阳县",
     "450328": "龙胜各族自治县",
     "450329": "资源县",
     "450330": "平乐县",
     "450331": "荔浦县(旧)",
     "450332": "恭城瑶族自治县",
     "450381": "荔浦City",
     "450400": "梧州City",
     "450403": "万秀District",
     "450405": "长洲District",
     "450406": "龙圩District",
     "450421": "苍梧县",
     "450422": "藤县",
     "450423": "蒙山县",
     "450481": "岑溪City",
     "450500": "北海City",
     "450502": "海城District",
     "450503": "银海District",
     "450512": "铁山港District",
     "450521": "合浦县",
     "450600": "防城港City",
     "450602": "港口District",
     "450603": "防城District",
     "450621": "上思县",
     "450681": "东兴City",
     "450700": "钦州City",
     "450702": "钦南District",
     "450703": "钦北District",
     "450721": "灵山县",
     "450722": "浦北县",
     "450800": "贵港City",
     "450802": "港北District",
     "450803": "港南District",
     "450804": "覃塘District",
     "450821": "平南县",
     "450881": "桂平City",
     "450900": "玉林City",
     "450902": "玉州District",
     "450903": "福绵District",
     "450921": "容县",
     "450922": "陆川县",
     "450923": "博白县",
     "450924": "兴业县",
     "450981": "北流City",
     "451000": "百色City",
     "451002": "右江District",
     "451003": "田阳District",
     "451021": "田阳县(旧)",
     "451022": "田东县",
     "451023": "平果县(旧)",
     "451024": "德保县",
     "451026": "那坡县",
     "451027": "凌云县",
     "451028": "乐业县",
     "451029": "田林县",
     "451030": "西林县",
     "451031": "隆林各族自治县",
     "451081": "靖西City",
     "451082": "平果City",
     "451100": "贺州City",
     "451102": "八步District",
     "451103": "平桂District",
     "451121": "昭平县",
     "451122": "钟山县",
     "451123": "富川瑶族自治县",
     "451200": "河池City",
     "451202": "金城江District",
     "451203": "宜州District",
     "451221": "南丹县",
     "451222": "天峨县",
     "451223": "凤山县",
     "451224": "东兰县",
     "451225": "罗城仫佬族自治县",
     "451226": "环江毛南族自治县",
     "451227": "巴马瑶族自治县",
     "451228": "都安瑶族自治县",
     "451229": "大化瑶族自治县",
     "451281": "宜州District(旧)",
     "451300": "来宾City",
     "451302": "兴宾District",
     "451321": "忻城县",
     "451322": "象州县",
     "451323": "武宣县",
     "451324": "金秀瑶族自治县",
     "451381": "合山City",
     "451400": "崇左City",
     "451402": "江州District",
     "451421": "扶绥县",
     "451422": "宁明县",
     "451423": "龙州县",
     "451424": "大新县",
     "451425": "天,etc.县",
     "451481": "凭祥City",
     "460000": "海南",
     "460100": "海口City",
     "460105": "秀英District",
     "460106": "龙华District",
     "460107": "琼山District",
     "460108": "美兰District",
     "460200": "三亚City",
     "460202": "海棠District",
     "460203": "吉阳District",
     "460204": "天涯District",
     "460205": "崖州District",
     "460300": "三沙City",
     "460321": "西沙群岛",
     "460322": "南沙群岛",
     "460323": "中沙群岛",
     "460324": "永乐群岛",
     "460400": "儋州City",
     "469001": "五指山City",
     "469002": "琼海City",
     "469005": "文昌City",
     "469006": "万宁City",
     "469007": "东方City",
     "469021": "定安县",
     "469022": "屯昌县",
     "469023": "澄迈县",
     "469024": "临高县",
     "469025": "白沙黎族自治县",
     "469026": "昌江黎族自治县",
     "469027": "乐东黎族自治县",
     "469028": "陵水黎族自治县",
     "469029": "保亭黎族苗族自治县",
     "469030": "琼中黎族苗族自治县",
     "500000": "重庆City",
     "500101": "万州District",
     "500102": "涪陵District",
     "500103": "渝中District",
     "500104": "大渡口District",
     "500105": "江北District",
     "500106": "沙坪坝District",
     "500107": "九龙坡District",
     "500108": "南岸District",
     "500109": "北碚District",
     "500110": "綦江District",
     "500111": "大足District",
     "500112": "渝北District",
     "500113": "巴南District",
     "500114": "黔江District",
     "500115": "长寿District",
     "500116": "江津District",
     "500117": "合川District",
     "500118": "永川District",
     "500119": "南川District",
     "500120": "璧山District",
     "500151": "铜梁District",
     "500152": "潼南District",
     "500153": "荣昌District",
     "500154": "开州District",
     "500155": "梁平District",
     "500156": "武隆District",
     "500228": "梁平District(旧)",
     "500229": "城口县",
     "500230": "丰都县",
     "500231": "垫江县",
     "500232": "武隆District(旧)",
     "500233": "忠县",
     "500235": "云阳县",
     "500236": "奉节县",
     "500237": "巫山县",
     "500238": "巫溪县",
     "500240": "石柱土家族自治县",
     "500241": "秀山土家族苗族自治县",
     "500242": "酉阳土家族苗族自治县",
     "500243": "彭水苗族土家族自治县",
     "510000": "四川",
     "510100": "成都City",
     "510104": "锦江District",
     "510105": "青羊District",
     "510106": "金牛District",
     "510107": "武侯District",
     "510108": "成华District",
     "510112": "龙泉驿District",
     "510113": "青白江District",
     "510114": "新都District",
     "510115": "温江District",
     "510116": "双流District",
     "510117": "郫都District",
     "510118": "新津District",
     "510121": "金堂县",
     "510124": "郫都District(旧)",
     "510129": "大邑县",
     "510131": "蒲江县",
     "510132": "新津县(旧)",
     "510181": "都江堰City",
     "510182": "彭州City",
     "510183": "邛崃City",
     "510184": "崇州City",
     "510185": "简阳City",
     "510300": "自贡City",
     "510302": "自流井District",
     "510303": "贡井District",
     "510304": "大安District",
     "510311": "沿滩District",
     "510321": "荣县",
     "510322": "富顺县",
     "510400": "攀枝花City",
     "510402": "东District",
     "510403": "西District",
     "510411": "仁和District",
     "510421": "米易县",
     "510422": "盐边县",
     "510500": "泸州City",
     "510502": "江阳District",
     "510503": "纳溪District",
     "510504": "龙马潭District",
     "510521": "泸县",
     "510522": "合江县",
     "510524": "叙永县",
     "510525": "古蔺县",
     "510600": "德阳City",
     "510603": "旌阳District",
     "510604": "罗江District",
     "510623": "中江县",
     "510626": "罗江县(旧)",
     "510681": "广汉City",
     "510682": "什邡City",
     "510683": "绵竹City",
     "510700": "绵阳City",
     "510703": "涪城District",
     "510704": "游仙District",
     "510705": "安州District",
     "510722": "三台县",
     "510723": "盐亭县",
     "510725": "梓潼县",
     "510726": "北川羌族自治县",
     "510727": "平武县",
     "510781": "江油City",
     "510800": "广元City",
     "510802": "利州District",
     "510811": "昭化District",
     "510812": "朝天District",
     "510821": "旺苍县",
     "510822": "青川县",
     "510823": "剑阁县",
     "510824": "苍溪县",
     "510900": "遂宁City",
     "510903": "船山District",
     "510904": "安居District",
     "510921": "蓬溪县",
     "510922": "射洪县(旧)",
     "510923": "大英县",
     "510981": "射洪City",
     "511000": "内江City",
     "511002": "City中District",
     "511011": "东兴District",
     "511024": "威远县",
     "511025": "资中县",
     "511028": "隆昌县(旧)",
     "511071": "内江经济开发District",
     "511083": "隆昌City",
     "511100": "乐山City",
     "511102": "City中District",
     "511111": "沙湾District",
     "511112": "五通桥District",
     "511113": "金口河District",
     "511123": "犍为县",
     "511124": "井研县",
     "511126": "夹江县",
     "511129": "沐川县",
     "511132": "峨边彝族自治县",
     "511133": "马边彝族自治县",
     "511181": "峨眉山City",
     "511300": "南充City",
     "511302": "顺庆District",
     "511303": "高坪District",
     "511304": "嘉陵District",
     "511321": "南部县",
     "511322": "营山县",
     "511323": "蓬安县",
     "511324": "仪陇县",
     "511325": "西充县",
     "511381": "阆中City",
     "511400": "眉山City",
     "511402": "东坡District",
     "511403": "彭山District",
     "511421": "仁寿县",
     "511423": "洪雅县",
     "511424": "丹棱县",
     "511425": "青神县",
     "511500": "宜宾City",
     "511502": "翠屏District",
     "511503": "南溪District",
     "511504": "叙州District",
     "511521": "宜宾县(旧)",
     "511523": "江安县",
     "511524": "长宁县",
     "511525": "高县",
     "511526": "珙县",
     "511527": "筠连县",
     "511528": "兴文县",
     "511529": "屏山县",
     "511600": "广安City",
     "511602": "广安District",
     "511603": "前锋District",
     "511621": "岳池县",
     "511622": "武胜县",
     "511623": "邻水县",
     "511681": "华蓥City",
     "511700": "达州City",
     "511702": "通川District",
     "511703": "达川District",
     "511722": "宣汉县",
     "511723": "开江县",
     "511724": "大竹县",
     "511725": "渠县",
     "511771": "达州经济开发District",
     "511781": "万源City",
     "511800": "雅安City",
     "511802": "雨城District",
     "511803": "名山District",
     "511822": "荥经县",
     "511823": "汉源县",
     "511824": "石棉县",
     "511825": "天全县",
     "511826": "芦山县",
     "511827": "宝兴县",
     "511900": "巴中City",
     "511902": "巴州District",
     "511903": "恩阳District",
     "511921": "通江县",
     "511922": "南江县",
     "511923": "平昌县",
     "511971": "巴中经济开发District",
     "512000": "资阳City",
     "512002": "雁江District",
     "512021": "安岳县",
     "512022": "乐至县",
     "513200": "阿坝藏族羌族自治州",
     "513201": "马尔康City",
     "513221": "汶川县",
     "513222": "理县",
     "513223": "茂县",
     "513224": "松潘县",
     "513225": "九寨沟县",
     "513226": "金川县",
     "513227": "小金县",
     "513228": "黑水县",
     "513230": "壤塘县",
     "513231": "阿坝县",
     "513232": "若尔盖县",
     "513233": "红原县",
     "513300": "甘孜藏族自治州",
     "513301": "康定City",
     "513322": "泸定县",
     "513323": "丹巴县",
     "513324": "九龙县",
     "513325": "雅江县",
     "513326": "道孚县",
     "513327": "炉霍县",
     "513328": "甘孜县",
     "513329": "新龙县",
     "513330": "德格县",
     "513331": "白玉县",
     "513332": "石渠县",
     "513333": "色达县",
     "513334": "理塘县",
     "513335": "巴塘县",
     "513336": "乡城县",
     "513337": "稻城县",
     "513338": "得荣县",
     "513400": "凉山彝族自治州",
     "513401": "西昌City",
     "513402": "会理City",
     "513422": "木里藏族自治县",
     "513423": "盐源县",
     "513424": "德昌县",
     "513425": "会理县(旧)",
     "513426": "会东县",
     "513427": "宁南县",
     "513428": "普格县",
     "513429": "布拖县",
     "513430": "金阳县",
     "513431": "昭觉县",
     "513432": "喜德县",
     "513433": "冕宁县",
     "513434": "越西县",
     "513435": "甘洛县",
     "513436": "美姑县",
     "513437": "雷波县",
     "520000": "贵州",
     "520100": "贵阳City",
     "520102": "南明District",
     "520103": "云岩District",
     "520111": "花溪District",
     "520112": "乌当District",
     "520113": "白云District",
     "520115": "观山湖District",
     "520121": "开阳县",
     "520122": "息烽县",
     "520123": "修文县",
     "520181": "清镇City",
     "520200": "六盘水City",
     "520201": "钟山District",
     "520203": "六枝特District",
     "520204": "水城District",
     "520221": "水城县(旧)",
     "520222": "盘县(旧)",
     "520281": "盘州City",
     "520300": "遵义City",
     "520302": "红花岗District",
     "520303": "汇川District",
     "520304": "播州District",
     "520322": "桐梓县",
     "520323": "绥阳县",
     "520324": "正安县",
     "520325": "道真仡佬族苗族自治县",
     "520326": "务川仡佬族苗族自治县",
     "520327": "凤冈县",
     "520328": "湄潭县",
     "520329": "余庆县",
     "520330": "习水县",
     "520381": "赤水City",
     "520382": "仁怀City",
     "520400": "安顺City",
     "520402": "西秀District",
     "520403": "平坝District",
     "520422": "普定县",
     "520423": "镇宁布依族苗族自治县",
     "520424": "关岭布依族苗族自治县",
     "520425": "紫云苗族布依族自治县",
     "520500": "毕节City",
     "520502": "七星关District",
     "520521": "大方县",
     "520522": "黔西县(旧)",
     "520523": "金沙县",
     "520524": "织金县",
     "520525": "纳雍县",
     "520526": "威宁彝族回族苗族自治县",
     "520527": "赫章县",
     "520581": "黔西City",
     "520600": "铜仁City",
     "520602": "碧江District",
     "520603": "万山District",
     "520621": "江口县",
     "520622": "玉屏侗族自治县",
     "520623": "石阡县",
     "520624": "思南县",
     "520625": "印江土家族苗族自治县",
     "520626": "德江县",
     "520627": "沿河土家族自治县",
     "520628": "松桃苗族自治县",
     "522300": "黔西南布依族苗族自治州",
     "522301": "兴义City",
     "522302": "兴仁City",
     "522322": "兴仁县(旧)",
     "522323": "普安县",
     "522324": "晴隆县",
     "522325": "贞丰县",
     "522326": "望谟县",
     "522327": "册亨县",
     "522328": "安龙县",
     "522600": "黔东南苗族侗族自治州",
     "522601": "凯里City",
     "522622": "黄平县",
     "522623": "施秉县",
     "522624": "三穗县",
     "522625": "镇远县",
     "522626": "岑巩县",
     "522627": "天柱县",
     "522628": "锦屏县",
     "522629": "剑河县",
     "522630": "台江县",
     "522631": "黎平县",
     "522632": "榕江县",
     "522633": "从江县",
     "522634": "雷山县",
     "522635": "麻江县",
     "522636": "丹寨县",
     "522700": "黔南布依族苗族自治州",
     "522701": "都匀City",
     "522702": "福泉City",
     "522722": "荔波县",
     "522723": "贵定县",
     "522725": "瓮安县",
     "522726": "独山县",
     "522727": "平塘县",
     "522728": "罗甸县",
     "522729": "长顺县",
     "522730": "龙里县",
     "522731": "惠水县",
     "522732": "三都水族自治县",
     "530000": "云南",
     "530100": "昆明City",
     "530102": "五华District",
     "530103": "盘龙District",
     "530111": "官渡District",
     "530112": "西山District",
     "530113": "东川District",
     "530114": "呈贡District",
     "530115": "晋宁District",
     "530122": "晋宁District(旧)",
     "530124": "富民县",
     "530125": "宜良县",
     "530126": "石林彝族自治县",
     "530127": "嵩明县",
     "530128": "禄劝彝族苗族自治县",
     "530129": "寻甸回族彝族自治县",
     "530181": "安宁City",
     "530300": "曲靖City",
     "530302": "麒麟District",
     "530303": "沾益District",
     "530304": "马龙District",
     "530321": "马龙县(旧)",
     "530322": "陆良县",
     "530323": "师宗县",
     "530324": "罗平县",
     "530325": "富源县",
     "530326": "会泽县",
     "530381": "宣威City",
     "530400": "玉溪City",
     "530402": "红塔District",
     "530403": "江川District",
     "530422": "澄江县(旧)",
     "530423": "通海县",
     "530424": "华宁县",
     "530425": "易门县",
     "530426": "峨山彝族自治县",
     "530427": "新平彝族傣族自治县",
     "530428": "元江哈尼族彝族傣族自治县",
     "530481": "澄江City",
     "530500": "保山City",
     "530502": "隆阳District",
     "530521": "施甸县",
     "530523": "龙陵县",
     "530524": "昌宁县",
     "530581": "腾冲City",
     "530600": "昭通City",
     "530602": "昭阳District",
     "530621": "鲁甸县",
     "530622": "巧家县",
     "530623": "盐津县",
     "530624": "大关县",
     "530625": "永善县",
     "530626": "绥江县",
     "530627": "镇雄县",
     "530628": "彝良县",
     "530629": "威信县",
     "530630": "水富县(旧)",
     "530681": "水富City",
     "530700": "丽江City",
     "530702": "古城District",
     "530721": "玉龙纳西族自治县",
     "530722": "永胜县",
     "530723": "华坪县",
     "530724": "宁蒗彝族自治县",
     "530800": "普洱City",
     "530802": "思茅District",
     "530821": "宁洱哈尼族彝族自治县",
     "530822": "墨江哈尼族自治县",
     "530823": "景东彝族自治县",
     "530824": "景谷傣族彝族自治县",
     "530825": "镇沅彝族哈尼族拉祜族自治县",
     "530826": "江城哈尼族彝族自治县",
     "530827": "孟连傣族拉祜族佤族自治县",
     "530828": "澜沧拉祜族自治县",
     "530829": "西盟佤族自治县",
     "530900": "临沧City",
     "530902": "临翔District",
     "530921": "凤庆县",
     "530922": "云县",
     "530923": "永德县",
     "530924": "镇康县",
     "530925": "双江拉祜族佤族布朗族傣族自治县",
     "530926": "耿马傣族佤族自治县",
     "530927": "沧源佤族自治县",
     "532300": "楚雄彝族自治州",
     "532301": "楚雄City",
     "532302": "禄丰City",
     "532322": "双柏县",
     "532323": "牟定县",
     "532324": "南华县",
     "532325": "姚安县",
     "532326": "大姚县",
     "532327": "永仁县",
     "532328": "元谋县",
     "532329": "武定县",
     "532331": "禄丰县(旧)",
     "532500": "红河哈尼族彝族自治州",
     "532501": "个旧City",
     "532502": "开远City",
     "532503": "蒙自City",
     "532504": "弥勒City",
     "532523": "屏边苗族自治县",
     "532524": "建水县",
     "532525": "石屏县",
     "532527": "泸西县",
     "532528": "元阳县",
     "532529": "红河县",
     "532530": "金平苗族瑶族傣族自治县",
     "532531": "绿春县",
     "532532": "河口瑶族自治县",
     "532600": "文山壮族苗族自治州",
     "532601": "文山City",
     "532622": "砚山县",
     "532623": "西畴县",
     "532624": "麻栗坡县",
     "532625": "马关县",
     "532626": "丘北县",
     "532627": "广南县",
     "532628": "富宁县",
     "532800": "西双版纳傣族自治州",
     "532801": "景洪City",
     "532822": "勐海县",
     "532823": "勐腊县",
     "532900": "大理白族自治州",
     "532901": "大理City",
     "532922": "漾濞彝族自治县",
     "532923": "祥云县",
     "532924": "宾川县",
     "532925": "弥渡县",
     "532926": "南涧彝族自治县",
     "532927": "巍山彝族回族自治县",
     "532928": "永平县",
     "532929": "云龙县",
     "532930": "洱源县",
     "532931": "剑川县",
     "532932": "鹤庆县",
     "533100": "德宏傣族景颇族自治州",
     "533102": "瑞丽City",
     "533103": "芒City",
     "533122": "梁河县",
     "533123": "盈江县",
     "533124": "陇川县",
     "533300": "怒江傈僳族自治州",
     "533301": "泸水City",
     "533323": "福贡县",
     "533324": "贡山独龙族怒族自治县",
     "533325": "兰坪白族普米族自治县",
     "533400": "迪庆藏族自治州",
     "533401": "香格里拉City",
     "533422": "德钦县",
     "533423": "维西傈僳族自治县",
     "540000": "西藏",
     "540100": "拉萨City",
     "540102": "城关District",
     "540103": "堆龙德庆District",
     "540104": "达孜District",
     "540121": "林周县",
     "540122": "当雄县",
     "540123": "尼木县",
     "540124": "曲水县",
     "540126": "达孜县(旧)",
     "540127": "墨竹工卡县",
     "540171": "格尔木藏青工业园District",
     "540172": "拉萨经济技术开发District",
     "540173": "西藏文化旅游创意园District",
     "540174": "达孜工业园District",
     "540200": "日喀则City",
     "540202": "桑珠孜District",
     "540221": "南木林县",
     "540222": "江孜县",
     "540223": "定日县",
     "540224": "萨迦县",
     "540225": "拉孜县",
     "540226": "昂仁县",
     "540227": "谢通门县",
     "540228": "白朗县",
     "540229": "仁布县",
     "540230": "康马县",
     "540231": "定结县",
     "540232": "仲巴县",
     "540233": "亚东县",
     "540234": "吉隆县",
     "540235": "聂拉木县",
     "540236": "萨嘎县",
     "540237": "岗巴县",
     "540300": "昌都City",
     "540302": "卡若District",
     "540321": "江达县",
     "540322": "贡觉县",
     "540323": "类乌齐县",
     "540324": "丁青县",
     "540325": "察雅县",
     "540326": "八宿县",
     "540327": "左贡县",
     "540328": "芒康县",
     "540329": "洛隆县",
     "540330": "边坝县",
     "540400": "林芝City",
     "540402": "巴宜District",
     "540421": "工布江达县",
     "540422": "米林县",
     "540423": "墨脱县",
     "540424": "波密县",
     "540425": "察隅县",
     "540426": "朗县",
     "540500": "山南City",
     "540502": "乃东District",
     "540521": "扎囊县",
     "540522": "贡嘎县",
     "540523": "桑日县",
     "540524": "琼结县",
     "540525": "曲松县",
     "540526": "措美县",
     "540527": "洛扎县",
     "540528": "加查县",
     "540529": "隆子县",
     "540530": "错那县",
     "540531": "浪卡子县",
     "540600": "那曲City",
     "540602": "色尼District",
     "540621": "嘉黎县",
     "540622": "比, such as县",
     "540623": "聂荣县",
     "540624": "安多县",
     "540625": "申扎县",
     "540626": "索县",
     "540627": "班戈县",
     "540628": "巴青县",
     "540629": "尼玛县",
     "540630": "双湖县",
     "542400": "那曲Region(旧)",
     "542421": "那曲县(旧)",
     "542422": "嘉黎县(旧)",
     "542423": "比, such as县(旧)",
     "542424": "聂荣县(旧)",
     "542425": "安多县(旧)",
     "542426": "申扎县(旧)",
     "542427": "索县(旧)",
     "542428": "班戈县(旧)",
     "542429": "巴青县(旧)",
     "542430": "尼玛县(旧)",
     "542431": "双湖县(旧)",
     "542500": "阿里Region",
     "542521": "普兰县",
     "542522": "札达县",
     "542523": "噶尔县",
     "542524": "日土县",
     "542525": "革吉县",
     "542526": "改则县",
     "542527": "措勤县",
     "610000": "陕西",
     "610100": "西安City",
     "610102": "新城District",
     "610103": "碑林District",
     "610104": "莲湖District",
     "610111": "灞桥District",
     "610112": "未央District",
     "610113": "雁塔District",
     "610114": "阎良District",
     "610115": "临潼District",
     "610116": "长安District",
     "610117": "高陵District",
     "610118": "鄠邑District",
     "610122": "蓝田县",
     "610124": "周至县",
     "610125": "鄠邑District(旧)",
     "610200": "铜川City",
     "610202": "王益District",
     "610203": "印台District",
     "610204": "耀州District",
     "610222": "宜君县",
     "610300": "宝鸡City",
     "610302": "渭滨District",
     "610303": "金台District",
     "610304": "陈仓District",
     "610305": "凤翔District",
     "610322": "凤翔县(旧)",
     "610323": "岐山县",
     "610324": "扶风县",
     "610326": "眉县",
     "610327": "陇县",
     "610328": "千阳县",
     "610329": "麟游县",
     "610330": "凤县",
     "610331": "太白县",
     "610400": "咸阳City",
     "610402": "秦都District",
     "610403": "杨陵District",
     "610404": "渭城District",
     "610422": "三原县",
     "610423": "泾阳县",
     "610424": "乾县",
     "610425": "礼泉县",
     "610426": "永寿县",
     "610427": "彬县(旧)",
     "610428": "长武县",
     "610429": "旬邑县",
     "610430": "淳化县",
     "610431": "武功县",
     "610481": "兴平City",
     "610482": "彬州City",
     "610500": "渭南City",
     "610502": "临渭District",
     "610503": "华州District",
     "610522": "潼关县",
     "610523": "大荔县",
     "610524": "合阳县",
     "610525": "澄城县",
     "610526": "蒲城县",
     "610527": "白水县",
     "610528": "富平县",
     "610581": "韩City",
     "610582": "华阴City",
     "610600": "延安City",
     "610602": "宝塔District",
     "610603": "安塞District",
     "610621": "延长县",
     "610622": "延川县",
     "610623": "子长县(旧)",
     "610625": "志丹县",
     "610626": "吴起县",
     "610627": "甘泉县",
     "610628": "富县",
     "610629": "洛川县",
     "610630": "宜川县",
     "610631": "黄龙县",
     "610632": "黄陵县",
     "610681": "子长City",
     "610700": "汉中City",
     "610702": "汉台District",
     "610703": "南郑District",
     "610721": "南郑县(旧)",
     "610722": "城固县",
     "610723": "洋县",
     "610724": "西乡县",
     "610725": "勉县",
     "610726": "宁强县",
     "610727": "略阳县",
     "610728": "镇巴县",
     "610729": "留坝县",
     "610730": "佛坪县",
     "610800": "榆林City",
     "610802": "榆阳District",
     "610803": "横山District",
     "610821": "神木县(旧)",
     "610822": "府谷县",
     "610824": "靖边县",
     "610825": "定边县",
     "610826": "绥德县",
     "610827": "米脂县",
     "610828": "佳县",
     "610829": "吴堡县",
     "610830": "清涧县",
     "610831": "子洲县",
     "610881": "神木City",
     "610900": "安康City",
     "610902": "汉滨District",
     "610921": "汉阴县",
     "610922": "石泉县",
     "610923": "宁陕县",
     "610924": "紫阳县",
     "610925": "岚皋县",
     "610926": "平利县",
     "610927": "镇坪县",
     "610928": "旬阳县(旧)",
     "610929": "白河县",
     "610981": "旬阳City",
     "611000": "商洛City",
     "611002": "商州District",
     "611021": "洛南县",
     "611022": "丹凤县",
     "611023": "商南县",
     "611024": "山阳县",
     "611025": "镇安县",
     "611026": "柞水县",
     "620000": "甘肃",
     "620100": "兰州City",
     "620102": "城关District",
     "620103": "七里河District",
     "620104": "西固District",
     "620105": "安宁District",
     "620111": "红古District",
     "620121": "永登县",
     "620122": "皋兰县",
     "620123": "榆中县",
     "620171": "兰州新District",
     "620200": "嘉峪关City",
     "620300": "金昌City",
     "620302": "金川District",
     "620321": "永昌县",
     "620400": "白银City",
     "620402": "白银District",
     "620403": "平川District",
     "620421": "靖远县",
     "620422": "会宁县",
     "620423": "景泰县",
     "620500": "天水City",
     "620502": "秦州District",
     "620503": "麦积District",
     "620521": "清水县",
     "620522": "秦安县",
     "620523": "甘谷县",
     "620524": "武山县",
     "620525": "张家川回族自治县",
     "620600": "武威City",
     "620602": "凉州District",
     "620621": "民勤县",
     "620622": "古浪县",
     "620623": "天祝藏族自治县",
     "620700": "张掖City",
     "620702": "甘州District",
     "620721": "肃南裕固族自治县",
     "620722": "民乐县",
     "620723": "临泽县",
     "620724": "高台县",
     "620725": "山丹县",
     "620800": "平凉City",
     "620802": "崆峒District",
     "620821": "泾川县",
     "620822": "灵台县",
     "620823": "崇信县",
     "620824": "华亭县(旧)",
     "620825": "庄浪县",
     "620826": "静宁县",
     "620881": "华亭City",
     "620900": "酒泉City",
     "620902": "肃州District",
     "620921": "金塔县",
     "620922": "瓜州县",
     "620923": "肃北蒙古族自治县",
     "620924": "阿克塞哈萨克族自治县",
     "620981": "玉门City",
     "620982": "敦煌City",
     "621000": "庆阳City",
     "621002": "西峰District",
     "621021": "庆城县",
     "621022": "环县",
     "621023": "华池县",
     "621024": "合水县",
     "621025": "正宁县",
     "621026": "宁县",
     "621027": "镇原县",
     "621100": "定西City",
     "621102": "安定District",
     "621121": "通渭县",
     "621122": "陇西县",
     "621123": "渭源县",
     "621124": "临洮县",
     "621125": "漳县",
     "621126": "岷县",
     "621200": "陇南City",
     "621202": "武都District",
     "621221": "成县",
     "621222": "文县",
     "621223": "宕昌县",
     "621224": "康县",
     "621225": "西和县",
     "621226": "礼县",
     "621227": "徽县",
     "621228": "两当县",
     "622900": "临夏回族自治州",
     "622901": "临夏City",
     "622921": "临夏县",
     "622922": "康乐县",
     "622923": "永靖县",
     "622924": "广河县",
     "622925": "和政县",
     "622926": "东乡族自治县",
     "622927": "积石山保安族东乡族撒拉族自治县",
     "623000": "甘南藏族自治州",
     "623001": "合作City",
     "623021": "临潭县",
     "623022": "卓尼县",
     "623023": "舟曲县",
     "623024": "迭部县",
     "623025": "玛曲县",
     "623026": "碌曲县",
     "623027": "夏河县",
     "630000": "青海",
     "630100": "西宁City",
     "630102": "城东District",
     "630103": "城中District",
     "630104": "城西District",
     "630105": "城北District",
     "630106": "湟中District",
     "630121": "大通回族土族自治县",
     "630122": "湟中县(旧)",
     "630123": "湟源县",
     "630200": "海东City",
     "630202": "乐都District",
     "630203": "平安District",
     "630222": "民和回族土族自治县",
     "630223": "互助土族自治县",
     "630224": "化隆回族自治县",
     "630225": "循化撒拉族自治县",
     "632200": "海北藏族自治州",
     "632221": "门源回族自治县",
     "632222": "祁连县",
     "632223": "海晏县",
     "632224": "刚察县",
     "632300": "黄南藏族自治州",
     "632301": "同仁City",
     "632321": "同仁县(旧)",
     "632322": "尖扎县",
     "632323": "泽库县",
     "632324": "河南蒙古族自治县",
     "632500": "海南藏族自治州",
     "632521": "共和县",
     "632522": "同德县",
     "632523": "贵德县",
     "632524": "兴海县",
     "632525": "贵南县",
     "632600": "果洛藏族自治州",
     "632621": "玛沁县",
     "632622": "班玛县",
     "632623": "甘德县",
     "632624": "达日县",
     "632625": "久治县",
     "632626": "玛多县",
     "632700": "玉树藏族自治州",
     "632701": "玉树City",
     "632722": "杂多县",
     "632723": "称多县",
     "632724": "治多县",
     "632725": "囊谦县",
     "632726": "曲麻莱县",
     "632800": "海西蒙古族藏族自治州",
     "632801": "格尔木City",
     "632802": "德令哈City",
     "632803": "茫崖City",
     "632821": "乌兰县",
     "632822": "都兰县",
     "632823": "天峻县",
     "632857": "大柴旦行政委员会",
     "640000": "宁夏",
     "640100": "银川City",
     "640104": "兴庆District",
     "640105": "西夏District",
     "640106": "金凤District",
     "640121": "永宁县",
     "640122": "贺兰县",
     "640181": "灵武City",
     "640200": "石嘴山City",
     "640202": "大武口District",
     "640205": "惠农District",
     "640221": "平罗县",
     "640300": "吴忠City",
     "640302": "利通District",
     "640303": "红寺堡District",
     "640323": "盐池县",
     "640324": "同心县",
     "640381": "青铜峡City",
     "640400": "固原City",
     "640402": "原州District",
     "640422": "西吉县",
     "640423": "隆德县",
     "640424": "泾源县",
     "640425": "彭阳县",
     "640500": "中卫City",
     "640502": "沙坡头District",
     "640521": "中宁县",
     "640522": "海原县",
     "650000": "新疆",
     "650100": "乌鲁木齐City",
     "650102": "天山District",
     "650103": "沙依巴克District",
     "650104": "新CityDistrict",
     "650105": "水磨沟District",
     "650106": "头屯河District",
     "650107": "达坂城District",
     "650109": "米东District",
     "650121": "乌鲁木齐县",
     "650200": "克拉玛依City",
     "650202": "独山子District",
     "650203": "克拉玛依District",
     "650204": "白碱滩District",
     "650205": "乌尔禾District",
     "650400": "吐鲁番City",
     "650402": "高昌District",
     "650421": "鄯善县",
     "650422": "托克逊县",
     "650500": "哈密City",
     "650502": "伊州District",
     "650521": "巴里坤哈萨克自治县",
     "650522": "伊吾县",
     "652300": "昌吉回族自治州",
     "652301": "昌吉City",
     "652302": "阜康City",
     "652323": "呼图壁县",
     "652324": "玛纳斯县",
     "652325": "奇台县",
     "652327": "吉木萨尔县",
     "652328": "木垒哈萨克自治县",
     "652700": "博尔塔拉蒙古自治州",
     "652701": "博乐City",
     "652702": "阿拉山口City",
     "652722": "精河县",
     "652723": "温泉县",
     "652800": "巴音郭楞蒙古自治州",
     "652801": "库尔勒City",
     "652822": "轮台县",
     "652823": "尉犁县",
     "652824": "若羌县",
     "652825": "且末县",
     "652826": "焉耆回族自治县",
     "652827": "和静县",
     "652828": "和硕县",
     "652829": "博湖县",
     "652871": "库尔勒经济技术开发District",
     "652900": "阿克苏Region",
     "652901": "阿克苏City",
     "652902": "库车City",
     "652922": "温宿县",
     "652923": "库车县(旧)",
     "652924": "沙雅县",
     "652925": "新和县",
     "652926": "拜城县",
     "652927": "乌什县",
     "652928": "阿瓦提县",
     "652929": "柯坪县",
     "653000": "克孜勒苏柯尔克孜自治州",
     "653001": "阿图什City",
     "653022": "阿克陶县",
     "653023": "阿合奇县",
     "653024": "乌恰县",
     "653100": "喀什Region",
     "653101": "喀什City",
     "653121": "疏附县",
     "653122": "疏勒县",
     "653123": "英吉沙县",
     "653124": "泽普县",
     "653125": "莎车县",
     "653126": "叶城县",
     "653127": "麦盖提县",
     "653128": "岳普湖县",
     "653129": "伽师县",
     "653130": "巴楚县",
     "653131": "塔什库尔干塔吉克自治县",
     "653200": "和田Region",
     "653201": "和田City",
     "653221": "和田县",
     "653222": "墨玉县",
     "653223": "皮山县",
     "653224": "洛浦县",
     "653225": "策勒县",
     "653226": "于田县",
     "653227": "民丰县",
     "654000": "伊犁哈萨克自治州",
     "654002": "伊宁City",
     "654003": "奎屯City",
     "654004": "霍尔果斯City",
     "654021": "伊宁县",
     "654022": "察布查尔锡伯自治县",
     "654023": "霍城县",
     "654024": "巩留县",
     "654025": "新源县",
     "654026": "昭苏县",
     "654027": "特克斯县",
     "654028": "尼勒克县",
     "654200": "塔城Region",
     "654201": "塔City",
     "654202": "乌苏City",
     "654203": "沙湾City",
     "654221": "额敏县",
     "654223": "沙湾县(旧)",
     "654224": "托里县",
     "654225": "裕民县",
     "654226": "和布克赛尔蒙古自治县",
     "654300": "阿勒泰Region",
     "654301": "阿勒泰City",
     "654321": "布尔津县",
     "654322": "富蕴县",
     "654323": "福海县",
     "654324": "哈巴河县",
     "654325": "青河县",
     "654326": "吉木乃县",
     "659001": "石河子City",
     "659002": "阿拉尔City",
     "659003": "图木舒克City",
     "659004": "五家渠City",
     "659005": "北屯City",
     "659006": "铁门关City",
     "659007": "双河City",
     "659008": "可克达拉City",
     "659009": "昆玉City",
     "659010": "胡杨河City",
     "659011": "新星City",
     "710000": "台湾",
     "710100": "台北City",
     "710101": "中正District",
     "710102": "大同District",
     "710103": "中山District",
     "710104": "万华District",
     "710105": "信义District",
     "710106": "松山District",
     "710107": "大安District",
     "710108": "南港District",
     "710109": "北投District",
     "710110": "内湖District",
     "710111": "士林District",
     "710112": "文山District",
     "710200": "新北City",
     "710201": "板桥District",
     "710202": "土城District",
     "710203": "新庄District",
     "710204": "新店District",
     "710205": "深坑District",
     "710206": "石碇District",
     "710207": "坪林District",
     "710208": "乌来District",
     "710209": "五股District",
     "710210": "八里District",
     "710211": "林口District",
     "710212": "淡水District",
     "710213": "中和District",
     "710214": "永和District",
     "710215": "三重District",
     "710216": "芦洲District",
     "710217": "泰山District",
     "710218": "树林District",
     "710219": "莺歌District",
     "710220": "三峡District",
     "710221": "汐止District",
     "710222": "金山District",
     "710223": "万里District",
     "710224": "三芝District",
     "710225": "石门District",
     "710226": "瑞芳District",
     "710227": "贡寮District",
     "710228": "双溪District",
     "710229": "平溪District",
     "710300": "桃园City",
     "710301": "桃园District",
     "710302": "中坜District",
     "710303": "平镇District",
     "710304": "八德District",
     "710305": "杨梅District",
     "710306": "芦竹District",
     "710307": "大溪District",
     "710308": "龙潭District",
     "710309": "龟山District",
     "710310": "大园District",
     "710311": "观音District",
     "710312": "新屋District",
     "710313": "复兴District",
     "710400": "台中City",
     "710401": "中District",
     "710402": "东District",
     "710403": "西District",
     "710404": "南District",
     "710405": "北District",
     "710406": "西屯District",
     "710407": "南屯District",
     "710408": "北屯District",
     "710409": "丰原District",
     "710410": "大里District",
     "710411": "太平District",
     "710412": "东势District",
     "710413": "大甲District",
     "710414": "清水District",
     "710415": "沙鹿District",
     "710416": "梧栖District",
     "710417": "后里District",
     "710418": "神冈District",
     "710419": "潭子District",
     "710420": "大雅District",
     "710421": "新小District",
     "710422": "石冈District",
     "710423": "外埔District",
     "710424": "大安District",
     "710425": "乌日District",
     "710426": "大肚District",
     "710427": "龙井District",
     "710428": "雾峰District",
     "710429": "和平District",
     "710500": "台南City",
     "710501": "中西District",
     "710502": "东District",
     "710503": "南District",
     "710504": "北District",
     "710505": "安平District",
     "710506": "安南District",
     "710507": "永康District",
     "710508": "归仁District",
     "710509": "新化District",
     "710510": "左镇District",
     "710511": "玉井District",
     "710512": "楠西District",
     "710513": "南化District",
     "710514": "仁德District",
     "710515": "关庙District",
     "710516": "龙崎District",
     "710517": "官田District",
     "710518": "麻豆District",
     "710519": "佳里District",
     "710520": "西港District",
     "710521": "七股District",
     "710522": "将军District",
     "710523": "学甲District",
     "710524": "北门District",
     "710525": "新营District",
     "710526": "后壁District",
     "710527": "白河District",
     "710528": "东山District",
     "710529": "六甲District",
     "710530": "下营District",
     "710531": "柳营District",
     "710532": "盐水District",
     "710533": "善化District",
     "710534": "大内District",
     "710535": "山上District",
     "710536": "新CityDistrict",
     "710537": "安定District",
     "710600": "高雄City",
     "710601": "楠梓District",
     "710602": "左营District",
     "710603": "鼓山District",
     "710604": "三民District",
     "710605": "盐埕District",
     "710606": "前金District",
     "710607": "新兴District",
     "710608": "苓雅District",
     "710609": "前镇District",
     "710610": "旗津District",
     "710611": "小港District",
     "710612": "凤山District",
     "710613": "大寮District",
     "710614": "鸟松District",
     "710615": "林园District",
     "710616": "仁武District",
     "710617": "大树District",
     "710618": "大社District",
     "710619": "冈山District",
     "710620": "路竹District",
     "710621": "桥头District",
     "710622": "梓官District",
     "710623": "弥陀District",
     "710624": "永安District",
     "710625": "燕巢District",
     "710626": "阿莲District",
     "710627": "茄萣District",
     "710628": "湖内District",
     "710629": "旗山District",
     "710630": "美浓District",
     "710631": "内门District",
     "710632": "杉林District",
     "710633": "甲仙District",
     "710634": "六龟District",
     "710635": "茂林District",
     "710636": "桃源District",
     "710637": "那玛夏District",
     "710700": "基隆City",
     "710701": "中正District",
     "710702": "七堵District",
     "710703": "暖暖District",
     "710704": "仁爱District",
     "710705": "中山District",
     "710706": "安乐District",
     "710707": "信义District",
     "710800": "新竹City",
     "710801": "东District",
     "710802": "北District",
     "710803": "香山District",
     "710900": "嘉义City",
     "710901": "东District",
     "710902": "西District",
     "719001": "宜兰县",
     "719002": "新竹县",
     "719003": "苗栗县",
     "719004": "彰化县",
     "719005": "南投县",
     "719006": "嘉义县",
     "719007": "云林县",
     "719008": "屏东县",
     "719009": "台东县",
     "719010": "花莲县",
     "719011": "澎湖县",
     "719012": "金门县",
     "719013": "连江县",
     "810000": "香港",
     "810101": "中西District",
     "810102": "湾仔District",
     "810103": "东District",
     "810104": "南District",
     "810105": "油尖旺District",
     "810106": "深水埗District",
     "810107": "九龙城District",
     "810108": "黄大仙District",
     "810109": "观塘District",
     "810110": "北District",
     "810111": "大埔District",
     "810112": "沙田District",
     "810113": "西贡District",
     "810114": "荃湾District",
     "810115": "屯门District",
     "810116": "元朗District",
     "810117": "葵青District",
     "810118": "离岛District",
     "820000": "澳门",
     "820101": "花地玛堂District",
     "820102": "圣安多尼堂District",
     "820103": "大堂District",
     "820104": "望德堂District",
     "820105": "风顺堂District",
     "820106": "嘉模堂District",
     "820107": "圣方济各堂District",
     "820108": "路氹城",
     "820109": "澳门新城"
    }
    

    Error code

    Response的Error code

    code Description Note
    100001 Operate after sign-in
    100002 Sign-in invalid
    100003 Can not operate it since the user no permission
    100004 Account has expired
    100005 Parameter abnormal Missing required parameter
    201010 Unable to create sequential interview started in the past
    201011 Unable to find available interview application
    201012 Unable to change interview start time after the interview started
    201013 Unable to change interview start time to past time
    201014 Unable to change interview location after the interview started
    201015 Unable to delete Candidate
    201016 Unable to change interview round after the interview started
    201017 The resume type cannot be modified after the interview has started
    201018 Unable to delete selected room after the interview started
    201019 Please select other locations since it is already deleted.
    201020 Temporary room name can not be same with others
    201021 You have been check-in in ${room name}
    201022 The interviewer is not in the room
    201023 The interviewer does not have this round
    201024 This room has other interviewers
    201025 Unable to move Candidate to the room which is in interviewing
    201026 The interviewer can not quited from the room which is in interviewing
    201030 The queue does not exist
    201031 Candidate in interviewing can not change interviewer
    201032 Candidate is not in the queue
    201033 Candidates for other sessions or rounds cannot be moved
    201040 Feedback failed to create sequential interview
    201041 Interview grouping time can not be less than interview start time
    201042 The current sequential interview has been invalid
    201043 Apply position on site can not be empty
    201044 The Candidate can not be empty
    201045 The status of sequential interview on site does not match
    201046 The application time of sequential interview on site does not match
    201047 sequential interview allow the application position on site does not match
    201048 There is already an application for the same position in this sequential interview
    201049 Check that candidates apply for the position that an application for the same position exists and whose application process is after the first interview process
    201050 Candidate has other position is in process
    201051 Duplicate interviewer
    201052 The number of multi-person interviews is set abnormally
    201053 The status modification of multi-person interviews is abnormal and can only be modified before the interview
    201054 multi-person interview rounds get abnormal, an interviewer can only exist under one round
    201055 Obtaining feedback abnormal, the number of feedback templates for abnormal feedback data cannot be greater than 1
    201056 Get abnormal feedback of data
    201057 The Candidate in the interview can not be moved
    201058 Candidate or application does not exist
    201059 Checked in interviewer can not be deleted
    201060 Candidate validation abnormal
    211010 Conflict with this interviewer's scheduled interview
    211011 Round name cannot be empty
    211012 Round name and English name cannot be the same
    211013 pdf rendering failed
    211014 The weight interview evaluation form module calculation type must all be weight
    211015 The sum of weights is not 100
    211016 The weight of the scoring question cannot be empty
    211017 Lack position id
    211018 The selected interview evaluation form cannot be found, please refresh and try again
    211019 Recruitment mode cannot be found
    211020 Please ensure that the scoring questions have uniform scores
    211021 Cannot find the designated interview feedback
    211022 Export up to 7 consecutive days of interviews
    211030 No matching interview records found
    211031 Interviewer has filled the feedback
    211032 The Candidate no-show
    211033 Invalid interview feedback
    211034 Only interviewer can fill interview feedback
    211037 Interview feedback failed
    211041 The user has not bound to Feishu
    211090 The evaluation template has been modified
    221001 Scheduled interview does not exist
    221002 Scheduled interview cannot be cancelled
    221003 The interview status of unavailable sessions cannot be changed
    221004 Please disabled it after moving all Candidates out since this session has Candidate.
    221005 The current grid does not exist
    221006 Cancelled or locked interview appointments cannot be changed
    221007 Only appointment interviews whose status is unscheduled and scheduled can be modified
    221008 Interview appointment is closed
    221009 Only appointment interviews whose status is in schedule can be modified
    221010 No modification times
    221011 The status of interview is cannot schedule
    221012 The scheduled interview data is abnormal and the necessary fields are missing
    221013 Currently no time available
    221014 The current group does not exist
    221015 The application of scheduling interview does not exist
    221016 Unable to move the Candidate to disabled sessions
    221017 The targeted session is full
    221018 Archive reason cannot be found
    221019 Interview appointment is locked
    221020 Service calling abnormal
    221021 Abnormal data in scheduling interview association table
    221022 Modified time is the same as the scheduled time, no modification
    221023 Interviewer abnormal
    221024 Unable to re-lock the interview appointment in the current status
    300100 Template does not exist
    300101 Template name cannot be empty
    300102 The length of name cannot exceed {} characters
    300103 There is already a template with the same name in the system, please rename and try again
    300104 Unable to delete since this is a default template
    300105 Unknown template type
    300106 Office templates do not currently support error snapshots
    300200 Field name is empty
    300201 Field type is empty
    300202 Field type is invalid
    300203 Field name is too long
    300204 Field names cannot be same
    300205 Field name does not exist
    300206 Field must review
    300207 Wrong salary type
    300208 Field value is invalid
    300300 Must choose approver at each stage
    300301 Duplicate stage approver
    300302 Selected user does not exist
    300303 The user does not have the permission to operate department
    300304 Offer approval process does not exist
    300305 Offer approval status is empty
    300306 There is no approval node in this approval process
    300307 Failed to create approval process diary
    300308 Approval process id is empty
    300309 Approver list is empty
    300310 Unable to modify since Offer approval is in process
    300311 Not in offer approval status
    300312 Unable to set approval process since the Offer approval is in process
    300313 Offer approval process template does not exist
    300314 Offer approval process template id is empty
    300315 Unable to cancel since Offer approval is in process
    300316 There is an illegal offer approval status
    300317 accessToken is empty
    300318 foraward AccessToken produce failed
    300319 Offer approved
    300320 Unsupported Offer approval stage
    300321 Approval has been approved
    300322 This user is not the approver of the offer
    300323 Approval has been approved
    300400 Parameter error
    300401 Role error
    300402 User error
    300500 Interface return value error Error calling other services
    300501 User error Application does not exists
    300502 Application has been archived
    300503 Invalid address
    300504 Invalid job level
    300505 Send text processing error
    300506 Must pass application id
    300507 Position does not exist
    300508 Recruitment mode error
    300509 Application current stage error
    300510 hc cannot be associated
    300511 Job family exists
    300512 Failed to update onboarding date
    300513 Failed to update application
    300514 This application has been updated
    300515 Candidate does not exist
    300516 Candidate email is empty
    300517 Candidate phone is empty
    300518 Insufficient SMS balance
    300519 Failed to create operation record
    300520 Archive talent pool cannot be found
    300600 Offer does not exist
    300601 No approval process in Offer
    300602 Offer id is empty
    300603 Failed to get Offer attachment URL
    300604 Offer creator is empty
    300605 The position info in Offer is empty
    300606 Offer status error
    300607 Offer acceptance status does not exist
    300608 Offer has been accepted
    300609 Offer sending history has been accepted
    300610 Failed to delete Offer, please refresh and try again
    300611 Offer cannot be deleted since it's approval is in process
    300612 Offer has been existed in application
    300613 Offer sending history does not exist
    300614 Offer sending history has been processed or expired
    300615 Unable to edit Offer details
    300616 Failed to create Offer
    300617 Unable to send since Offer approval has been denied
    300618 The external system is not enabled to create Offer
    300619 Offer creator does not exist
    300620 This creator does not have the permission to creat offer
    300621 This user does not have the permission to send offer
    300622 Field cannot be empty
    300800 kafka consumption data abnormal
    400009 The following operation failed
    400010 Select position error
    400011 Position does not exist
    400012 Failed to read headhunting company settings!
    400013 Failed to get configuration info
    400014 Failed to get position info
    400015 Failed to get source info
    400016 Failed to clear Candidate token
    400017 The Candidate is in the protection
    400018 Position has been closed
    400019 Headhunter contract not found or contract invalid/disabled
    400020 Failed to get source info of headhunter
    400021 Candidate positions are not uniform
    400022 Initial screen does not exist
    500101 Beisen server abnormal
    500102 Beisen returns abnormal data
    500103 Unbound Beisen service
    500301 Nowcoder server abnormal
    500302 Nowcoder returns abnormal data
    500303 Unbound Nowcoder service
    700010 Failed to check similar Candidate
    700011 Failed to get Candidate info
    700012 Failed to get configuration info
    700013 Select position error
    700014 Position does not exist
    700015 Headhunter contract not found or contract invalid/disabled
    700016 Failed to get the result of checking similar Candidate under the same position