pipedrive / client-nodejs

Pipedrive API client for NodeJS
MIT License
204 stars 82 forks source link

Using custom fields with the TypeScript version #526

Closed tomtitherington closed 4 months ago

tomtitherington commented 4 months ago

Hello,

I'm using the latest TypeScript release candidate ^22.3.1-rc.4 to interact with the Pipedrive API. However, I've hit a blocker that I can't seem to solve.

I need to update custom fields on the Person entity via the API and was looking through the docs here. In the type UpdatePersonRequest there is no "custom_fields" property. I also couldn't see any support for custom fields in the DealsApi or LeadsApi.

Is sending custom fields via the TypeScript client supported? If so, how do I do that?

Thanks!

youssef-saber-3 commented 4 months ago

Hey @tomtitherington , thank you for reporting this, it seems to be an issue with the typescript types but the sdk/api itself should support updating custom fields if you pass their hash in the request.

to get the deal custom field hashes you can use the following

const dealFieldsApi = new DealFieldsApi(apiKeyConfig);
const fields = await dealFieldsApi.getDealFields();

and once you have the hash for the custom key you want to update you can send it with the following request

const dealsApi = new DealsApi(apiKeyConfig);
const data = await dealsApi.updateDeal({
    id: 4,
    UpdateDealRequest: {
        // @ts-ignore
        'e12f348118aed2ab3a243658e51fbf69a5cf630a': 'custom value',
        'f4b3d1d42afcc8b59850619f0ac3a07c892fbf62': 200,
    },
});

unfortunately you'll have to add a @ts-ignore on top of the custom field hash for now because the sdk doesn't allow unknown fields that aren't specified in the interface but we'll work on fixing that in a future release

youssef-saber-3 commented 4 months ago

I'll close this issue but feel free to re-open it if you still have any issues with it

tomtitherington commented 4 months ago

Ah okay, thanks for getting back to me so quickly @youssef-saber-3 !