Skip to content

Conversation

@sergio-eliot-rodriguez
Copy link
Collaborator

@sergio-eliot-rodriguez sergio-eliot-rodriguez commented Dec 8, 2025

Resolves #19198

from the requested actions

adds

create-contract-from-template
update-contract-metadata
update-contract-party
move-contract-stage

while
upload-signed-contract remains blocked and will be moved to a separate issue.

Summary by CodeRabbit

  • New Features
    • Create contracts from templates; move contracts between review and signing (with signature options, sequential signing, and messages); update contract metadata (typed validation/formatting) and party details.
    • New dynamic selectors for templates, documents, parties, metadata values, and tags; plus document type, entity type, scope, and target-stage selectors.
  • Chores
    • Fynk integration bumped to 0.1.0 and now includes an authenticated API client for backend operations.

✏️ Tip: You can customize this high-level summary in your review settings.

@vercel
Copy link

vercel bot commented Dec 8, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
pipedream-docs-redirect-do-not-edit Ignored Ignored Dec 9, 2025 7:13pm

@pipedream-component-development
Copy link
Collaborator

Thank you so much for submitting this! We've added it to our backlog to review, and our team has been notified.

@pipedream-component-development
Copy link
Collaborator

Thanks for submitting this PR! When we review PRs, we follow the Pipedream component guidelines. If you're not familiar, here's a quick checklist:

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 8, 2025

Warning

Rate limit exceeded

@sergio-eliot-rodriguez has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 6 minutes and 38 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 0b95252 and 5e93ded.

📒 Files selected for processing (1)
  • components/fynk/actions/update-contract-metadata/update-contract-metadata.mjs (1 hunks)

Walkthrough

Adds four new Fynk action modules, enriches the Fynk app with dynamic propDefinitions and an HTTP client exposing list/create/update/move methods, and bumps the component package version while adding a platform dependency.

Changes

Cohort / File(s) Summary
New Fynk Action Modules
components/fynk/actions/create-contract-from-template/create-contract-from-template.mjs, components/fynk/actions/move-contract-stage/move-contract-stage.mjs, components/fynk/actions/update-contract-metadata/update-contract-metadata.mjs, components/fynk/actions/update-contract-party/update-contract-party.mjs
Add default-export action descriptors. Each defines metadata, props, and a run that builds request payloads from props, calls the Fynk app client methods (createDocumentFromTemplate, moveDocumentToReview/moveDocumentToSigning, updateDocumentMetadataValue, updateDocumentParty), exports a summary, and returns API responses. move-contract-stage validates targetStage. update-contract-metadata includes comprehensive value-type formatting/validation.
Fynk App Integration
components/fynk/fynk.app.mjs
Populate propDefinitions with dynamic option loaders (templateUuid, documentUuid, partyUuid, metadataValueUuid, tagUuids) and static selects (documentType, entityType, scope, targetStage); add HTTP client utilities (_baseUrl, _getHeaders, _makeRequest) and API methods (listTemplates, listDocuments, listDocumentParties, listDocumentMetadataValues, listTags, createDocumentFromTemplate, updateDocumentMetadataValue, updateDocumentParty, moveDocumentToReview, moveDocumentToSigning); import axios.
Package Configuration
components/fynk/package.json
Bump package version from 0.0.1 to 0.1.0 and add dependency "@pipedream/platform": "^3.1.0".

Sequence Diagram(s)

sequenceDiagram
    participant Action as Action Module
    participant App as Fynk App Client
    participant Auth as Auth Store
    participant API as Fynk HTTP API

    Action->>App: call method (e.g., createDocumentFromTemplate / moveDocumentToSigning / updateDocumentParty) with props
    App->>Auth: read this.$auth.api_token
    App->>App: _getHeaders() build headers (Authorization, Accept, Content-Type)
    App->>API: _makeRequest(path, method, data/params, headers)
    API-->>App: response (200/201)
    App-->>Action: return API response
    Action->>Action: $.export("$summary", ...)
    Action-->>Caller: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Inspect _makeRequest for header merging, error propagation, and axios usage.
  • Verify endpoint paths, HTTP methods, and payload shapes (camelCase → snake_case).
  • Review propDefinition option loaders and dependent mappings for partyUuid and metadataValueUuid.
  • Validate formatting/validation logic in update-contract-metadata and branching in move-contract-stage.

Suggested labels

User submitted

Suggested reviewers

  • GTFalcao
  • lcaresia
  • psavkar

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Fynk components' is vague and generic, lacking specificity about which actions are being added or what the primary change entails. Consider using a more descriptive title like 'Add Fynk component actions: create, update, and move contract operations' to clearly communicate the scope of changes.
✅ Passed checks (4 passed)
Check name Status Explanation
Description check ✅ Passed The pull request description identifies the linked issue and lists the four implemented actions, but does not follow the required template structure with explicit 'WHY' section.
Linked Issues check ✅ Passed The PR implements four of five requested actions: create-contract-from-template, update-contract-metadata, update-contract-party, and move-contract-stage, all with appropriate API integration and prop definitions [#19198].
Out of Scope Changes check ✅ Passed All changes are scoped to implementing the four requested Fynk component actions and supporting app configuration; no out-of-scope modifications detected.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a5e39f4 and 6497d12.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (6)
  • components/fynk/actions/create-contract-from-template/create-contract-from-template.mjs (1 hunks)
  • components/fynk/actions/move-contract-stage/move-contract-stage.mjs (1 hunks)
  • components/fynk/actions/update-contract-metadata/update-contract-metadata.mjs (1 hunks)
  • components/fynk/actions/update-contract-party/update-contract-party.mjs (1 hunks)
  • components/fynk/fynk.app.mjs (1 hunks)
  • components/fynk/package.json (2 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.

Applied to files:

  • components/fynk/package.json
📚 Learning: 2025-09-15T22:01:11.472Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 18362
File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105
Timestamp: 2025-09-15T22:01:11.472Z
Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.

Applied to files:

  • components/fynk/fynk.app.mjs
🧬 Code graph analysis (4)
components/fynk/actions/update-contract-metadata/update-contract-metadata.mjs (3)
components/fynk/actions/create-contract-from-template/create-contract-from-template.mjs (1)
  • response (48-51)
components/fynk/actions/move-contract-stage/move-contract-stage.mjs (1)
  • response (70-70)
components/fynk/actions/update-contract-party/update-contract-party.mjs (1)
  • response (81-86)
components/fynk/actions/create-contract-from-template/create-contract-from-template.mjs (3)
components/fynk/actions/move-contract-stage/move-contract-stage.mjs (2)
  • data (77-81)
  • response (70-70)
components/fynk/actions/update-contract-party/update-contract-party.mjs (2)
  • data (73-79)
  • response (81-86)
components/fynk/actions/update-contract-metadata/update-contract-metadata.mjs (1)
  • response (44-51)
components/fynk/fynk.app.mjs (4)
components/fynk/actions/create-contract-from-template/create-contract-from-template.mjs (1)
  • data (42-46)
components/fynk/actions/move-contract-stage/move-contract-stage.mjs (1)
  • data (77-81)
components/fynk/actions/update-contract-party/update-contract-party.mjs (1)
  • data (73-79)
components/whatsapp_business/actions/send-text-using-template/send-text-using-template.mjs (1)
  • template (42-44)
components/fynk/actions/move-contract-stage/move-contract-stage.mjs (3)
components/fynk/actions/create-contract-from-template/create-contract-from-template.mjs (2)
  • response (48-51)
  • data (42-46)
components/fynk/actions/update-contract-metadata/update-contract-metadata.mjs (1)
  • response (44-51)
components/fynk/actions/update-contract-party/update-contract-party.mjs (2)
  • response (81-86)
  • data (73-79)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: pnpm publish
  • GitHub Check: Lint Code Base
🔇 Additional comments (3)
components/fynk/actions/create-contract-from-template/create-contract-from-template.mjs (1)

1-56: Create-from-template action matches documented endpoint; minor UX clarification

Props map cleanly to the API (template_uuid, optional name, optional owner_emails) and the call into createDocumentFromTemplate uses the correct path for POST /documents/create-from-template. (help.fynk.com) The success summary reading from response.data.name / .uuid is also consistent with the documented document resource.

You might just clarify in the ownerEmails description that it expects a list (array) of email strings, not a comma‑separated string, to avoid confusion in the UI.

components/fynk/actions/update-contract-party/update-contract-party.mjs (1)

1-91: Party update action cleanly maps props to API payload

The dependent documentUuidpartyUuid selection is wired correctly, and the payload maps 1:1 to the expected fields for PUT /documents/{document}/parties/{party} (entity_type, entity_name, address, plus optional reference and scope). (help.fynk.com) The summary message gives a clear audit trail including both party and contract UUIDs. The note in the entityName description about needing a non‑null value to reach the signing stage is a helpful hint; no further changes needed from my side here.

components/fynk/package.json (1)

3-17: Version bump and platform dependency look consistent

0.1.0 aligns with the new Fynk actions, and adding @pipedream/platform matches the axios usage in fynk.app.mjs. Confirm that the ^3.1.0 version range matches other components in the repo for consistency.

Copy link
Collaborator

@GTFalcao GTFalcao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! I made minor suggestions on some prop descriptions

…ontract-from-template.mjs


Improved component description.

Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
…ct-metadata.mjs


Improved component description

Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
…e.mjs


Improved component description

Co-authored-by: Guilherme Falcão <48412907+GTFalcao@users.noreply.github.com>
…party.mjs


Improved component descriptions

Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
Copy link
Collaborator

@michelle0927 michelle0927 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Moving to QA. Just remember to change the errors to ConfigurationErrors before publishing.

…e.mjs


Using ConfigurationError from @pipedream/platform to handle errors

Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
…e.mjs


Using ConfigurationError from @pipedream/platform to handle errors

Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ea79f26 and 0b95252.

📒 Files selected for processing (1)
  • components/fynk/actions/move-contract-stage/move-contract-stage.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.

Applied to files:

  • components/fynk/actions/move-contract-stage/move-contract-stage.mjs
🧬 Code graph analysis (1)
components/fynk/actions/move-contract-stage/move-contract-stage.mjs (3)
components/fynk/actions/update-contract-party/update-contract-party.mjs (2)
  • response (81-86)
  • data (73-79)
components/fynk/actions/create-contract-from-template/create-contract-from-template.mjs (2)
  • response (48-51)
  • data (42-46)
components/fynk/actions/update-contract-metadata/update-contract-metadata.mjs (1)
  • response (230-237)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (1)
components/fynk/actions/move-contract-stage/move-contract-stage.mjs (1)

1-14: Imports and action metadata look consistent with other Fynk components

The import of the fynk app and ConfigurationError, plus the key / name / annotations and type: "action" all align with Pipedream’s conventions for non‑read‑only actions that mutate external state. No changes needed here.

Please just double‑check that @pipedream/platform is declared in components/fynk/package.json at the expected version so this import resolves correctly.

…ct-metadata.mjs


Using ConfigurationError from @pipedream/platform when handling errors.

Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
…ct-metadata.mjs


Using ConfigurationError from @pipedream/platform when handling error.

Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
@sergio-eliot-rodriguez sergio-eliot-rodriguez dismissed michelle0927’s stale review December 9, 2025 19:25

I addressed hey comments about using ConfigurationError via @pipedream/platform when handling errors. After that, she said it was fine to move the PR to the "Ready for QA" status.

@sergio-eliot-rodriguez
Copy link
Collaborator Author

fyi @vunguyenhung this is ready for QA

@vunguyenhung
Copy link
Collaborator

Hi everyone, all test cases are passed! Ready for release!

Test reports

@michelle0927 michelle0927 merged commit dd65b8e into PipedreamHQ:master Dec 10, 2025
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Components] fynk

5 participants