Clone
This method creates a new Job (similar to the Add method) - and allows to queue its corresponding Posts - based on another already existing Job.
While a typical workflow will involve your system storing the Job's details, you can obtain all the Core and Extra Fields of a given Job through the Job Management webservice when reposting, for example to pre-fill them in your UI when following the Direct Posting approach. It is required to include all the data - same as for the Add method - in the XML when reposting, even if some of the fields will not be changed.
The reference field must be changed from the original Job when using this method.
Endpoint
POST https://ws.idibu.com/clients/api/REMOTE/V3/[client-hash]
Query parameters
| Parameter Name | Type restrictions | Required? | Notes |
|---|---|---|---|
xml_text | String | Yes | The full query XML (see the Query format below), URL-encoded within the parameter. |
Query format
The only difference from the Add method is the required addition of the id attribute as part of the <job> element. This ID is always obtainable in the API response of a successful posting, as well as through the Job Management webservice - and, in this method, identifies which Job's details will be used as the basis for a new Job.
The format is therefore identical to the Repost method.
<idibu>
<method>clone</method>
<config> <!-- required; refer to https://docs.idibu.com/docs/v2/posting-api/config-section -->
<utf8_enable>yes</utf8_enable>
<lockboards>[yes|no|yes_pcp]</lockboards>
<partnerid>[string]</partnerid>
<show_durations>[yes|no]</show_durations>
<redirecturl>[string:url]</redirecturl>
<returnurl>[string:url]</returnurl>
<continue>[string]</continue>
</config>
<job id="[integer]"> <!-- required; refer to https://docs.idibu.com/docs/v2/posting-api/job-section -->
<title>[string]</title>
<reference>[string]</reference> <!-- must be different than the original posting -->
<description>[string]</description>
<startdate>[string:date]</startdate>
<duration>[string]</duration>
<salarymin>[string:numeric]</salarymin>
<salarymax>[string:numeric]</salarymax>
<salaryper value="[annum|hour|day|week|month]"/>
<salaryextras>[string]</salaryextras>
<currency>[string:iso3]</currency>
<jobtype id="[1|2|4]"/>
<job_time>[1|2]</job_time>
<category id="[integer]"/>
<location id="[integer]"/>
<sublocation id="[integer]"/>
<publish>[string:date]</publish>
<app_url>[string:url]</app_url> <!-- refer to https://docs.idibu.com/docs/v2/posting-api/dynamic-core-fields -->
<salaryOverride>[string]</salaryOverride> <!-- refer to https://docs.idibu.com/docs/v2/posting-api/dynamic-core-fields -->
<startDateOverride>[string]</startDateOverride> <!-- refer to https://docs.idibu.com/docs/v2/posting-api/dynamic-core-fields -->
<sender id="[integer]"/> <!-- refer to https://docs.idibu.com/docs/v2/posting-api/sender-info -->
</job>
<posts> <!-- optional; refer to https://docs.idibu.com/docs/v2/posting-api/posts-section -->
<board id="[integer]"> <!-- Portal ID; multiple allowed; each item will generate one posting attempt -->
<duration days="[integer]" />
<extrafield name="[string]">[string]</extrafield> <!-- multiple allowed; data provided as the element's value -->
<extrafield name="[string]"> <!-- multiple allowed; for type=select, values are provided as 'item' elements below -->
<item id="[string]" /> <!-- multiple allowed if multi=true -->
</extrafield>
</board>
</posts>
</idibu>
Response format
The response does not differ in any way from the Add and Repost methods, and will therefore not clearly indicate the method used - this piece of information must be handled on the Partner's side.
<idibu>
<job status="[added|delayed|failed]" id="[integer]" postingid="[integer]">
<!-- "status" - 'added' indicates successful Direct Posting; 'delayed' means a PCP was generated; 'failed' signals a fatal error that prevented the posting -->
<!-- "id" - Job ID; make sure to save and store this, as it's used for all other methods, as well as the https://docs.idibu.com/docs/v2/webservices/job-management -->
<!-- "postingid" - ID of the generated PCP - for idibu's internal debugging purposes only -->
<posts> <!-- only for Direct Postings -->
<posts status="[pending|failed]" boardid="[integer]" queueid="[integer]" type="add" publish="[string:date]" duration="[integer]" /> <!-- one for each 'board' element from the jobposting XML -->
<!-- "status" - 'pending' means the Post was queued successfully; 'failed' indicates the Post was not created -->
<!-- "boardid" - ID of the Portal to which the Post has been created -->
<!-- "queueid" - ID of the Post while it's in the Posting Queue; can be used to cancel the posting - see https://docs.idibu.com/docs/v2/posting-api/cancel -->
<!-- "type" - always 'add' for this method -->
<!-- "publish" - the earliest time when the system will attempt to send the Post (YYYY-MM-DD HH:mm); delays may occur -->
<!-- "duration" - how many days before the Post expires; refer to https://docs.idibu.com/docs/v2/posting-api/posts-section#duration -->
</posts>
<postcompletionurl>[string:url]</postcompletionurl> <!-- only if no Direct Posting succeeded; link to the generated PCP to which the user should be redirected to complete the posting process; refer to https://docs.idibu.com/docs/v2/posting-api/pcp -->
</job>
<log>
<errors> <!-- if errors are present, the request will either fail or Direct Posting will not succeed and PCP will be generated instead -->
<error field="[string]" type="[string:enum]" boardid="[integer]" required="[yes|no]">[string]</error> <!-- an error message that refers to a specific Extra Field -->
</errors>
<!-- "field" - name of the Extra Field to which the error pertains -->
<!-- "type" - type of the field - refer to https://docs.idibu.com/docs/v2/posting-api/portal-information#extra-fields -->
<!-- "boardid" - Portal ID to which the Extra Field belongs -->
<!-- "required" - whether the field is mandatory or optional -->
<error>[string]</error> <!-- a general error message relating to the request format, account setup, or core posting data -->
</errors>
<warnings> <!-- warnings are only informational and will not affect the request itself -->
<warning field="[string]" type="[string:enum]" boardid="[integer]" required="[yes|no]">[string]</warning> <!-- a warning message that refers to a specific Extra Field -->
<!-- "field" - name of the Extra Field to which the warning pertains -->
<!-- "type" - type of the field - refer to https://docs.idibu.com/docs/v2/posting-api/portal-information#extra-fields -->
<!-- "boardid" - Portal ID to which the Extra Field belongs -->
<!-- "required" - whether the field is mandatory or optional -->
<warning>[string]</warning> <!-- a general warning message relating to the request format, account setup, or core posting data -->
</warnings>
</log>
</idibu>
Examples - Direct Posting
In order to perform a Direct Posting, the lockboards parameter of the XML's Config section must be set to yes and all required data needs to be correctly provided in the Posts section - otherwise, a Post Completion Page will be generated, meaning that a Job has been added, but no Posts will be created until the PCP is accessed and manually completed.
The example is for Portal ID 1234 - idibu Test Portal.
Example request
<?xml version="1.0" encoding="UTF-8"?>
<idibu>
<method>clone</method>
<config>
<utf8_enable>yes</utf8_enable>
<lockboards>yes</lockboards>
</config>
<job id="12345">
<title><![CDATA[Job Title]]></title>
<reference><![CDATA[WH6-QRD]]></reference>
<description><![CDATA[<strong>This is a test job.</strong><br/><em>Please ignore and do not apply</em>]]></description>
<startdate>2025-07-01</startdate>
<duration>1 month</duration>
<salarymin>12.34</salarymin>
<salarymax>56.78</salarymax>
<salaryper value="hour"/>
<salaryextras><![CDATA[Job benefits]]></salaryextras>
<currency>USD</currency>
<jobtype id="1"/>
<job_time>2</job_time>
<category id="31"/>
<location id="GB"/>
<sublocation id="1024195"/>
<publish>2025-06-15</publish>
<app_url><![CDATA[https://www.idibu.com]]></app_url>
<salaryOverride><![CDATA[Textual salary override]]></salaryOverride>
<startDateOverride><![CDATA[Textual start date override]]></startDateOverride>
<sender id="56789"/>
<posts>
<board id="1234">
<duration days="7" />
<extrafield name="idibutest_text"><![CDATA[Text field value]]></extrafield>
<extrafield name="idibutest_area">
<![CDATA[Text area value.
Newlines allowed.
HTML not supported.]]>
</extrafield>
<extrafield name="idibutest_select">
<item id="3" />
</extrafield>
<extrafield name="idibutest_multi">
<item id="one" />
<item id="three" />
<item id="five" />
</extrafield>
<extrafield name="idibutest_double" parent="p2">
<item id="c21" />
</extrafield>
<extrafield name="idibutest_dmulti" parent="pm3">
<item id="cm31" />
<item id="cm32" />
<item id="cm33" />
</extrafield>
</board>
</posts>
</job>
</idibu>
</idibu>
Example successful response
<?xml version="1.0" encoding="UTF-8" ?>
<idibu>
<job status="added" id="12345">
<posts>
<posts status="pending" boardid="1234" queueid="6543210" type="add" publish="2025-06-15 00:01" duration="7" />
</posts>
</job>
<log/>
</idibu>
Examples - Post Completion Page
To make sure the Post Completion Page is always generated, the lockboards parameter of the XML's Config section must be set to either no or yes_pcp (the latter will not allow the user to select Portals other than the ones specified in the XML). PCP will also generate - no matter the config - if some required data (particularly the Extra Fields) is missing.
Example request
<?xml version="1.0" encoding="UTF-8"?>
<idibu>
<method>clone</method>
<config>
<utf8_enable>yes</utf8_enable>
<lockboards>no</lockboards>
<partnerid>idibu</partnerid>
<show_durations>yes</show_durations>
<redirecturl><![CDATA[https://www.idibu.com]]></redirecturl>
<returnurl><![CDATA[https://ws.idibu.com/clients/upp/index.php?hash=1a2b3c4d5e6f7g8h9i0j&senderId=56789&partnerId=idibu]]></returnurl>
<continue>9z8y7x6w5u4t3s2r1p0o</continue>
</config>
<job id="12345">
<title><![CDATA[Job Title]]></title>
<reference><![CDATA[WH6-QRD]]></reference>
<description><![CDATA[Job<br/>Description]]></description>
<startdate>2025-07-01</startdate>
<duration>1 month</duration>
<salarymin>12.34</salarymin>
<salarymax>56.78</salarymax>
<salaryper value="hour"/>
<salaryextras><![CDATA[Job benefits]]></salaryextras>
<currency>USD</currency>
<jobtype id="1"/>
<job_time>2</job_time>
<category id="31"/>
<location id="GB"/>
<sublocation id="1024195"/>
<publish>2025-06-15</publish>
<app_url><![CDATA[https://www.idibu.com]]></app_url>
<salaryOverride><![CDATA[Textual salary override]]></salaryOverride>
<startDateOverride><![CDATA[Textual start date override]]></startDateOverride>
<sender id="56789"/>
<posts/>
</job>
</idibu>
Example successful response
<?xml version="1.0" encoding="UTF-8"?>
<idibu>
<job status="delayed" id="12345" postingid="543210">
<postcompletionurl>https://adpost.idibu.com/aBcDeFgHi.html</postcompletionurl>
</job>
<log>
<warnings>
<warning>At least one BOARD tag is missing the id parameter.(tag board position 0)</warning>
<warning>No valid boards were found suitable for posting</warning>
</warnings>
</log>
</idibu>