This changelog introduces new queries and types primarily focused on automation features, including logs, simulations, and event handling. Additionally, it adds new capabilities for retrieving user suggestions.

👉 You can explore these updates in more detail directly in our GraphQL Page

New:

  • Queries:

    • automatedFormulaOperations: Added a new query to assist in retrieving automated formula operations.
    • automationEventAttributes: Added a new query to get details about automation event attributes.
    • automationInitialValues: Introduced a query for fetching initial values required for automation processes.
    • automationLogs: New query added for accessing automation logs by automation.
    • automationLogsByRepo: Allows querying of automation logs by repo ID.
    • automationSimulation: Added a query to retrive the automation simulation result by ID.
    • usersSuggestions: This new query provides the users suggestion by organization UUID.
  • Types:

    • AutomatedFormulaOperation: Added as a new type to define operations on automated formulas.
    • AutomationEventAttribute: Introduced as a new type for attributes related to automation events.
    • AutomationEventAttributes: Added to store a collection of automation event attributes.
    • AutomationLog: A new type that records the details of automation logs.
    • AutomationLogConnection: Helps in connecting various automation logs.
    • AutomationLogDetails: Provides detailed insights within an automation log.
    • AutomationLogEdge: Added to define edges between automation logs.
    • AutomationLogStatus: Represents the status of an automation log.
    • AutomationSimulation: A type for running simulations of automation workflows.
    • UsersSuggestions: A new type to represent user suggestions.
    • UsersSuggestionsConnection: Connects user suggestions data.
    • UsersSuggestionsEdge: Defines edges within user suggestions.

This update includes several enhancements and simplifications to improve the efficiency and usability of our API. Please review the changes, especially if they affect areas you are using, to ensure a smooth transition.

👉 You can explore these updates in more detail directly in our GraphQL Page

New

  • Enum value: Added document to InterfacePageElementType.
  • Mutation: Added addTagsToResource to manage resource tagging.
  • Mutation: Added phaseSettings to configure phase settings.
  • Mutation: Added setFavoritePipes to manage favorite pipes.
  • Query: Added agentsUsageDetails to provide details on agent usage.
  • Query: Added automation for retrieving automation details.
  • Query: Added automationActions to list automation actions.
  • Query: Added automationEvents for event management within automations.
  • Query: Added automationEventsByPhase for phased automation events.
  • Query: Added automations to handle multiple automation tasks.
  • Query: Added automationsUsageDetails to provide usage statistics for automations.
  • Query: Added field for field data retrieval.
  • Query: Added organizationSettings for accessing organization settings.
  • Query: Added tagsByCategory to categorize tags.
  • Query: Added tagsByCategoryOnResource to manage tags by category on resources.
  • Query: Added ticket for ticket management.
  • Query: Added troubleshootLlmError for troubleshooting errors.
  • Field: Added overridePreviousWithSameUrl as a Boolean input to CreateWebhookInput.
  • Field: Added url to FieldCondition.
  • Field: Added preferences to Organization and OrganizationInterface for user preferences management.
  • Field: Added canBeTagged to ConnectedTable, Pipe, Repo, Table to manage tag availability.
  • Field: Added tags to Table for tagging functionality.
  • Field: Added billable, canBeRemoved, and openNestedStartForm to InterfacesMember and User for user management.
  • Type Added: Expanded schema with new types such as ActiveProvider, AddTagsResourceInput, AddTagsResourcePayload, AgentsDetails, AiAutomationSuggestion, AiProvider, AiProviders, Automation, and many more.

Deprecated

No items have been deprecated in this update.

Removed

  • Type: OrganizationPermissionsInternalGQL has been completely removed.

Changed

  • Field Update: Organization.permissions changed from OrganizationPermissionsInternalGQL to OrganizationPermissions.
  • Field Update: OrganizationInterface.permissions changed from OrganizationPermissionsInternalGQL to OrganizationPermissions.
  • Field Update: OrganizationMember.groups changed from GroupConnection to BasicGroupConnection.

We're excited to introduce a significant update in how we handle errors in our GraphQL API! This change aims to enhance the development experience by providing a clearer and more consistent framework for dealing with error scenarios.

What Changed:

  1. Introduction of the "extensions" Key: Now, each error object in the "errors" array features an additional key called "extensions". This addition allows for including extra information about the error, beyond the basic data like "message", "locations", and "path".
  2. Standardization of the "code" Field: Within the "extensions" key, we've implemented the "code" field. This field provides a standardized error code for each type of error, making it easier to identify and handle encountered issues.
  3. New "correlation_id" Field: In addition to the error code, we've added the "correlation_id" field within "extensions". This unique correlation identifier aids in tracking and diagnosing problems.

Why It Matters:

  1. Clarity and Consistency: The new format offers a clearer and more consistent structure for error handling, making it easier for developers to understand and troubleshoot issues.
  2. Ease of Error Identification: With the standardization of the "code" field, developers can efficiently identify and handle different types of errors.
  3. Improved Tracking and Diagnostics: The "correlation_id" field provides a unique way to track and diagnose problems.

Old response:

{
 "data": {
   "deleteCard": null
 },
 "errors": [
   {
     "message": "Card not found with id: 00000000",
     "locations": [
       {
         "line": 32,
         "column": 3
       }
     ],
     "path": [
       "deleteCard"
     ],
     "code": 30003,
     "type": "ResourceNotFoundError"
   }
 ]
}

New response:

{
 "data": {
   "deleteCard": null
 },
 "errors": [
   {
     "message": "Card not found with id: 00000000",
     "locations": [
       {
         "line": 32,
         "column": 3
       }
     ],
     "path": [
       "deleteCard"
     ],
     "extensions": {
       "code": "RESOURCE_NOT_FOUND",
       "correlation_id": "fcc162735121ac9f71ceba9fb58a639e"
     }
   }
 ]
}

📘

See possible error codes in the documentation

We're confident that these enhancements will make the development experience with our GraphQL API even smoother and more efficient. If you have any questions or need further information on how to adapt to these changes, feel free to consult our updated documentation or reach out to our technical support team. We're here to assist you!

Pipefy released a new set of functionalities in our GraphQL API to enable user management in Organizations, Pipes and Tables.

We’ve created a new level of webhooks under organizations. It will listen to events in organizations like when inviting a user, accepting invitations, changing roles or if the user was removed from organization.

All webhook creation must be executed by organization Admin users.

createOrganizationWebhook

New actions:


  • user.invitation_sent
  • user.invitation_accepted
  • user.removal_from_org
  • user.role_set
mutation {
  createOrganizationWebhook(input: {
    organization_id: 22,
    actions: [
      "user.invitation_sent", "user.invitation_accepted", "user.removal_from_org", "user.role_set"
    ],
    name: "new webhook",
    url:"https://endpoint.com"
  }) {
    clientMutationId
  }
}

👍

You can check the GraphQL specification of the new mutation here:

https://api-docs.pipefy.com/reference/mutations/createOrganizationWebhook/

createWebhook

New actions:


  • user.removal_from_pipe
  • user.removal_from_table
  • user.role_set

- For Pipe


mutation {
  createWebhook(input: {
   	pipe_id: 22,
    actions: [
      "user.removal_from_pipe", "user.role_set"
    ],
    name: "new webhook",
    url:"https://endpoint.com"
  }) {
    clientMutationId
  }
}

- For Table

mutation {
  createWebhook(input: {
   	table_id: "ZdeRdE",
    actions: [
      "user.removal_from_table", "user.role_set"
    ],
    name: "new webhook",
    url:"https://endpoint.com"
  }) {
    clientMutationId
  }
}

👍

You can check the GraphQL specification of the new mutation here:

https://api-docs.pipefy.com/reference/mutations/createWebhook/

How to consult your webhooks

You can list all your webhooks using a query.

- For organizations:

{
  organization(id: 300623467) {
    id
    webhooks {
      id
      actions
      headers
      name
      url
    }
  }
}

- For pipes:

{
  pipe(id: 301858363){
    id
    webhooks {
      id
      name
      headers
      actions
      url
    }
  }
}

- For Tables:

{
  table(id: 301858363) {
    id
    webhooks{
      id
      name
      headers
      actions
      url
    }
  }
}

📘

Check also:

updateWebhook: https://api-docs.pipefy.com/reference/mutations/updateWebhook/
deleteWebhook: https://api-docs.pipefy.com/reference/mutations/deleteWebhook/
deleteOrganizationWebhook: https://api-docs.pipefy.com/reference/mutations/createOrganizationWebhook/

User Management Mutations

by João Nicolete

Pipefy released a new set of functionalities in our GraphQL API to enable user management in Organizations (a company’s account in Pipefy), Pipes (processes) and Tables (databases).

New mutations, queries and webhooks were created in order to manage users and their roles through API, enabling many possibilities of integrations between Pipefy and Active Directory or any other user provisioning application and helping administrators to have more control, governance and security over organization users.

All mutations must be executed by organization Admin users.

inviteMembers

This mutation allows the invitation of users to organizations, pipes and tables.

On organizations:

mutation {
  inviteMembers(input: {organization_id: 13,emails: { email: "[email protected]", role_name: "admin"}){
    clientMutationId
  }
}

For Pipes:

mutation {
  inviteMembers(input: {pipe_id: 13, emails:  { email: "[email protected]", role_name: "admin"}}){
    clientMutationId
  }
}

For tables:

mutation {
  inviteMembers(input: {table_id: 13, emails:  { email: "[email protected]", role_name: "admin"}}){
    clientMutationId
  }
}

👍

You can check the GraphQL specification of the new mutation here:

https://api-docs.pipefy.com/reference/mutations/inviteMembers/

removeUserFromOrg

This mutation allows the removal of a user from a org.

mutation {
  removeUserFromOrg(input: {organization_id: 44, email: "[email protected]"}) {
    clientMutationId
  }
}

👍

You can check the GraphQL specification of the new mutation here:

https://api-docs.pipefy.com/reference/mutations/removeUserFromOrg/

removeUserFromPipe

This mutation allow the removal of a user from a pipe.

mutation {
  removeUserFromRepo(input: {pipe_id: 44, email: "[email protected]"}) {
    clientMutationId
  }
}

👍

You can check the GraphQL specification of the new mutation here:

https://api-docs.pipefy.com/reference/mutations/removeUserFromPipe/

removeUserFromTable

This mutation allows the removal of a user from a table.

mutation {
  removeUserFromTable(input: {table_id: 44, email: "[email protected]"}) {
    clientMutationId
  }
}

👍

You can check the GraphQL specification of the new mutation here:

https://api-docs.pipefy.com/reference/mutations/removeUserFromTable/

1524

We released a new API mutation called updateFieldsValues that will allow users to update up to 30 fields in a single API call. This new mutation will improve the overall developer experience when handling batch updates and will significantly improve the speed of batch updates, by reducing the number of API calls.

Incremental updates

This new API mutation also allows developers to update fields that contain multiple data by just adding a new value or removing an existing value.
For example, to add a label to a label field, previously developers would need to do two API calls, an API call to get all existing labels, use this list to append the new label and then send to Pipefy in another API call the new list of all the labels. With the new mutation updateFieldsValues, developers can send an API mutation telling Pipefy to only add a new label to the existing list of labels in a​ field, the same applies to assignees, connections and checklists fields.

Sample GraphQL mutation

Updating two fields of a Card, replacing the what_s_your_name value and adding a new assignee to the who_s_responsible_for_approving assignee field.

mutation {
  updateFieldsValues(input: {
    nodeId: 1234
    values: [
      { fieldId: "what_s_your_name" value: "John Doe" },
      { fieldId: "who_s_responsible_for_approving" value: [123] operation: ADD },
    ]
  }) {
    success
    userErrors { field message }
    updatedNode {
      ... on Card {
        id
        fields {
          name
          value
        }
      }
    }
  }
}

👍

You can check the GraphQL specification of the new mutation here:

https://api-docs.pipefy.com/reference/mutations/updateFieldsValues/

We added support to retrieve card attachments -- we will return both attachments attached through the card and by the fields of type attachment. We added a new type called Attachment and we also added the attachments attribute inside the Card type.

Sample query:

{
  card(id: ID) {
    attachments {
      url
      createdAt
      createdBy {
        id
      }
    }
  }
}

Changelog

  • added: Attachment type
  • added: attachments attribute inside the Card type

We are happy to announce that now we support to filter and query card by the updated_at field inside the allCards query. This new feature will avoid the need to look through all cards to find the last updated ones for example.

Sample query:

query allCardUpdatedYesterday {
  allCards(first: 20, pipeId: 123,filter: { field: "updated_at", operator: gt, value: "2018-08-01T23:50:11-03:00"}) {
    edges {
      node {
        id
        title
      }
    }
  }
}

Changelog

  • added: updated_at filter inside allCards root query