{
  "service": "twenty_crm",
  "displayName": "Twenty CRM",
  "categories": [
    "Productivity",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "twenty_api_key",
      "description": "Twenty API key sent as a Bearer token. Create a key in Settings > API & Webhooks > Create key in your Twenty workspace: https://docs.twenty.com/developers/extend/api",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://twenty.com",
  "actions": [
    {
      "id": "twenty_crm.create_record",
      "service": "twenty_crm",
      "name": "create_record",
      "description": "Create one Twenty record for a workspace object.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "objectNamePlural": {
            "type": "string",
            "minLength": 1,
            "description": "The Twenty plural object API name, such as companies, people, opportunities, or a custom object plural name."
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object accepted or returned by Twenty."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for writing a Twenty record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Twenty record."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Twenty API response object."
          }
        },
        "additionalProperties": false,
        "description": "Output payload for a created Twenty record."
      }
    },
    {
      "id": "twenty_crm.delete_record",
      "service": "twenty_crm",
      "name": "delete_record",
      "description": "Delete one Twenty record by object API name and record UUID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "objectNamePlural": {
            "type": "string",
            "minLength": 1,
            "description": "The Twenty plural object API name, such as companies, people, opportunities, or a custom object plural name."
          },
          "id": {
            "type": "string",
            "description": "The Twenty record UUID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving one Twenty record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A Twenty record."
              },
              {
                "type": "null"
              }
            ]
          },
          "success": {
            "type": "boolean",
            "description": "Whether Twenty reported the delete operation as successful."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Twenty API response object."
          }
        },
        "additionalProperties": false,
        "description": "Output payload for a deleted Twenty record."
      }
    },
    {
      "id": "twenty_crm.list_metadata_objects",
      "service": "twenty_crm",
      "name": "list_metadata_objects",
      "description": "List Twenty metadata objects for the connected workspace.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input parameters for listing Twenty metadata objects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "objects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Twenty metadata object definition."
            },
            "description": "The Twenty metadata object definitions."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Twenty API response object."
          }
        },
        "additionalProperties": false,
        "description": "Output payload for Twenty metadata objects."
      }
    },
    {
      "id": "twenty_crm.list_records",
      "service": "twenty_crm",
      "name": "list_records",
      "description": "List Twenty records for one workspace object using the generated schema-per-tenant REST API.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "objectNamePlural": {
            "type": "string",
            "minLength": 1,
            "description": "The Twenty plural object API name, such as companies, people, opportunities, or a custom object plural name."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200,
            "description": "The maximum number of records to return."
          },
          "startingAfter": {
            "type": "string",
            "description": "The Twenty record UUID.",
            "format": "uuid"
          },
          "endingBefore": {
            "type": "string",
            "description": "The Twenty record UUID.",
            "format": "uuid"
          },
          "filter": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object accepted or returned by Twenty."
          },
          "orderBy": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object accepted or returned by Twenty."
          },
          "depth": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10,
            "description": "The relation depth to include in the returned records."
          }
        },
        "additionalProperties": false,
        "required": [
          "objectNamePlural"
        ],
        "description": "Input parameters for listing Twenty records."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "records": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A Twenty record."
            },
            "description": "The Twenty records returned by the API."
          },
          "pageInfo": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Pagination metadata returned by Twenty."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Twenty API response object."
          }
        },
        "additionalProperties": false,
        "description": "Output payload for a Twenty record listing."
      }
    },
    {
      "id": "twenty_crm.retrieve_record",
      "service": "twenty_crm",
      "name": "retrieve_record",
      "description": "Retrieve one Twenty record by object API name and record UUID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "objectNamePlural": {
            "type": "string",
            "minLength": 1,
            "description": "The Twenty plural object API name, such as companies, people, opportunities, or a custom object plural name."
          },
          "id": {
            "type": "string",
            "description": "The Twenty record UUID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving one Twenty record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Twenty record."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Twenty API response object."
          }
        },
        "additionalProperties": false,
        "description": "Output payload for one Twenty record."
      }
    },
    {
      "id": "twenty_crm.update_record",
      "service": "twenty_crm",
      "name": "update_record",
      "description": "Update one Twenty record by object API name and record UUID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "objectNamePlural": {
            "type": "string",
            "minLength": 1,
            "description": "The Twenty plural object API name, such as companies, people, opportunities, or a custom object plural name."
          },
          "id": {
            "type": "string",
            "description": "The Twenty record UUID.",
            "format": "uuid"
          },
          "data": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A JSON object accepted or returned by Twenty."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for updating a Twenty record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A Twenty record."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Twenty API response object."
          }
        },
        "additionalProperties": false,
        "description": "Output payload for an updated Twenty record."
      }
    }
  ]
}
