diff --git a/.github/actions/publish-twenty-app/action.yaml b/.github/actions/publish-twenty-app/action.yaml deleted file mode 100644 index c0cbe1f57e2..00000000000 --- a/.github/actions/publish-twenty-app/action.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: Publish Twenty App -description: Build and publish a Twenty app to npm with provenance - -inputs: - npm-token: - description: npm token with publish permissions - required: true - npm-tag: - description: npm dist-tag - required: false - default: latest - app-path: - description: Path to the app directory - required: false - default: '.' - -runs: - using: composite - steps: - - uses: actions/setup-node@v4 - with: - node-version: '24' - registry-url: https://registry.npmjs.org - - - name: Install and build - shell: bash - working-directory: ${{ inputs.app-path }} - run: | - yarn install --immutable - npx twenty app:build - - - name: Publish with provenance - shell: bash - working-directory: ${{ inputs.app-path }}/.twenty/output - env: - NODE_AUTH_TOKEN: ${{ inputs.npm-token }} - run: npm publish --provenance --access public --tag ${{ inputs.npm-tag }} diff --git a/packages/create-twenty-app/src/utils/app-template.ts b/packages/create-twenty-app/src/utils/app-template.ts index ef4a013672a..e7fe809fa15 100644 --- a/packages/create-twenty-app/src/utils/app-template.ts +++ b/packages/create-twenty-app/src/utils/app-template.ts @@ -163,9 +163,16 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: twentyhq/twenty/.github/actions/publish-twenty-app@main + - uses: actions/setup-node@v4 with: - npm-token: \${{ secrets.NPM_TOKEN }} + node-version: '24' + registry-url: https://registry.npmjs.org + - run: yarn install --immutable + - run: npx twenty app:build + - run: npm publish --provenance --access public + working-directory: .twenty/output + env: + NODE_AUTH_TOKEN: \${{ secrets.NPM_TOKEN }} `; await fs.writeFile(join(workflowDir, 'publish.yml'), workflowContent); diff --git a/packages/twenty-docs/developers/extend/api.mdx b/packages/twenty-docs/developers/extend/api.mdx new file mode 100644 index 00000000000..4c7e8a4a0d9 --- /dev/null +++ b/packages/twenty-docs/developers/extend/api.mdx @@ -0,0 +1,140 @@ +--- +title: APIs +description: Query and modify your CRM data programmatically using REST or GraphQL. +--- + +import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; + +Twenty was built to be developer-friendly, offering powerful APIs that adapt to your custom data model. We provide four distinct API types to meet different integration needs. + +## Developer-First Approach + +Twenty generates APIs specifically for your data model: +- **No long IDs required**: Use your object and field names directly in endpoints +- **Standard and custom objects treated equally**: Your custom objects get the same API treatment as built-in ones +- **Dedicated endpoints**: Each object and field gets its own API endpoint +- **Custom documentation**: Generated specifically for your workspace's data model + + +Your personalized API documentation is available under **Settings → API & Webhooks** after creating an API key. Since Twenty generates APIs that match your custom data model, the documentation is unique to your workspace. + + +## The Two API Types + +### Core API +Accessed on `/rest/` or `/graphql/` + +Work with your actual **records** (the data): +- Create, read, update, delete People, Companies, Opportunities, etc. +- Query and filter data +- Manage record relationships + +### Metadata API +Accessed on `/rest/metadata/` or `/metadata/` + +Manage your **workspace and data model**: +- Create, modify, or delete objects and fields +- Configure workspace settings +- Define relationships between objects + +## REST vs GraphQL + +Both Core and Metadata APIs are available in REST and GraphQL formats: + +| Format | Available Operations | +|--------|---------------------| +| **REST** | CRUD, batch operations, upserts | +| **GraphQL** | Same + **batch upserts**, relationship queries in one call | + +Choose based on your needs — both formats access the same data. + +## API Endpoints + +| Environment | Base URL | +|-------------|----------| +| **Cloud** | `https://api.twenty.com/` | +| **Self-Hosted** | `https://{your-domain}/` | + +## Authentication + +Every API request requires an API key in the header: + +``` +Authorization: Bearer YOUR_API_KEY +``` + +### Create an API Key + +1. Go to **Settings → APIs & Webhooks** +2. Click **+ Create key** +3. Configure: + - **Name**: Descriptive name for the key + - **Expiration Date**: When the key expires +4. Click **Save** +5. **Copy immediately** — the key is only shown once + + + + +Your API key grants access to sensitive data. Don't share it with untrusted services. If compromised, disable it immediately and generate a new one. + + +### Assign a Role to an API Key + +For better security, assign a specific role to limit access: + +1. Go to **Settings → Roles** +2. Click on the role to assign +3. Open the **Assignment** tab +4. Under **API Keys**, click **+ Assign to API key** +5. Select the API key + +The key will inherit that role's permissions. See [Permissions](/user-guide/permissions-access/capabilities/permissions) for details. + +### Manage API Keys + +**Regenerate**: Settings → APIs & Webhooks → Click key → **Regenerate** + +**Delete**: Settings → APIs & Webhooks → Click key → **Delete** + +## API Playground + +Test your APIs directly in the browser with our built-in playground — available for both **REST** and **GraphQL**. + +### Access the Playground + +1. Go to **Settings → APIs & Webhooks** +2. Create an API key (required) +3. Click on **REST API** or **GraphQL API** to open the playground + +### What You Get + +- **Interactive documentation**: Generated for your specific data model +- **Live testing**: Execute real API calls against your workspace +- **Schema explorer**: Browse available objects, fields, and relationships +- **Request builder**: Construct queries with autocomplete + +The playground reflects your custom objects and fields, so documentation is always accurate for your workspace. + +## Batch Operations + +Both REST and GraphQL support batch operations: +- **Batch size**: Up to 60 records per request +- **Operations**: Create, update, delete multiple records + +**GraphQL-only features:** +- **Batch Upsert**: Create or update in one call +- Use plural object names (e.g., `CreateCompanies` instead of `CreateCompany`) + +## Rate Limits + +API requests are throttled to ensure platform stability: + +| Limit | Value | +|-------|-------| +| **Requests** | 100 calls per minute | +| **Batch size** | 60 records per call | + + +Use batch operations to maximize throughput — process up to 60 records in a single API call instead of making individual requests. + diff --git a/packages/twenty-docs/developers/extend/apps/building.mdx b/packages/twenty-docs/developers/extend/apps/building.mdx new file mode 100644 index 00000000000..1a695c79feb --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/building.mdx @@ -0,0 +1,677 @@ +--- +title: Building Apps +description: Define objects, logic functions, front components, and more with the Twenty SDK. +--- + + +Apps are currently in alpha testing. The feature is functional but still evolving. + + +## Use the SDK resources (types & config) + +The twenty-sdk provides typed building blocks and helper functions you use inside your app. Below are the key pieces you'll touch most often. + +### Helper functions + +The SDK provides helper functions for defining your app entities. As described in [Entity detection](/developers/extend/apps/getting-started#entity-detection), you must use `export default define({...})` for your entities to be detected: + +| Function | Purpose | +|----------|---------| +| `defineApplication` | Configure application metadata (required, one per app) | +| `defineObject` | Define custom objects with fields | +| `defineLogicFunction` | Define logic functions with handlers | +| `definePreInstallLogicFunction` | Define a pre-install logic function (one per app) | +| `definePostInstallLogicFunction` | Define a post-install logic function (one per app) | +| `defineFrontComponent` | Define front components for custom UI | +| `defineRole` | Configure role permissions and object access | +| `defineField` | Extend existing objects with additional fields | +| `defineView` | Define saved views for objects | +| `defineNavigationMenuItem` | Define sidebar navigation links | +| `defineSkill` | Define AI agent skills | + +These functions validate your configuration at build time and provide IDE autocompletion and type safety. + +### Defining objects + +Custom objects describe both schema and behavior for records in your workspace. Use `defineObject()` to define objects with built-in validation: + +```typescript +// src/app/postCard.object.ts +import { defineObject, FieldType } from 'twenty-sdk'; + +enum PostCardStatus { + DRAFT = 'DRAFT', + SENT = 'SENT', + DELIVERED = 'DELIVERED', + RETURNED = 'RETURNED', +} + +export default defineObject({ + universalIdentifier: '54b589ca-eeed-4950-a176-358418b85c05', + nameSingular: 'postCard', + namePlural: 'postCards', + labelSingular: 'Post Card', + labelPlural: 'Post Cards', + description: 'A post card object', + icon: 'IconMail', + fields: [ + { + universalIdentifier: '58a0a314-d7ea-4865-9850-7fb84e72f30b', + name: 'content', + type: FieldType.TEXT, + label: 'Content', + description: "Postcard's content", + icon: 'IconAbc', + }, + { + universalIdentifier: 'c6aa31f3-da76-4ac6-889f-475e226009ac', + name: 'recipientName', + type: FieldType.FULL_NAME, + label: 'Recipient name', + icon: 'IconUser', + }, + { + universalIdentifier: '95045777-a0ad-49ec-98f9-22f9fc0c8266', + name: 'recipientAddress', + type: FieldType.ADDRESS, + label: 'Recipient address', + icon: 'IconHome', + }, + { + universalIdentifier: '87b675b8-dd8c-4448-b4ca-20e5a2234a1e', + name: 'status', + type: FieldType.SELECT, + label: 'Status', + icon: 'IconSend', + defaultValue: `'${PostCardStatus.DRAFT}'`, + options: [ + { value: PostCardStatus.DRAFT, label: 'Draft', position: 0, color: 'gray' }, + { value: PostCardStatus.SENT, label: 'Sent', position: 1, color: 'orange' }, + { value: PostCardStatus.DELIVERED, label: 'Delivered', position: 2, color: 'green' }, + { value: PostCardStatus.RETURNED, label: 'Returned', position: 3, color: 'orange' }, + ], + }, + { + universalIdentifier: 'e06abe72-5b44-4e7f-93be-afc185a3c433', + name: 'deliveredAt', + type: FieldType.DATE_TIME, + label: 'Delivered at', + icon: 'IconCheck', + isNullable: true, + defaultValue: null, + }, + ], +}); +``` + +Key points: + +- Use `defineObject()` for built-in validation and better IDE support. +- The `universalIdentifier` must be unique and stable across deployments. +- Each field requires a `name`, `type`, `label`, and its own stable `universalIdentifier`. +- The `fields` array is optional — you can define objects without custom fields. +- You can scaffold new objects using `yarn twenty entity:add`, which guides you through naming, fields, and relationships. + + +**Base fields are created automatically.** When you define a custom object, Twenty automatically adds standard fields + such as `id`, `name`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy` and `deletedAt`. + You don't need to define these in your `fields` array — only add your custom fields. + You can override default fields by defining a field with the same name in your `fields` array, + but this is not recommended. + + + +### Application config (application-config.ts) + +Every app has a single `application-config.ts` file that describes: + +- **Who the app is**: identifiers, display name, and description. +- **How its functions run**: which role they use for permissions. +- **(Optional) variables**: key–value pairs exposed to your functions as environment variables. +- **(Optional) pre-install function**: a logic function that runs before the app is installed. +- **(Optional) post-install function**: a logic function that runs after the app is installed. + +Use `defineApplication()` to define your application configuration: + +```typescript +// src/application-config.ts +import { defineApplication } from 'twenty-sdk'; +import { DEFAULT_ROLE_UNIVERSAL_IDENTIFIER } from 'src/roles/default-role'; + +export default defineApplication({ + universalIdentifier: '4ec0391d-18d5-411c-b2f3-266ddc1c3ef7', + displayName: 'My Twenty App', + description: 'My first Twenty app', + icon: 'IconWorld', + applicationVariables: { + DEFAULT_RECIPIENT_NAME: { + universalIdentifier: '19e94e59-d4fe-4251-8981-b96d0a9f74de', + description: 'Default recipient name for postcards', + value: 'Jane Doe', + isSecret: false, + }, + }, + defaultRoleUniversalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, +}); +``` + +Notes: +- `universalIdentifier` fields are deterministic IDs you own; generate them once and keep them stable across syncs. +- `applicationVariables` become environment variables for your functions (for example, `DEFAULT_RECIPIENT_NAME` is available as `process.env.DEFAULT_RECIPIENT_NAME`). +- `defaultRoleUniversalIdentifier` must match the role file (see below). +- Pre-install and post-install functions are automatically detected during the manifest build. See [Pre-install functions](#pre-install-functions) and [Post-install functions](#post-install-functions). + +#### Roles and permissions + +Applications can define roles that encapsulate permissions on your workspace's objects and actions. The field `defaultRoleUniversalIdentifier` in `application-config.ts` designates the default role used by your app's logic functions. + +- The runtime API key injected as `TWENTY_API_KEY` is derived from this default function role. +- The typed client will be restricted to the permissions granted to that role. +- Follow least‑privilege: create a dedicated role with only the permissions your functions need, then reference its universal identifier. + +##### Default function role (*.role.ts) + +When you scaffold a new app, the CLI also creates a default role file. Use `defineRole()` to define roles with built-in validation: + +```typescript +// src/roles/default-role.ts +import { defineRole, PermissionFlag } from 'twenty-sdk'; + +export const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER = + 'b648f87b-1d26-4961-b974-0908fd991061'; + +export default defineRole({ + universalIdentifier: DEFAULT_ROLE_UNIVERSAL_IDENTIFIER, + label: 'Default function role', + description: 'Default role for function Twenty client', + canReadAllObjectRecords: false, + canUpdateAllObjectRecords: false, + canSoftDeleteAllObjectRecords: false, + canDestroyAllObjectRecords: false, + canUpdateAllSettings: false, + canBeAssignedToAgents: false, + canBeAssignedToUsers: false, + canBeAssignedToApiKeys: false, + objectPermissions: [ + { + objectUniversalIdentifier: '9f9882af-170c-4879-b013-f9628b77c050', + canReadObjectRecords: true, + canUpdateObjectRecords: true, + canSoftDeleteObjectRecords: false, + canDestroyObjectRecords: false, + }, + ], + fieldPermissions: [ + { + objectUniversalIdentifier: '9f9882af-170c-4879-b013-f9628b77c050', + fieldUniversalIdentifier: 'b2c37dc0-8ae7-470e-96cd-1476b47dfaff', + canReadFieldValue: false, + canUpdateFieldValue: false, + }, + ], + permissionFlags: [PermissionFlag.APPLICATIONS], +}); +``` + +The `universalIdentifier` of this role is then referenced in `application-config.ts` as `defaultRoleUniversalIdentifier`. In other words: + +- **\*.role.ts** defines what the default function role can do. +- **application-config.ts** points to that role so your functions inherit its permissions. + +Notes: +- Start from the scaffolded role, then progressively restrict it following least‑privilege. +- Replace the `objectPermissions` and `fieldPermissions` with the objects/fields your functions need. +- `permissionFlags` control access to platform-level capabilities. Keep them minimal; add only what you need. +- See a working example in the Hello World app: [`packages/twenty-apps/hello-world/src/roles/function-role.ts`](https://github.com/twentyhq/twenty/blob/main/packages/twenty-apps/hello-world/src/roles/function-role.ts). + +### Logic function config and entrypoint + +Each function file uses `defineLogicFunction()` to export a configuration with a handler and optional triggers. + +```typescript +// src/app/createPostCard.logic-function.ts +import { defineLogicFunction } from 'twenty-sdk'; +import type { DatabaseEventPayload, ObjectRecordCreateEvent, CronPayload, RoutePayload } from 'twenty-sdk'; +import { CoreApiClient, type Person } from 'twenty-sdk/generated'; + +const handler = async (params: RoutePayload) => { + const client = new CoreApiClient(); + const name = 'name' in params.queryStringParameters + ? params.queryStringParameters.name ?? process.env.DEFAULT_RECIPIENT_NAME ?? 'Hello world' + : 'Hello world'; + + const result = await client.mutation({ + createPostCard: { + __args: { data: { name } }, + id: true, + name: true, + }, + }); + return result; +}; + +export default defineLogicFunction({ + universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf', + name: 'create-new-post-card', + timeoutSeconds: 2, + handler, + triggers: [ + // Public HTTP route trigger '/s/post-card/create' + { + universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6', + type: 'route', + path: '/post-card/create', + httpMethod: 'GET', + isAuthRequired: false, + }, + // Cron trigger (CRON pattern) + // { + // universalIdentifier: 'dd802808-0695-49e1-98c9-d5c9e2704ce2', + // type: 'cron', + // pattern: '0 0 1 1 *', + // }, + // Database event trigger + // { + // universalIdentifier: '203f1df3-4a82-4d06-a001-b8cf22a31156', + // type: 'databaseEvent', + // eventName: 'person.updated', + // updatedFields: ['name'], + // }, + ], +}); +``` + +Common trigger types: +- **route**: Exposes your function on an HTTP path and method **under the `/s/` endpoint**: +> e.g. `path: '/post-card/create',` -> call on `/s/post-card/create` +- **cron**: Runs your function on a schedule using a CRON expression. +- **databaseEvent**: Runs on workspace object lifecycle events. When the event operation is `updated`, specific fields to listen to can be specified in the `updatedFields` array. If left undefined or empty, any update will trigger the function. +> e.g. `person.updated` + +Notes: +- The `triggers` array is optional. Functions without triggers can be used as utility functions called by other functions. +- You can mix multiple trigger types in a single function. + +### Pre-install functions + +A pre-install function is a logic function that runs automatically before your app is installed on a workspace. This is useful for validation tasks, prerequisite checks, or preparing workspace state before the main installation proceeds. + +When you scaffold a new app with `create-twenty-app`, a pre-install function is generated for you at `src/logic-functions/pre-install.ts`: + +```typescript +// src/logic-functions/pre-install.ts +import { definePreInstallLogicFunction, type InstallLogicFunctionPayload } from 'twenty-sdk'; + +const handler = async (payload: InstallLogicFunctionPayload): Promise => { + console.log('Pre install logic function executed successfully!', payload.previousVersion); +}; + +export default definePreInstallLogicFunction({ + universalIdentifier: '', + name: 'pre-install', + description: 'Runs before installation to prepare the application.', + timeoutSeconds: 300, + handler, +}); +``` + +You can also manually execute the pre-install function at any time using the CLI: + +```bash filename="Terminal" +yarn twenty function:execute --preInstall +``` + +Key points: +- Pre-install functions use `definePreInstallLogicFunction()` — a specialized variant that omits trigger settings (`cronTriggerSettings`, `databaseEventTriggerSettings`, `httpRouteTriggerSettings`, `isTool`). +- The handler receives an `InstallLogicFunctionPayload` with `{ previousVersion: string }` — the version of the app that was previously installed (or an empty string for fresh installs). +- Only one pre-install function is allowed per application. The manifest build will error if more than one is detected. +- The function's `universalIdentifier` is automatically set as `preInstallLogicFunctionUniversalIdentifier` on the application manifest during the build — you do not need to reference it in `defineApplication()`. +- The default timeout is set to 300 seconds (5 minutes) to allow for longer preparation tasks. +- Pre-install functions do not need triggers — they are invoked by the platform before installation or manually via `function:execute --preInstall`. + +### Post-install functions + +A post-install function is a logic function that runs automatically after your app is installed on a workspace. This is useful for one-time setup tasks such as seeding default data, creating initial records, or configuring workspace settings. + +When you scaffold a new app with `create-twenty-app`, a post-install function is generated for you at `src/logic-functions/post-install.ts`: + +```typescript +// src/logic-functions/post-install.ts +import { definePostInstallLogicFunction, type InstallLogicFunctionPayload } from 'twenty-sdk'; + +const handler = async (payload: InstallLogicFunctionPayload): Promise => { + console.log('Post install logic function executed successfully!', payload.previousVersion); +}; + +export default definePostInstallLogicFunction({ + universalIdentifier: '', + name: 'post-install', + description: 'Runs after installation to set up the application.', + timeoutSeconds: 300, + handler, +}); +``` + +You can also manually execute the post-install function at any time using the CLI: + +```bash filename="Terminal" +yarn twenty function:execute --postInstall +``` + +Key points: +- Post-install functions use `definePostInstallLogicFunction()` — a specialized variant that omits trigger settings (`cronTriggerSettings`, `databaseEventTriggerSettings`, `httpRouteTriggerSettings`, `isTool`). +- The handler receives an `InstallLogicFunctionPayload` with `{ previousVersion: string }` — the version of the app that was previously installed (or an empty string for fresh installs). +- Only one post-install function is allowed per application. The manifest build will error if more than one is detected. +- The function's `universalIdentifier` is automatically set as `postInstallLogicFunctionUniversalIdentifier` on the application manifest during the build — you do not need to reference it in `defineApplication()`. +- The default timeout is set to 300 seconds (5 minutes) to allow for longer setup tasks like data seeding. +- Post-install functions do not need triggers — they are invoked by the platform during installation or manually via `function:execute --postInstall`. + +### Route trigger payload + + +**Breaking change (v1.16, January 2026):** The route trigger payload format has changed. Prior to v1.16, query parameters, path parameters, and body were sent directly as the payload. Starting with v1.16, they are nested inside a structured `RoutePayload` object. + +**Before v1.16:** +```typescript +const handler = async (params) => { + const { param1, param2 } = params; // Direct access +}; +``` + +**After v1.16:** +```typescript +const handler = async (event: RoutePayload) => { + const { param1, param2 } = event.body; // Access via .body + const { queryParam } = event.queryStringParameters; + const { id } = event.pathParameters; +}; +``` + +**To migrate existing functions:** Update your handler to destructure from `event.body`, `event.queryStringParameters`, or `event.pathParameters` instead of directly from the params object. + + +When a route trigger invokes your logic function, it receives a `RoutePayload` object that follows the AWS HTTP API v2 format. Import the type from `twenty-sdk`: + +```typescript +import { defineLogicFunction, type RoutePayload } from 'twenty-sdk'; + +const handler = async (event: RoutePayload) => { + // Access request data + const { headers, queryStringParameters, pathParameters, body } = event; + + // HTTP method and path are available in requestContext + const { method, path } = event.requestContext.http; + + return { message: 'Success' }; +}; +``` + +The `RoutePayload` type has the following structure: + +| Property | Type | Description | +|----------|------|-------------| +| `headers` | `Record` | HTTP headers (only those listed in `forwardedRequestHeaders`) | +| `queryStringParameters` | `Record` | Query string parameters (multiple values joined with commas) | +| `pathParameters` | `Record` | Path parameters extracted from the route pattern (e.g., `/users/:id` → `{ id: '123' }`) | +| `body` | `object \| null` | Parsed request body (JSON) | +| `isBase64Encoded` | `boolean` | Whether the body is base64 encoded | +| `requestContext.http.method` | `string` | HTTP method (GET, POST, PUT, PATCH, DELETE) | +| `requestContext.http.path` | `string` | Raw request path | + +### Forwarding HTTP headers + +By default, HTTP headers from incoming requests are **not** passed to your logic function for security reasons. To access specific headers, explicitly list them in the `forwardedRequestHeaders` array: + +```typescript +export default defineLogicFunction({ + universalIdentifier: 'e56d363b-0bdc-4d8a-a393-6f0d1c75bdcf', + name: 'webhook-handler', + handler, + triggers: [ + { + universalIdentifier: 'c9f84c8d-b26d-40d1-95dd-4f834ae5a2c6', + type: 'route', + path: '/webhook', + httpMethod: 'POST', + isAuthRequired: false, + forwardedRequestHeaders: ['x-webhook-signature', 'content-type'], + }, + ], +}); +``` + +In your handler, you can then access these headers: + +```typescript +const handler = async (event: RoutePayload) => { + const signature = event.headers['x-webhook-signature']; + const contentType = event.headers['content-type']; + + // Validate webhook signature... + return { received: true }; +}; +``` + + + Header names are normalized to lowercase. Access them using lowercase keys (for example, `event.headers['content-type']`). + + +You can create new functions in two ways: + +- **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new logic function. This generates a starter file with a handler and config. +- **Manual**: Create a new `*.logic-function.ts` file and use `defineLogicFunction()`, following the same pattern. + +### Marking a logic function as a tool + +Logic functions can be exposed as **tools** for AI agents and workflows. When a function is marked as a tool, it becomes discoverable by Twenty's AI features and can be selected as a step in workflow automations. + +To mark a logic function as a tool, set `isTool: true` and provide a `toolInputSchema` describing the expected input parameters using [JSON Schema](https://json-schema.org/): + +```typescript +// src/logic-functions/enrich-company.logic-function.ts +import { defineLogicFunction } from 'twenty-sdk'; +import { CoreApiClient } from 'twenty-sdk/generated'; + +const handler = async (params: { companyName: string; domain?: string }) => { + const client = new CoreApiClient(); + + const result = await client.mutation({ + createTask: { + __args: { + data: { + title: `Enrich data for ${params.companyName}`, + body: `Domain: ${params.domain ?? 'unknown'}`, + }, + }, + id: true, + }, + }); + + return { taskId: result.createTask.id }; +}; + +export default defineLogicFunction({ + universalIdentifier: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', + name: 'enrich-company', + description: 'Enrich a company record with external data', + timeoutSeconds: 10, + handler, + isTool: true, + toolInputSchema: { + type: 'object', + properties: { + companyName: { + type: 'string', + description: 'The name of the company to enrich', + }, + domain: { + type: 'string', + description: 'The company website domain (optional)', + }, + }, + required: ['companyName'], + }, +}); +``` + +Key points: + +- **`isTool`** (`boolean`, default: `false`): When set to `true`, the function is registered as a tool and becomes available to AI agents and workflow automations. +- **`toolInputSchema`** (`object`, optional): A JSON Schema object that describes the parameters your function accepts. AI agents use this schema to understand what inputs the tool expects and to validate calls. If omitted, the schema defaults to `{ type: 'object', properties: {} }` (no parameters). +- Functions with `isTool: false` (or unset) are **not** exposed as tools. They can still be executed directly or called by other functions, but will not appear in tool discovery. +- **Tool naming**: When exposed as a tool, the function name is automatically normalized to `logic_function_` (lowercased, non-alphanumeric characters replaced with underscores). For example, `enrich-company` becomes `logic_function_enrich_company`. +- You can combine `isTool` with triggers — a function can be both a tool (callable by AI agents) and triggered by events (cron, database events, routes) at the same time. + + +**Write a good `description`.** AI agents rely on the function's `description` field to decide when to use the tool. Be specific about what the tool does and when it should be called. + + +### Front components + +Front components let you build custom React components that render within Twenty's UI. Use `defineFrontComponent()` to define components with built-in validation: + +```typescript +// src/front-components/my-widget.tsx +import { defineFrontComponent } from 'twenty-sdk'; + +const MyWidget = () => { + return ( +
+

My Custom Widget

+

This is a custom front component for Twenty.

+
+ ); +}; + +export default defineFrontComponent({ + universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', + name: 'my-widget', + description: 'A custom widget component', + component: MyWidget, +}); +``` + +Key points: +- Front components are React components that render in isolated contexts within Twenty. +- The `component` field references your React component. +- Components are built and synced automatically during `yarn twenty app:dev`. + +You can create new front components in two ways: + +- **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new front component. +- **Manual**: Create a new `.tsx` file and use `defineFrontComponent()`, following the same pattern. + +### Skills + +Skills define reusable instructions and capabilities that AI agents can use within your workspace. Use `defineSkill()` to define skills with built-in validation: + +```typescript +// src/skills/example-skill.ts +import { defineSkill } from 'twenty-sdk'; + +export default defineSkill({ + universalIdentifier: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', + name: 'sales-outreach', + label: 'Sales Outreach', + description: 'Guides the AI agent through a structured sales outreach process', + icon: 'IconBrain', + content: `You are a sales outreach assistant. When reaching out to a prospect: +1. Research the company and recent news +2. Identify the prospect's role and likely pain points +3. Draft a personalized message referencing specific details +4. Keep the tone professional but conversational`, +}); +``` + +Key points: +- `name` is a unique identifier string for the skill (kebab-case recommended). +- `label` is the human-readable display name shown in the UI. +- `content` contains the skill instructions — this is the text the AI agent uses. +- `icon` (optional) sets the icon displayed in the UI. +- `description` (optional) provides additional context about the skill's purpose. + +You can create new skills in two ways: + +- **Scaffolded**: Run `yarn twenty entity:add` and choose the option to add a new skill. +- **Manual**: Create a new file and use `defineSkill()`, following the same pattern. + +### Generated typed clients + +Two typed clients are auto-generated by `yarn twenty app:dev` and stored in `node_modules/twenty-sdk/generated` based on your workspace schema: + +- **`CoreApiClient`** — queries the `/graphql` endpoint for workspace data +- **`MetadataApiClient`** — queries the `/metadata` endpoint for workspace configuration and file uploads + +```typescript +import { CoreApiClient, MetadataApiClient } from 'twenty-sdk/generated'; + +const client = new CoreApiClient(); +const { me } = await client.query({ me: { id: true, displayName: true } }); + +const metadataClient = new MetadataApiClient(); +const { currentWorkspace } = await metadataClient.query({ currentWorkspace: { id: true } }); +``` + +Both clients are re-generated automatically by `yarn twenty app:dev` whenever your objects or fields change. + +#### Runtime credentials in logic functions + +When your function runs on Twenty, the platform injects credentials as environment variables before your code executes: + +- `TWENTY_API_URL`: Base URL of the Twenty API your app targets. +- `TWENTY_API_KEY`: Short‑lived key scoped to your application's default function role. + +Notes: +- You do not need to pass URL or API key to the generated client. It reads `TWENTY_API_URL` and `TWENTY_API_KEY` from process.env at runtime. +- The API key's permissions are determined by the role referenced in your `application-config.ts` via `defaultRoleUniversalIdentifier`. This is the default role used by logic functions of your application. +- Applications can define roles to follow least‑privilege. Grant only the permissions your functions need, then point `defaultRoleUniversalIdentifier` to that role's universal identifier. + +#### Uploading files + +The generated `MetadataApiClient` includes an `uploadFile` method for attaching files to file-type fields on your workspace objects. Because standard GraphQL clients do not support multipart file uploads natively, the client provides this dedicated method that implements the [GraphQL multipart request specification](https://github.com/jaydenseric/graphql-multipart-request-spec) under the hood. + +```typescript +import { MetadataApiClient } from 'twenty-sdk/generated'; +import * as fs from 'fs'; + +const metadataClient = new MetadataApiClient(); + +const fileBuffer = fs.readFileSync('./invoice.pdf'); + +const uploadedFile = await metadataClient.uploadFile( + fileBuffer, // file contents as a Buffer + 'invoice.pdf', // filename + 'application/pdf', // MIME type (defaults to 'application/octet-stream') + '58a0a314-d7ea-4865-9850-7fb84e72f30b', // field universal identifier +); + +console.log(uploadedFile); +// { id: '...', path: '...', size: 12345, createdAt: '...', url: 'https://...' } +``` + +The method signature: + +```typescript +uploadFile( + fileBuffer: Buffer, + filename: string, + contentType: string, + fieldMetadataUniversalIdentifier: string, +): Promise<{ id: string; path: string; size: number; createdAt: string; url: string }> +``` + +| Parameter | Type | Description | +|-----------|------|-------------| +| `fileBuffer` | `Buffer` | The raw file contents | +| `filename` | `string` | The name of the file (used for storage and display) | +| `contentType` | `string` | MIME type of the file (defaults to `application/octet-stream` if omitted) | +| `fieldMetadataUniversalIdentifier` | `string` | The `universalIdentifier` of the file-type field on your object | + +Key points: +- The `uploadFile` method is available on `MetadataApiClient` because the upload mutation is resolved by the `/metadata` endpoint. +- It uses the field's `universalIdentifier` (not its workspace-specific ID), so your upload code works across any workspace where your app is installed — consistent with how apps reference fields everywhere else. +- The returned `url` is a signed URL you can use to access the uploaded file. + +### Hello World example + +Explore a minimal, end-to-end example that demonstrates objects, logic functions, front components, and multiple triggers [here](https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/hello-world). diff --git a/packages/twenty-docs/developers/extend/apps/getting-started.mdx b/packages/twenty-docs/developers/extend/apps/getting-started.mdx new file mode 100644 index 00000000000..c654b5b9b40 --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/getting-started.mdx @@ -0,0 +1,231 @@ +--- +title: Getting Started +description: Create your first Twenty app in minutes. +--- + + +Apps are currently in alpha testing. The feature is functional but still evolving. + + +Apps let you extend Twenty with custom objects, fields, logic functions, AI skills, and UI components — all managed as code. + +**What you can do today:** +- Define custom objects and fields as code (managed data model) +- Build logic functions with custom triggers (HTTP routes, cron, database events) +- Define skills for AI agents +- Build front components that render inside Twenty's UI +- Deploy the same app across multiple workspaces + +## Prerequisites + +- Node.js 24+ and Yarn 4 +- A Twenty workspace and an API key (create one at https://app.twenty.com/settings/api-webhooks) + +## Getting Started + +Create a new app using the official scaffolder, then authenticate and start developing: + +```bash filename="Terminal" +# Scaffold a new app (includes all examples by default) +npx create-twenty-app@latest my-twenty-app +cd my-twenty-app + +# Start dev mode: automatically syncs local changes to your workspace +yarn twenty app:dev +``` + +The scaffolder supports two modes for controlling which example files are included: + +```bash filename="Terminal" +# Default (exhaustive): all examples (object, field, logic function, front component, view, navigation menu item, skill) +npx create-twenty-app@latest my-app + +# Minimal: only core files (application-config.ts and default-role.ts) +npx create-twenty-app@latest my-app --minimal +``` + +From here you can: + +```bash filename="Terminal" +# Add a new entity to your application (guided) +yarn twenty entity:add + +# Watch your application's function logs +yarn twenty function:logs + +# Execute a function by name +yarn twenty function:execute -n my-function -p '{"name": "test"}' + +# Execute the pre-install function +yarn twenty function:execute --preInstall + +# Execute the post-install function +yarn twenty function:execute --postInstall + +# Uninstall the application from the current workspace +yarn twenty app:uninstall + +# Display commands' help +yarn twenty help +``` + +See also: the CLI reference pages for [create-twenty-app](https://www.npmjs.com/package/create-twenty-app) and [twenty-sdk CLI](https://www.npmjs.com/package/twenty-sdk). + +## Project structure (scaffolded) + +When you run `npx create-twenty-app@latest my-twenty-app`, the scaffolder: + +- Copies a minimal base application into `my-twenty-app/` +- Adds a local `twenty-sdk` dependency and Yarn 4 configuration +- Creates config files and scripts wired to the `twenty` CLI +- Generates core files (application config, default function role, pre-install and post-install functions) plus example files based on the scaffolding mode + +A freshly scaffolded app with the default `--exhaustive` mode looks like this: + +```text filename="my-twenty-app/" +my-twenty-app/ + package.json + yarn.lock + .gitignore + .nvmrc + .yarnrc.yml + .yarn/ + install-state.gz + .oxlintrc.json + tsconfig.json + README.md + public/ # Public assets folder (images, fonts, etc.) + src/ + ├── application-config.ts # Required - main application configuration + ├── roles/ + │ └── default-role.ts # Default role for logic functions + ├── objects/ + │ └── example-object.ts # Example custom object definition + ├── fields/ + │ └── example-field.ts # Example standalone field definition + ├── logic-functions/ + │ ├── hello-world.ts # Example logic function + │ ├── pre-install.ts # Pre-install logic function + │ └── post-install.ts # Post-install logic function + ├── front-components/ + │ └── hello-world.tsx # Example front component + ├── views/ + │ └── example-view.ts # Example saved view definition + ├── navigation-menu-items/ + │ └── example-navigation-menu-item.ts # Example sidebar navigation link + └── skills/ + └── example-skill.ts # Example AI agent skill definition +``` + +With `--minimal`, only the core files are created (`application-config.ts`, `roles/default-role.ts`, `logic-functions/pre-install.ts`, and `logic-functions/post-install.ts`). + +At a high level: + +- **package.json**: Declares the app name, version, engines (Node 24+, Yarn 4), and adds `twenty-sdk` plus a `twenty` script that delegates to the local `twenty` CLI. Run `yarn twenty help` to list all available commands. +- **.gitignore**: Ignores common artifacts such as `node_modules`, `.yarn`, `generated/` (typed client), `dist/`, `build/`, coverage folders, log files, and `.env*` files. +- **yarn.lock**, **.yarnrc.yml**, **.yarn/**: Lock and configure the Yarn 4 toolchain used by the project. +- **.nvmrc**: Pins the Node.js version expected by the project. +- **.oxlintrc.json** and **tsconfig.json**: Provide linting and TypeScript configuration for your app's TypeScript sources. +- **README.md**: A short README in the app root with basic instructions. +- **public/**: A folder for storing public assets (images, fonts, static files) that will be served with your application. Files placed here are uploaded during sync and accessible at runtime. +- **src/**: The main place where you define your application-as-code + +### Entity detection + +The SDK detects entities by parsing your TypeScript files for **`export default define({...})`** calls. Each entity type has a corresponding helper function exported from `twenty-sdk`: + +| Helper function | Entity type | +|-----------------|-------------| +| `defineObject` | Custom object definitions | +| `defineLogicFunction` | Logic function definitions | +| `definePreInstallLogicFunction` | Pre-install logic function (runs before installation) | +| `definePostInstallLogicFunction` | Post-install logic function (runs after installation) | +| `defineFrontComponent` | Front component definitions | +| `defineRole` | Role definitions | +| `defineField` | Field extensions for existing objects | +| `defineView` | Saved view definitions | +| `defineNavigationMenuItem` | Navigation menu item definitions | +| `defineSkill` | AI agent skill definitions | + + +**File naming is flexible.** Entity detection is AST-based — the SDK scans your source files for the `export default define({...})` pattern. You can organize your files and folders however you like. Grouping by entity type (e.g., `logic-functions/`, `roles/`) is just a convention for code organization, not a requirement. + + +Example of a detected entity: +```typescript +// This file can be named anything and placed anywhere in src/ +import { defineObject, FieldType } from 'twenty-sdk'; + +export default defineObject({ + universalIdentifier: '...', + nameSingular: 'postCard', + // ... rest of config +}); +``` + +Later commands will add more files and folders: + +- `yarn twenty app:dev` will auto-generate two typed API clients in `node_modules/twenty-sdk/generated`: `CoreApiClient` (for workspace data via `/graphql`) and `MetadataApiClient` (for workspace configuration and file uploads via `/metadata`). +- `yarn twenty entity:add` will add entity definition files under `src/` for your custom objects, functions, front components, roles, skills, and more. + +## Authentication + +The first time you run `yarn twenty auth:login`, you'll be prompted for: + +- API URL (defaults to http://localhost:3000 or your current workspace profile) +- API key + +Your credentials are stored per-user in `~/.twenty/config.json`. You can maintain multiple profiles and switch between them. + +### Managing workspaces + +```bash filename="Terminal" +# Login interactively (recommended) +yarn twenty auth:login + +# Login to a specific workspace profile +yarn twenty auth:login --workspace my-custom-workspace + +# List all configured workspaces +yarn twenty auth:list + +# Switch the default workspace (interactive) +yarn twenty auth:switch + +# Switch to a specific workspace +yarn twenty auth:switch production + +# Check current authentication status +yarn twenty auth:status +``` + +Once you've switched workspaces with `yarn twenty auth:switch`, all subsequent commands will use that workspace by default. You can still override it temporarily with `--workspace `. + +## Manual setup (without the scaffolder) + +While we recommend using `create-twenty-app` for the best getting-started experience, you can also set up a project manually. Do not install the CLI globally. Instead, add `twenty-sdk` as a local dependency and wire a single script in your package.json: + +```bash filename="Terminal" +yarn add -D twenty-sdk +``` + +Then add a `twenty` script: + +```json filename="package.json" +{ + "scripts": { + "twenty": "twenty" + } +} +``` + +Now you can run all commands via `yarn twenty `, e.g. `yarn twenty app:dev`, `yarn twenty help`, etc. + +## Troubleshooting + +- Authentication errors: run `yarn twenty auth:login` and ensure your API key has the required permissions. +- Cannot connect to server: verify the API URL and that the Twenty server is reachable. +- Types or client missing/outdated: restart `yarn twenty app:dev` — it auto-generates the typed client. +- Dev mode not syncing: ensure `yarn twenty app:dev` is running and that changes are not ignored by your environment. + +Discord Help Channel: https://discord.com/channels/1130383047699738754/1130386664812982322 diff --git a/packages/twenty-docs/developers/extend/apps/publishing.mdx b/packages/twenty-docs/developers/extend/apps/publishing.mdx new file mode 100644 index 00000000000..23324172f56 --- /dev/null +++ b/packages/twenty-docs/developers/extend/apps/publishing.mdx @@ -0,0 +1,119 @@ +--- +title: Publishing +description: Distribute your Twenty app to the marketplace or deploy it internally. +--- + + +Apps are currently in alpha testing. The feature is functional but still evolving. + + +## Overview + +Once your app is [built and tested locally](/developers/extend/apps/building), you have two paths for distributing it: + +- **Publish to npm** — list your app in the Twenty marketplace for any workspace to discover and install. +- **Push a tarball** — deploy your app to a specific Twenty server for internal use without making it publicly available. + +## Publishing to npm + +Publishing to npm makes your app discoverable in the Twenty marketplace. Any Twenty workspace can browse, install, and upgrade marketplace apps directly from the UI. + +### Requirements + +- An [npm](https://www.npmjs.com) account +- Your package name **must** use the `twenty-app-` prefix (e.g., `twenty-app-postcard-sender`) + +### Steps + +1. **Build your app** — the CLI compiles your TypeScript sources and generates the application manifest: + +```bash filename="Terminal" +yarn twenty app:build +``` + +2. **Publish to npm** — push the built package to the npm registry: + +```bash filename="Terminal" +npx twenty app:publish +``` + +### Auto-discovery + +Packages with the `twenty-app-` prefix are automatically discovered by the Twenty marketplace catalog. Once published, your app appears in the marketplace within a few minutes — no manual registration or approval required. + +### CI publishing + +The scaffolded project includes a GitHub Actions workflow that publishes on every release. It runs `app:build`, then `npm publish --provenance` from the build output: + +```yaml filename=".github/workflows/publish.yml" +name: Publish +on: + release: + types: [published] + +permissions: + contents: read + id-token: write + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: "24" + registry-url: https://registry.npmjs.org + - run: yarn install --immutable + - run: npx twenty app:build + - run: npm publish --provenance --access public + working-directory: .twenty/output + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} +``` + +For other CI systems (GitLab CI, CircleCI, etc.), the same three commands apply: `yarn install`, `npx twenty app:build`, then `npm publish` from `.twenty/output`. + + +**npm provenance** is optional but recommended. Publishing with `--provenance` adds a trust badge to your npm listing, letting users verify the package was built from a specific commit in a public CI pipeline. See the [npm provenance docs](https://docs.npmjs.com/generating-provenance-statements) for setup instructions. + + +## Internal distribution + +For apps you don't want publicly available — proprietary tools, enterprise-only integrations, or experimental builds — you can push a tarball directly to a Twenty server. + +### Push a tarball + +Build your app and deploy it to a specific server in one step: + +```bash filename="Terminal" +npx twenty app:publish --server +``` + +Any workspace on that server can then install and upgrade the app from the **Applications** settings page. + +### Version management + +To release an update: + +1. Bump the `version` field in your `package.json` +2. Push a new tarball with `npx twenty app:publish --server ` +3. Workspaces on that server will see the upgrade available in their settings + + +Internal apps are scoped to the server they're pushed to. They won't appear in the public marketplace and can't be installed by workspaces on other servers. + + +## App categories + +Twenty organizes apps into three categories based on how they're distributed: + +| Category | How it works | Visible in marketplace? | +|----------|-------------|------------------------| +| **Development** | Local dev mode apps running via `yarn twenty app:dev`. Used for building and testing. | No | +| **Published** | Apps published to npm with the `twenty-app-` prefix. Listed in the marketplace for any workspace to install. | Yes | +| **Internal** | Apps deployed via tarball to a specific server. Available only to workspaces on that server. | No | + + +Start in **Development** mode while building your app. When it's ready, choose **Published** (npm) for broad distribution or **Internal** (tarball) for private deployment. + diff --git a/packages/twenty-docs/developers/extend/extend.mdx b/packages/twenty-docs/developers/extend/extend.mdx index e0b12f41fae..15a49ae3e80 100644 --- a/packages/twenty-docs/developers/extend/extend.mdx +++ b/packages/twenty-docs/developers/extend/extend.mdx @@ -14,20 +14,18 @@ Twenty is designed to be extensible. Use our APIs, webhooks, and app framework t - **APIs**: Query and modify your CRM data programmatically using REST or GraphQL - **Webhooks**: Receive real-time notifications when events occur in Twenty -- **Apps**: Build custom applications that extend Twenty's capabilities - Coming soon! +- **Apps**: Build custom applications that extend Twenty's capabilities ## Getting Started - + Connect to Twenty programmatically - + Get notified of events in real-time - - Build customizations as code (Alpha) + + Build customizations as code - - diff --git a/packages/twenty-docs/developers/extend/webhooks.mdx b/packages/twenty-docs/developers/extend/webhooks.mdx new file mode 100644 index 00000000000..d22f95a1104 --- /dev/null +++ b/packages/twenty-docs/developers/extend/webhooks.mdx @@ -0,0 +1,113 @@ +--- +title: Webhooks +description: Receive real-time notifications when events occur in your CRM. +--- + +import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; + + +Webhooks push data to your systems in real-time when events occur in Twenty — no polling required. Use them to keep external systems in sync, trigger automations, or send alerts. + +## Create a Webhook + +1. Go to **Settings → APIs & Webhooks → Webhooks** +2. Click **+ Create webhook** +3. Enter your webhook URL (must be publicly accessible) +4. Click **Save** + +The webhook activates immediately and starts sending notifications. + + + +### Manage Webhooks + +**Edit**: Click the webhook → Update URL → **Save** + +**Delete**: Click the webhook → **Delete** → Confirm + +## Events + +Twenty sends webhooks for these event types: + +| Event | Example | +|-------|---------| +| **Record Created** | `person.created`, `company.created`, `note.created` | +| **Record Updated** | `person.updated`, `company.updated`, `opportunity.updated` | +| **Record Deleted** | `person.deleted`, `company.deleted` | + +All event types are sent to your webhook URL. Event filtering may be added in future releases. + +## Payload Format + +Each webhook sends an HTTP POST with a JSON body: + +```json +{ + "event": "person.created", + "data": { + "id": "abc12345", + "firstName": "Alice", + "lastName": "Doe", + "email": "alice@example.com", + "createdAt": "2025-02-10T15:30:45Z", + "createdBy": "user_123" + }, + "timestamp": "2025-02-10T15:30:50Z" +} +``` + +| Field | Description | +|-------|-------------| +| `event` | What happened (e.g., `person.created`) | +| `data` | The full record that was created/updated/deleted | +| `timestamp` | When the event occurred (UTC) | + + +Respond with a **2xx HTTP status** (200-299) to acknowledge receipt. Non-2xx responses are logged as delivery failures. + + +## Webhook Validation + +Twenty signs each webhook request for security. Validate signatures to ensure requests are authentic. + +### Headers + +| Header | Description | +|--------|-------------| +| `X-Twenty-Webhook-Signature` | HMAC SHA256 signature | +| `X-Twenty-Webhook-Timestamp` | Request timestamp | + +### Validation Steps + +1. Get the timestamp from `X-Twenty-Webhook-Timestamp` +2. Create the string: `{timestamp}:{JSON payload}` +3. Compute HMAC SHA256 using your webhook secret +4. Compare with `X-Twenty-Webhook-Signature` + +### Example (Node.js) + +```javascript +const crypto = require("crypto"); + +const timestamp = req.headers["x-twenty-webhook-timestamp"]; +const payload = JSON.stringify(req.body); +const secret = "your-webhook-secret"; + +const stringToSign = `${timestamp}:${payload}`; +const expectedSignature = crypto + .createHmac("sha256", secret) + .update(stringToSign) + .digest("hex"); + +const isValid = expectedSignature === req.headers["x-twenty-webhook-signature"]; +``` + +## Webhooks vs Workflows + +| Method | Direction | Use Case | +|--------|-----------|----------| +| **Webhooks** | OUT | Automatically notify external systems of any record change | +| **Workflow + HTTP Request** | OUT | Send data out with custom logic (filters, transformations) | +| **Workflow Webhook Trigger** | IN | Receive data into Twenty from external systems | + +For receiving external data, see [Set Up a Webhook Trigger](/user-guide/workflows/how-tos/connect-to-other-tools/set-up-a-webhook-trigger). diff --git a/packages/twenty-docs/docs.json b/packages/twenty-docs/docs.json index 67fcfd93543..2995c290953 100644 --- a/packages/twenty-docs/docs.json +++ b/packages/twenty-docs/docs.json @@ -358,13 +358,14 @@ "group": "Extend", "icon": "plug", "pages": [ - "developers/extend/extend", + "developers/extend/api", + "developers/extend/webhooks", { - "group": "Capabilities", + "group": "Apps", "pages": [ - "developers/extend/capabilities/apis", - "developers/extend/capabilities/webhooks", - "developers/extend/capabilities/apps" + "developers/extend/apps/getting-started", + "developers/extend/apps/building", + "developers/extend/apps/publishing" ] } ] @@ -6272,6 +6273,22 @@ } }, "redirects": [ + { + "source": "/developers/extend/capabilities/api", + "destination": "/developers/extend/api" + }, + { + "source": "/developers/extend/capabilities/apis", + "destination": "/developers/extend/api" + }, + { + "source": "/developers/extend/capabilities/webhooks", + "destination": "/developers/extend/webhooks" + }, + { + "source": "/developers/extend/capabilities/apps", + "destination": "/developers/extend/apps/getting-started" + }, { "source": "/developers/local-setup", "destination": "/developers/contribute/capabilities/local-setup" @@ -6306,23 +6323,23 @@ }, { "source": "/developers/api-and-webhooks/apis-overview", - "destination": "/developers/extend/capabilities/apis" + "destination": "/developers/extend/api" }, { "source": "/developers/api-and-webhooks/api", - "destination": "/developers/extend/capabilities/apis" + "destination": "/developers/extend/api" }, { "source": "/developers/api-and-webhooks/api-keys", - "destination": "/developers/extend/capabilities/apis" + "destination": "/developers/extend/api" }, { "source": "/developers/api-and-webhooks/webhooks", - "destination": "/developers/extend/capabilities/webhooks" + "destination": "/developers/extend/webhooks" }, { "source": "/developers/api-and-webhooks/integrations", - "destination": "/developers/extend/capabilities/apis" + "destination": "/developers/extend/api" }, { "source": "/developers/bugs-and-requests", diff --git a/packages/twenty-docs/l/ar/developers/extend/extend.mdx b/packages/twenty-docs/l/ar/developers/extend/extend.mdx index 4e411cc42b2..8ad62dd5af7 100644 --- a/packages/twenty-docs/l/ar/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/ar/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: التوسيع description: وسّع وظائف Twenty باستخدام واجهات برمجة التطبيقات، وخطافات الويب، والتطبيقات المخصصة. +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ description: وسّع وظائف Twenty باستخدام واجهات برمجة ## البدء - + اتصل بـ Twenty برمجياً - + احصل على إشعارات بالأحداث في الوقت الفعلي - + أنشئ تخصيصات كرمز برمجي (ألفا) diff --git a/packages/twenty-docs/l/ar/developers/introduction.mdx b/packages/twenty-docs/l/ar/developers/introduction.mdx index b3404d481e4..786730a1220 100644 --- a/packages/twenty-docs/l/ar/developers/introduction.mdx +++ b/packages/twenty-docs/l/ar/developers/introduction.mdx @@ -5,18 +5,28 @@ description: مرحبًا بك في وثائق المطوّرين الخاصة import { CardTitle } from "/snippets/card-title.mdx" - - - التوسيع - أنشئ عمليات تكامل مع واجهات برمجة التطبيقات وخطافات الويب والتطبيقات المخصصة. + + + API + استعلام وتعديل بيانات CRM الخاصة بك باستخدام REST أو GraphQL. - + + Webhooks + استقبل إشعارات في الوقت الفعلي عند حدوث الأحداث. + + + + Apps + أنشئ تطبيقات مخصصة توسّع قدرات Twenty. + + + الاستضافة الذاتية قم بنشر Twenty وإدارته على البنية التحتية الخاصة بك. - + المساهمة انضم إلى مجتمعنا مفتوح المصدر وساهم في Twenty. diff --git a/packages/twenty-docs/l/ar/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/ar/user-guide/data-migration/how-tos/export-your-data.mdx index e59579f1480..f239d5c3758 100644 --- a/packages/twenty-docs/l/ar/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/ar/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; * يتم تصدير **الأعمدة المرئية** فقط * يتم تصدير **السجلات المصفّاة** فقط (استنادًا إلى العرض الحالي لديك) -بالنسبة لعمليات التصدير الأكبر (أكثر من 20,000 سجل)، استخدم عوامل التصفية للتصدير على دفعات أو استخدم [واجهة برمجة التطبيقات (API)](/l/ar/developers/extend/capabilities/apis). +بالنسبة لعمليات التصدير الأكبر (أكثر من 20,000 سجل)، استخدم عوامل التصفية للتصدير على دفعات أو استخدم [واجهة برمجة التطبيقات (API)](/l/ar/developers/api). ### الصلاحيات @@ -148,7 +148,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; 2. استخدم واجهة برمجة تطبيقات GraphQL للاستعلام عن السجلات 3. عالج النتائج في تطبيقك -راجع: [وثائق واجهة برمجة التطبيقات (API)](/l/ar/developers/extend/capabilities/apis) +راجع: [وثائق واجهة برمجة التطبيقات (API)](/l/ar/developers/api) ## نصائح وأفضل الممارسات @@ -206,4 +206,4 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; * [كيفية تحديث السجلات الموجودة](/l/ar/user-guide/data-migration/how-tos/update-existing-records-via-import) — حرّر وأعد استيراد ملف التصدير الخاص بك * [كيفية استيراد البيانات عبر واجهة برمجة التطبيقات (API)](/l/ar/user-guide/data-migration/how-tos/import-data-via-api) — لمجموعات البيانات الكبيرة -* [وثائق واجهة برمجة التطبيقات (API)](/l/ar/developers/extend/capabilities/apis) — أنشئ عمليات سير عمل تصدير مخصصة +* [وثائق واجهة برمجة التطبيقات (API)](/l/ar/developers/api) — أنشئ عمليات سير عمل تصدير مخصصة diff --git a/packages/twenty-docs/l/ar/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/ar/user-guide/data-migration/how-tos/import-data-via-api.mdx index 97a1dc361ad..667dfd1a36f 100644 --- a/packages/twenty-docs/l/ar/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/ar/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ description: متى وكيف تستخدم واجهات API الخاصة بـ Twe | واجهة برمجة التطبيقات | الأفضل لـ | التوثيق | | --------------------- | ------------------------------------------------------ | ------------------------------------------------- | -| **GraphQL** | استعلامات مرنة، وجلب البيانات المرتبطة، وعمليات معقّدة | [وثائق API](/l/ar/developers/extend/capabilities/apis) | -| **REST** | عمليات CRUD بسيطة، وأنماط REST مألوفة | [وثائق API](/l/ar/developers/extend/capabilities/apis) | +| **GraphQL** | استعلامات مرنة، وجلب البيانات المرتبطة، وعمليات معقّدة | [وثائق API](/l/ar/developers/api) | +| **REST** | عمليات CRUD بسيطة، وأنماط REST مألوفة | [وثائق API](/l/ar/developers/api) | كلتا واجهتي API تدعمان: @@ -173,4 +173,4 @@ description: متى وكيف تستخدم واجهات API الخاصة بـ Twe للحصول على تفاصيل التنفيذ الكاملة وأمثلة الشيفرة ومرجع المخطط (schema): -* [وثائق API](/l/ar/developers/extend/capabilities/apis) +* [وثائق API](/l/ar/developers/api) diff --git a/packages/twenty-docs/l/ar/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/ar/user-guide/getting-started/capabilities/what-is-twenty.mdx index 6152d4ee693..92e2cbf201b 100644 --- a/packages/twenty-docs/l/ar/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/ar/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ description: Twenty هو نظام إدارة علاقات العملاء (CRM) * **لوحات التحكم:** تتبع الأداء باستخدام تقارير مخصصة وتصوّرات مرئية. [عرض لوحات التحكم](/l/ar/user-guide/dashboards/overview). * **الأذونات والوصول:** تحكّم في مَن يمكنه عرض بياناتك وتحريرها وإدارتها باستخدام أذونات مستندة إلى الأدوار. [تكوين الوصول](/l/ar/user-guide/permissions-access/overview). * **الملاحظات والمهام:** أنشئ ملاحظات ومهام مرتبطة بسجلاتك لتحسين التعاون. -* **واجهة برمجة التطبيقات والويب هوكس:** الاتصال بالتطبيقات الأخرى وإنشاء عمليات تكامل مخصصة. [ابدأ التكامل](/l/ar/developers/extend/capabilities/apis). +* **واجهة برمجة التطبيقات والويب هوكس:** الاتصال بالتطبيقات الأخرى وإنشاء عمليات تكامل مخصصة. [ابدأ التكامل](/l/ar/developers/api). ## انضم الآن diff --git a/packages/twenty-docs/l/ar/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/ar/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index cb824ba1298..98078badd37 100644 --- a/packages/twenty-docs/l/ar/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/ar/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ description: اعرض بيانات من سجلات مرتبطة (مثل معلو * حجم الشركة: `{{searchRecords[0].employees}}` -**قيود المهام والملاحظات**: العلاقات في المهام والملاحظات مُحدّدة في الشفرة كعلاقات متعدّدة-لمتعدّدة وليست متاحة بعد في محفّزات أو إجراءات سير العمل. للوصول إلى هذه العلاقات، استخدم بدلًا من ذلك [API](/l/ar/developers/extend/capabilities/apis). +**قيود المهام والملاحظات**: العلاقات في المهام والملاحظات مُحدّدة في الشفرة كعلاقات متعدّدة-لمتعدّدة وليست متاحة بعد في محفّزات أو إجراءات سير العمل. للوصول إلى هذه العلاقات، استخدم بدلًا من ذلك [API](/l/ar/developers/api). ## مزامنة ثنائية الاتجاه diff --git a/packages/twenty-docs/l/cs/developers/extend/extend.mdx b/packages/twenty-docs/l/cs/developers/extend/extend.mdx index af701378b3a..03f9f60f787 100644 --- a/packages/twenty-docs/l/cs/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/cs/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Rozšiřte description: Rozšiřte funkčnost Twenty pomocí rozhraní API, webhooků a vlastních aplikací. +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ Twenty je navrženo tak, aby bylo rozšiřitelné. Použijte naše rozhraní API ## Začínáme - + Programově se připojte k Twenty - + Dostávejte oznámení o událostech v reálném čase - + Vytvářejte přizpůsobení jako kód (Alpha) diff --git a/packages/twenty-docs/l/cs/developers/introduction.mdx b/packages/twenty-docs/l/cs/developers/introduction.mdx index a155d446d2d..7a012b24bb6 100644 --- a/packages/twenty-docs/l/cs/developers/introduction.mdx +++ b/packages/twenty-docs/l/cs/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Vítejte v dokumentaci pro vývojáře Twenty, která je vaším zd import { CardTitle } from "/snippets/card-title.mdx" - - - Rozšiřte - Vytvářejte integrace pomocí API, webhooků a vlastních aplikací. + + + API + Dotazujte a upravujte data CRM pomocí REST nebo GraphQL. - + + Webhooks + Přijímejte oznámení v reálném čase při výskytu událostí. + + + + Apps + Vytvářejte vlastní aplikace rozšiřující možnosti Twenty. + + + Hostujte sami Nasaďte a spravujte Twenty na vlastní infrastruktuře. - + Přispějte Připojte se k naší open-source komunitě a přispívejte do Twenty. diff --git a/packages/twenty-docs/l/cs/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/cs/user-guide/data-migration/how-tos/export-your-data.mdx index b3d85984a79..5380130930e 100644 --- a/packages/twenty-docs/l/cs/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/cs/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ Exportujte data svého pracovního prostoru do CSV pro zálohování, vytvářen * Exportují se pouze **viditelné sloupce** * Exportují se pouze **filtrované záznamy** (podle vašeho aktuálního zobrazení) -U větších exportů (20 000+ záznamů) použijte filtry pro export po dávkách nebo použijte [API](/l/cs/developers/extend/capabilities/apis). +U větších exportů (20 000+ záznamů) použijte filtry pro export po dávkách nebo použijte [API](/l/cs/developers/api). ### Oprávnění @@ -148,7 +148,7 @@ API nemá limit počtu záznamů: 2. Použijte GraphQL API k dotazování na záznamy 3. Zpracujte výsledky ve své aplikaci -Viz: [Dokumentace API](/l/cs/developers/extend/capabilities/apis) +Viz: [Dokumentace API](/l/cs/developers/api) ## Tipy a osvědčené postupy @@ -206,4 +206,4 @@ Exportované soubory mohou obsahovat citlivá data: * [Jak aktualizovat existující záznamy](/l/cs/user-guide/data-migration/how-tos/update-existing-records-via-import) — upravte a znovu importujte svůj export * [Jak importovat data přes API](/l/cs/user-guide/data-migration/how-tos/import-data-via-api) — pro velké datové sady -* [Dokumentace API](/l/cs/developers/extend/capabilities/apis) — vytvářejte vlastní pracovní postupy pro export +* [Dokumentace API](/l/cs/developers/api) — vytvářejte vlastní pracovní postupy pro export diff --git a/packages/twenty-docs/l/cs/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/cs/user-guide/data-migration/how-tos/import-data-via-api.mdx index 8da6d35611d..40f540db954 100644 --- a/packages/twenty-docs/l/cs/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/cs/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty podporuje dva typy API: | API | Vhodné pro | Dokumentace | | ----------- | ----------------------------------------------------------------- | ------------------------------------------------------- | -| **GraphQL** | Flexibilní dotazy, získávání souvisejících dat, komplexní operace | [Dokumentace API](/l/cs/developers/extend/capabilities/apis) | -| **REST** | Jednoduché CRUD operace, známé postupy REST | [Dokumentace API](/l/cs/developers/extend/capabilities/apis) | +| **GraphQL** | Flexibilní dotazy, získávání souvisejících dat, komplexní operace | [Dokumentace API](/l/cs/developers/api) | +| **REST** | Jednoduché CRUD operace, známé postupy REST | [Dokumentace API](/l/cs/developers/api) | Obě API podporují: @@ -173,4 +173,4 @@ Kontaktujte nás na [contact@twenty.com](mailto:contact@twenty.com) nebo prozkou Úplné podrobnosti implementace, ukázky kódu a referenci schématu najdete zde: -* [Dokumentace API](/l/cs/developers/extend/capabilities/apis) +* [Dokumentace API](/l/cs/developers/api) diff --git a/packages/twenty-docs/l/cs/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/cs/user-guide/getting-started/capabilities/what-is-twenty.mdx index 01cdec726cd..d3bc17fa844 100644 --- a/packages/twenty-docs/l/cs/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/cs/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ Open-source je základ našeho přístupu, zajišťuje, že Twenty se vyvíjí s * **Přehledy:** Sledujte výkon pomocí vlastních sestav a vizualizací. [Zobrazit přehledy](/l/cs/user-guide/dashboards/overview). * **Oprávnění a přístup:** Ovládejte, kdo může zobrazit, upravovat a spravovat vaše data pomocí oprávnění založených na rolích. [Nastavte přístup](/l/cs/user-guide/permissions-access/overview). * **Poznámky a úkoly:** Vytvářejte poznámky a úkoly propojené s vašimi záznamy pro lepší spolupráci. -* **API & Webhooks:** Připojte se k dalším aplikacím a vytvářejte vlastní integrace. [Začněte integraci](/l/cs/developers/extend/capabilities/apis). +* **API & Webhooks:** Připojte se k dalším aplikacím a vytvářejte vlastní integrace. [Začněte integraci](/l/cs/developers/api). ## Připojte se nyní diff --git a/packages/twenty-docs/l/cs/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/cs/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index 6b93ecca11b..df57a76f77f 100644 --- a/packages/twenty-docs/l/cs/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/cs/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ Vytvořte cílová pole v **Nastavení → Datový model → Příležitosti**: * Velikost společnosti: `{{searchRecords[0].employees}}` -**Omezení pro Úkoly a Poznámky**: Relace u Úkolů a Poznámek jsou napevno nastaveny jako mnoho k mnoha a zatím nejsou k dispozici ve spouštěčích ani akcích pracovních postupů. Pro přístup k těmto relacím použijte místo toho [API](/l/cs/developers/extend/capabilities/apis). +**Omezení pro Úkoly a Poznámky**: Relace u Úkolů a Poznámek jsou napevno nastaveny jako mnoho k mnoha a zatím nejsou k dispozici ve spouštěčích ani akcích pracovních postupů. Pro přístup k těmto relacím použijte místo toho [API](/l/cs/developers/api). ## Oboustranná synchronizace diff --git a/packages/twenty-docs/l/de/developers/extend/extend.mdx b/packages/twenty-docs/l/de/developers/extend/extend.mdx index ac5b4caa55d..cd234e6c65c 100644 --- a/packages/twenty-docs/l/de/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/de/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Erweitern description: Erweitern Sie die Funktionalität von Twenty mit APIs, Webhooks und benutzerdefinierten Apps. +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ Twenty ist darauf ausgelegt, erweiterbar zu sein. Verwenden Sie unsere APIs, Web ## Erste Schritte - + Verbinden Sie sich programmgesteuert mit Twenty - + Erhalten Sie Benachrichtigungen über Ereignisse in Echtzeit - + Erstellen Sie Anpassungen als Code (Alpha) diff --git a/packages/twenty-docs/l/de/developers/introduction.mdx b/packages/twenty-docs/l/de/developers/introduction.mdx index d9b37c2174f..ea8d287a305 100644 --- a/packages/twenty-docs/l/de/developers/introduction.mdx +++ b/packages/twenty-docs/l/de/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Willkommen in der Twenty-Entwicklerdokumentation, Ihren Ressourcen import { CardTitle } from "/snippets/card-title.mdx" - - - Erweitern - Erstellen Sie Integrationen mit APIs, Webhooks und benutzerdefinierten Apps. + + + API + Abfragen und modifizieren Sie Ihre CRM-Daten mit REST oder GraphQL. - + + Webhooks + Erhalten Sie Echtzeit-Benachrichtigungen bei Ereignissen. + + + + Apps + Erstellen Sie benutzerdefinierte Anwendungen, die die Möglichkeiten von Twenty erweitern. + + + Selbst hosten Stellen Sie Twenty auf Ihrer eigenen Infrastruktur bereit und verwalten Sie es. - + Mitwirken Treten Sie unserer Open-Source-Community bei und tragen Sie zu Twenty bei. diff --git a/packages/twenty-docs/l/de/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/de/user-guide/data-migration/how-tos/export-your-data.mdx index c44c3480929..95d340260c6 100644 --- a/packages/twenty-docs/l/de/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/de/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ Exportieren Sie die Daten Ihres Arbeitsbereichs als CSV für Backups, Berichte o * Nur **sichtbare Spalten** werden exportiert * Nur **gefilterte Datensätze** werden exportiert (basierend auf Ihrer aktuellen Ansicht) -Für größere Exporte (mehr als 20.000 Datensätze) verwenden Sie Filter, um stapelweise zu exportieren, oder nutzen Sie die [API](/l/de/developers/extend/capabilities/apis). +Für größere Exporte (mehr als 20.000 Datensätze) verwenden Sie Filter, um stapelweise zu exportieren, oder nutzen Sie die [API](/l/de/developers/api). ### Berechtigungen @@ -148,7 +148,7 @@ Die API hat kein Datensatzlimit: 2. Verwenden Sie die GraphQL-API, um Datensätze abzufragen 3. Verarbeiten Sie die Ergebnisse in Ihrer Anwendung -Siehe: [API-Dokumentation](/l/de/developers/extend/capabilities/apis) +Siehe: [API-Dokumentation](/l/de/developers/api) ## Tipps und Best Practices @@ -206,4 +206,4 @@ Exportierte Dateien können sensible Daten enthalten: * [So aktualisieren Sie vorhandene Datensätze](/l/de/user-guide/data-migration/how-tos/update-existing-records-via-import) — bearbeiten Sie Ihren Export und importieren Sie ihn erneut * [So importieren Sie Daten über die API](/l/de/user-guide/data-migration/how-tos/import-data-via-api) — für große Datensätze -* [API-Dokumentation](/l/de/developers/extend/capabilities/apis) — erstellen Sie benutzerdefinierte Export-Workflows +* [API-Dokumentation](/l/de/developers/api) — erstellen Sie benutzerdefinierte Export-Workflows diff --git a/packages/twenty-docs/l/de/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/de/user-guide/data-migration/how-tos/import-data-via-api.mdx index 42839dc8441..adc8e45b4a3 100644 --- a/packages/twenty-docs/l/de/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/de/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty unterstützt zwei API-Typen: | API | Am besten geeignet für | Dokumentation | | ----------- | ---------------------------------------------------------------- | --------------------------------------------------------- | -| **GraphQL** | Flexible Abfragen, Abruf verknüpfter Daten, komplexe Operationen | [API-Dokumentation](/l/de/developers/extend/capabilities/apis) | -| **REST** | Einfache CRUD-Operationen, vertraute REST-Muster | [API-Dokumentation](/l/de/developers/extend/capabilities/apis) | +| **GraphQL** | Flexible Abfragen, Abruf verknüpfter Daten, komplexe Operationen | [API-Dokumentation](/l/de/developers/api) | +| **REST** | Einfache CRUD-Operationen, vertraute REST-Muster | [API-Dokumentation](/l/de/developers/api) | Beide APIs unterstützen: @@ -173,4 +173,4 @@ Kontaktieren Sie uns unter [contact@twenty.com](mailto:contact@twenty.com) oder Für vollständige Implementierungsdetails, Codebeispiele und Schema-Referenz: -* [API-Dokumentation](/l/de/developers/extend/capabilities/apis) +* [API-Dokumentation](/l/de/developers/api) diff --git a/packages/twenty-docs/l/de/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/de/user-guide/getting-started/capabilities/what-is-twenty.mdx index d0126b017c9..48cf5127b27 100644 --- a/packages/twenty-docs/l/de/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/de/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ Open-Source ist das Fundament unseres Ansatzes, das sicherstellt, dass Twenty si * **Dashboards:** Verfolgen Sie die Leistung mit benutzerdefinierten Berichten und Visualisierungen. [Dashboards anzeigen](/l/de/user-guide/dashboards/overview). * **Berechtigungen & Zugriff:** Steuern Sie mithilfe rollenbasierter Berechtigungen, wer Ihre Daten anzeigen, bearbeiten und verwalten kann. [Zugriff konfigurieren](/l/de/user-guide/permissions-access/overview). * **Notizen & Aufgaben:** Erstellen Sie Notizen und Aufgaben, die mit Ihren Datensätzen verknüpft sind, für eine bessere Zusammenarbeit. -* **API & Webhooks:** Verbinden Sie sich mit anderen Apps und erstellen Sie benutzerdefinierte Integrationen. [Integration starten](/l/de/developers/extend/capabilities/apis). +* **API & Webhooks:** Verbinden Sie sich mit anderen Apps und erstellen Sie benutzerdefinierte Integrationen. [Integration starten](/l/de/developers/api). ## Jetzt beitreten diff --git a/packages/twenty-docs/l/de/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/de/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index 2a7a5941b4b..649afdc53aa 100644 --- a/packages/twenty-docs/l/de/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/de/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ Erstellen Sie die Zielfelder in **Settings → Data Model → Opportunities**: * Unternehmensgröße: `{{searchRecords[0].employees}}` -**Einschränkung bei Aufgaben und Notizen**: Beziehungen bei Aufgaben und Notizen sind fest als Viele-zu-Viele implementiert und stehen in Workflow-Auslösern oder -Aktionen noch nicht zur Verfügung. Um auf diese Beziehungen zuzugreifen, verwenden Sie stattdessen die [API](/l/de/developers/extend/capabilities/apis). +**Einschränkung bei Aufgaben und Notizen**: Beziehungen bei Aufgaben und Notizen sind fest als Viele-zu-Viele implementiert und stehen in Workflow-Auslösern oder -Aktionen noch nicht zur Verfügung. Um auf diese Beziehungen zuzugreifen, verwenden Sie stattdessen die [API](/l/de/developers/api). ## Bidirektionale Synchronisierung diff --git a/packages/twenty-docs/l/es/developers/extend/extend.mdx b/packages/twenty-docs/l/es/developers/extend/extend.mdx index b64b2e3dba8..f6445743ecb 100644 --- a/packages/twenty-docs/l/es/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/es/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Ampliar description: Amplía la funcionalidad de Twenty con APIs, webhooks y aplicaciones personalizadas. +redirect: /developers/introduction --- @@ -20,15 +21,15 @@ Twenty está diseñado para ser extensible. Usa nuestras APIs, webhooks y el fra ## Primeros pasos - + Conéctate a Twenty de forma programática - + Recibe notificaciones de eventos en tiempo real - + Crea personalizaciones como código (Alpha) diff --git a/packages/twenty-docs/l/es/developers/introduction.mdx b/packages/twenty-docs/l/es/developers/introduction.mdx index 711c0fbf534..9cfad10e099 100644 --- a/packages/twenty-docs/l/es/developers/introduction.mdx +++ b/packages/twenty-docs/l/es/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Bienvenido a la documentación para desarrolladores de Twenty, tus import { CardTitle } from "/snippets/card-title.mdx" - - - Ampliar - Crea integraciones con APIs, webhooks y aplicaciones personalizadas. + + + API + Consulta y modifica los datos de tu CRM con REST o GraphQL. - + + Webhooks + Recibe notificaciones en tiempo real cuando ocurran eventos. + + + + Apps + Crea aplicaciones personalizadas que amplíen las capacidades de Twenty. + + + Autoalojar Despliega y administra Twenty en tu propia infraestructura. - + Contribuir Únete a nuestra comunidad de código abierto y contribuye a Twenty. diff --git a/packages/twenty-docs/l/es/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/es/user-guide/data-migration/how-tos/export-your-data.mdx index 8bb35b84004..a2ed19c4b9d 100644 --- a/packages/twenty-docs/l/es/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/es/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ Exporta los datos de tu espacio de trabajo a CSV para copias de seguridad, infor * Solo se exportan las **columnas visibles** * Solo se exportan los **registros filtrados** (según tu vista actual) -Para exportaciones más grandes (más de 20.000 registros), usa filtros para exportar por lotes o usa la [API](/l/es/developers/extend/capabilities/apis). +Para exportaciones más grandes (más de 20.000 registros), usa filtros para exportar por lotes o usa la [API](/l/es/developers/api). ### Permisos @@ -148,7 +148,7 @@ La API no tiene límite de registros: 2. Usa la API de GraphQL para consultar registros 3. Procesa los resultados en tu aplicación -Consulta: [Documentación de la API](/l/es/developers/extend/capabilities/apis) +Consulta: [Documentación de la API](/l/es/developers/api) ## Consejos y mejores prácticas @@ -206,4 +206,4 @@ Los archivos exportados pueden contener datos sensibles: * [Cómo actualizar registros existentes](/l/es/user-guide/data-migration/how-tos/update-existing-records-via-import) — edita y vuelve a importar tu exportación * [Cómo importar datos mediante la API](/l/es/user-guide/data-migration/how-tos/import-data-via-api) — para conjuntos de datos grandes -* [Documentación de la API](/l/es/developers/extend/capabilities/apis) — crea flujos de trabajo de exportación personalizados +* [Documentación de la API](/l/es/developers/api) — crea flujos de trabajo de exportación personalizados diff --git a/packages/twenty-docs/l/es/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/es/user-guide/data-migration/how-tos/import-data-via-api.mdx index 25484dd6b0f..ca998af7d6f 100644 --- a/packages/twenty-docs/l/es/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/es/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty admite dos tipos de API: | API | Ideal para | Documentación | | ----------- | --------------------------------------------------------------------------- | --------------------------------------------------------------- | -| **GraphQL** | Consultas flexibles, obtención de datos relacionados, operaciones complejas | [Documentación de la API](/l/es/developers/extend/capabilities/apis) | -| **REST** | Operaciones CRUD simples, patrones REST familiares | [Documentación de la API](/l/es/developers/extend/capabilities/apis) | +| **GraphQL** | Consultas flexibles, obtención de datos relacionados, operaciones complejas | [Documentación de la API](/l/es/developers/api) | +| **REST** | Operaciones CRUD simples, patrones REST familiares | [Documentación de la API](/l/es/developers/api) | Ambas APIs admiten: @@ -173,4 +173,4 @@ Contáctanos en [contact@twenty.com](mailto:contact@twenty.com) o explora nuestr Para conocer todos los detalles de implementación, ejemplos de código y referencia de esquemas: -* [Documentación de la API](/l/es/developers/extend/capabilities/apis) +* [Documentación de la API](/l/es/developers/api) diff --git a/packages/twenty-docs/l/es/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/es/user-guide/getting-started/capabilities/what-is-twenty.mdx index bb9242674ba..28b3ffabbe7 100644 --- a/packages/twenty-docs/l/es/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/es/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ El código abierto es la base de nuestro enfoque, asegurando que Twenty evolucio * **Tableros:** Rastree el rendimiento con informes y visualizaciones personalizadas. [Ver tableros](/l/es/user-guide/dashboards/overview). * **Permisos y acceso:** Controle quién puede ver, editar y administrar sus datos con permisos basados en roles. [Configurar el acceso](/l/es/user-guide/permissions-access/overview). * **Notas y tareas:** Cree notas y tareas vinculadas a sus registros para una mejor colaboración. -* **API y Webhooks:** Conéctese con otras aplicaciones y cree integraciones personalizadas. [Comienza a integrar](/l/es/developers/extend/capabilities/apis). +* **API y Webhooks:** Conéctese con otras aplicaciones y cree integraciones personalizadas. [Comienza a integrar](/l/es/developers/api). ## Únete ahora diff --git a/packages/twenty-docs/l/es/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/es/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index 099c5aee79d..503266176ea 100644 --- a/packages/twenty-docs/l/es/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/es/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ Crea los campos de destino en **Configuración → Modelo de datos → Oportunid * Tamaño de la empresa: `{{searchRecords[0].employees}}` - **Limitación de Tareas y Notas**: Las relaciones en Tareas y Notas están codificadas como de muchos a muchos y aún no están disponibles en los desencadenantes o acciones de flujos de trabajo. Para acceder a estas relaciones, usa la [API](/l/es/developers/extend/capabilities/apis). + **Limitación de Tareas y Notas**: Las relaciones en Tareas y Notas están codificadas como de muchos a muchos y aún no están disponibles en los desencadenantes o acciones de flujos de trabajo. Para acceder a estas relaciones, usa la [API](/l/es/developers/api). ## Sincronización bidireccional diff --git a/packages/twenty-docs/l/fr/developers/extend/extend.mdx b/packages/twenty-docs/l/fr/developers/extend/extend.mdx index bcfb382c54c..93f43c42ca5 100644 --- a/packages/twenty-docs/l/fr/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/fr/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Étendre description: Étendez les fonctionnalités de Twenty avec des API, des webhooks et des applications personnalisées. +redirect: /developers/introduction --- @@ -20,15 +21,15 @@ Twenty est conçu pour être extensible. Utilisez nos API, nos webhooks et notre ## Prise en main - + Connectez-vous à Twenty par programmation - + Recevez des notifications d'événements en temps réel - + Créez des personnalisations sous forme de code (Alpha) diff --git a/packages/twenty-docs/l/fr/developers/introduction.mdx b/packages/twenty-docs/l/fr/developers/introduction.mdx index 16fc91ef640..22f07ae259d 100644 --- a/packages/twenty-docs/l/fr/developers/introduction.mdx +++ b/packages/twenty-docs/l/fr/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Bienvenue dans la documentation pour développeurs de Twenty, vos r import { CardTitle } from "/snippets/card-title.mdx" - - - Étendre - Créez des intégrations avec des API, des webhooks et des applications personnalisées. + + + API + Interrogez et modifiez vos données CRM avec REST ou GraphQL. - + + Webhooks + Recevez des notifications en temps réel lors d'événements. + + + + Apps + Créez des applications personnalisées qui étendent les capacités de Twenty. + + + Auto-héberger Déployez et gérez Twenty sur votre propre infrastructure. - + Contribuer Rejoignez notre communauté open source et contribuez à Twenty. diff --git a/packages/twenty-docs/l/fr/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/fr/user-guide/data-migration/how-tos/export-your-data.mdx index 805e4c6b31c..bb7851b46af 100644 --- a/packages/twenty-docs/l/fr/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/fr/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ Exportez les données de votre espace de travail en CSV pour des sauvegardes, de * Seules les **colonnes visibles** sont exportées * Seuls les **enregistrements filtrés** sont exportés (selon votre vue actuelle) -Pour des exports plus volumineux (plus de 20 000 enregistrements), utilisez des filtres pour exporter par lots ou utilisez l'[API](/l/fr/developers/extend/capabilities/apis). +Pour des exports plus volumineux (plus de 20 000 enregistrements), utilisez des filtres pour exporter par lots ou utilisez l'[API](/l/fr/developers/api). ### Autorisations @@ -148,7 +148,7 @@ L'API n'a pas de limite d'enregistrements : 2. Utilisez l'API GraphQL pour interroger les enregistrements 3. Traitez les résultats dans votre application -Voir : [Documentation de l'API](/l/fr/developers/extend/capabilities/apis) +Voir : [Documentation de l'API](/l/fr/developers/api) ## Conseils et bonnes pratiques @@ -206,4 +206,4 @@ Les fichiers exportés peuvent contenir des données sensibles : * [Comment mettre à jour des enregistrements existants](/l/fr/user-guide/data-migration/how-tos/update-existing-records-via-import) — modifiez et réimportez votre export * [Comment importer des données via l'API](/l/fr/user-guide/data-migration/how-tos/import-data-via-api) — pour de grands jeux de données -* [Documentation de l'API](/l/fr/developers/extend/capabilities/apis) — créez des flux de travail d'exportation personnalisés +* [Documentation de l'API](/l/fr/developers/api) — créez des flux de travail d'exportation personnalisés diff --git a/packages/twenty-docs/l/fr/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/fr/user-guide/data-migration/how-tos/import-data-via-api.mdx index b5761b8f3bc..2ac448f4c0a 100644 --- a/packages/twenty-docs/l/fr/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/fr/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty prend en charge deux types d'API : | API | Idéal pour | Documentation | | ----------- | ----------------------------------------------------------------------- | -------------------------------------------------------------- | -| **GraphQL** | Requêtes flexibles, récupération de données liées, opérations complexes | [Documentation de l'API](/l/fr/developers/extend/capabilities/apis) | -| **REST** | Opérations CRUD simples, modèles REST familiers | [Documentation de l'API](/l/fr/developers/extend/capabilities/apis) | +| **GraphQL** | Requêtes flexibles, récupération de données liées, opérations complexes | [Documentation de l'API](/l/fr/developers/api) | +| **REST** | Opérations CRUD simples, modèles REST familiers | [Documentation de l'API](/l/fr/developers/api) | Les deux API prennent en charge : @@ -173,4 +173,4 @@ Contactez-nous à [contact@twenty.com](mailto:contact@twenty.com) ou découvrez Pour les détails complets de mise en œuvre, des exemples de code et la référence du schéma : -* [Documentation de l'API](/l/fr/developers/extend/capabilities/apis) +* [Documentation de l'API](/l/fr/developers/api) diff --git a/packages/twenty-docs/l/fr/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/fr/user-guide/getting-started/capabilities/what-is-twenty.mdx index 2f3ae21fed0..f0d32230f36 100644 --- a/packages/twenty-docs/l/fr/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/fr/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ L'open-source est la pierre angulaire de notre approche, garantissant que Twenty * **Tableaux de bord :** Suivez les performances grâce à des rapports et des visualisations personnalisés. [Voir les tableaux de bord](/l/fr/user-guide/dashboards/overview). * **Autorisations et accès :** Contrôlez qui peut voir, modifier et gérer vos données grâce à des autorisations basées sur les rôles. [Configurer l'accès](/l/fr/user-guide/permissions-access/overview). * **Notes et tâches :** Créez des notes et des tâches liées à vos enregistrements pour une meilleure collaboration. -* **API & Webhooks :** Connectez-vous à d'autres applications et créez des intégrations personnalisées. [Commencez l'intégration](/l/fr/developers/extend/capabilities/apis). +* **API & Webhooks :** Connectez-vous à d'autres applications et créez des intégrations personnalisées. [Commencez l'intégration](/l/fr/developers/api). ## Rejoignez maintenant diff --git a/packages/twenty-docs/l/fr/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/fr/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index 9ccfa11a969..814dbc6a3d2 100644 --- a/packages/twenty-docs/l/fr/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/fr/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ Créez les champs de destination dans **Paramètres → Modèle de données → * Taille de l'entreprise : `{{searchRecords[0].employees}}` - **Limitation concernant les tâches et les notes** : Les relations sur les tâches et les notes sont codées en dur en plusieurs-à-plusieurs et ne sont pas encore disponibles dans les déclencheurs ou actions de workflows. Pour accéder à ces relations, utilisez plutôt l'[API](/l/fr/developers/extend/capabilities/apis). + **Limitation concernant les tâches et les notes** : Les relations sur les tâches et les notes sont codées en dur en plusieurs-à-plusieurs et ne sont pas encore disponibles dans les déclencheurs ou actions de workflows. Pour accéder à ces relations, utilisez plutôt l'[API](/l/fr/developers/api). ## Synchronisation bidirectionnelle diff --git a/packages/twenty-docs/l/it/developers/extend/extend.mdx b/packages/twenty-docs/l/it/developers/extend/extend.mdx index c460f9c2ba8..4f1166475d0 100644 --- a/packages/twenty-docs/l/it/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/it/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Estendi description: Estendi le funzionalità di Twenty con API, webhook e app personalizzate. +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ Twenty è progettato per essere estensibile. Usa le nostre API, i webhook e il f ## Per iniziare - + Connettiti a Twenty in modo programmatico - + Ricevi notifiche sugli eventi in tempo reale - + Crea personalizzazioni come codice (Alpha) diff --git a/packages/twenty-docs/l/it/developers/introduction.mdx b/packages/twenty-docs/l/it/developers/introduction.mdx index 4c73b895700..c8a0e734d8a 100644 --- a/packages/twenty-docs/l/it/developers/introduction.mdx +++ b/packages/twenty-docs/l/it/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Benvenuto nella documentazione per sviluppatori di Twenty, le tue r import { CardTitle } from "/snippets/card-title.mdx" - - - Estendi - Crea integrazioni con API, webhook e app personalizzate. + + + API + Interroga e modifica i dati del tuo CRM con REST o GraphQL. - + + Webhooks + Ricevi notifiche in tempo reale quando si verificano eventi. + + + + Apps + Crea applicazioni personalizzate che estendono le capacità di Twenty. + + + Self-hosting Distribuisci e gestisci Twenty sulla tua infrastruttura. - + Contribuisci Unisciti alla nostra community open source e contribuisci a Twenty. diff --git a/packages/twenty-docs/l/it/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/it/user-guide/data-migration/how-tos/export-your-data.mdx index 499ab0dfd3d..cf93b4540bf 100644 --- a/packages/twenty-docs/l/it/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/it/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ Esporta i dati del tuo spazio di lavoro in CSV per backup, reportistica o migraz * Vengono esportate solo le **colonne visibili** * Vengono esportati solo i **record filtrati** (in base alla vista corrente) -Per esportazioni più grandi (oltre 20.000 record), usa i filtri per esportare a lotti oppure usa le [API](/l/it/developers/extend/capabilities/apis). +Per esportazioni più grandi (oltre 20.000 record), usa i filtri per esportare a lotti oppure usa le [API](/l/it/developers/api). ### Permessi @@ -148,7 +148,7 @@ Le API non hanno un limite di record: 2. Usa le API GraphQL per interrogare i record 3. Elabora i risultati nella tua applicazione -Vedi: [Documentazione API](/l/it/developers/extend/capabilities/apis) +Vedi: [Documentazione API](/l/it/developers/api) ## Suggerimenti e buone pratiche @@ -206,4 +206,4 @@ I file esportati possono contenere dati sensibili: * [Come aggiornare i record esistenti](/l/it/user-guide/data-migration/how-tos/update-existing-records-via-import) — modifica e reimporta la tua esportazione * [Come importare i dati tramite API](/l/it/user-guide/data-migration/how-tos/import-data-via-api) — per set di dati di grandi dimensioni -* [Documentazione API](/l/it/developers/extend/capabilities/apis) — crea flussi di lavoro di esportazione personalizzati +* [Documentazione API](/l/it/developers/api) — crea flussi di lavoro di esportazione personalizzati diff --git a/packages/twenty-docs/l/it/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/it/user-guide/data-migration/how-tos/import-data-via-api.mdx index d7b2438b676..821df861350 100644 --- a/packages/twenty-docs/l/it/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/it/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty supporta due tipi di API: | API | Ideale per | Documentazione | | ----------- | ------------------------------------------------------------------ | ---------------------------------------------------------- | -| **GraphQL** | Query flessibili, recupero di dati correlati, operazioni complesse | [Documentazione API](/l/it/developers/extend/capabilities/apis) | -| **REST** | Operazioni CRUD semplici, pattern REST familiari | [Documentazione API](/l/it/developers/extend/capabilities/apis) | +| **GraphQL** | Query flessibili, recupero di dati correlati, operazioni complesse | [Documentazione API](/l/it/developers/api) | +| **REST** | Operazioni CRUD semplici, pattern REST familiari | [Documentazione API](/l/it/developers/api) | Entrambe le API supportano: @@ -173,4 +173,4 @@ Contattaci a [contact@twenty.com](mailto:contact@twenty.com) oppure scopri i nos Per i dettagli completi di implementazione, esempi di codice e riferimento allo schema: -* [Documentazione API](/l/it/developers/extend/capabilities/apis) +* [Documentazione API](/l/it/developers/api) diff --git a/packages/twenty-docs/l/it/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/it/user-guide/getting-started/capabilities/what-is-twenty.mdx index 749d6dd4371..c8625dcaf02 100644 --- a/packages/twenty-docs/l/it/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/it/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ L'open-source è la base del nostro approccio, garantendo che Twenty evolva con * **Dashboard:** Monitora le prestazioni con report e visualizzazioni personalizzati. [Visualizza le dashboard](/l/it/user-guide/dashboards/overview). * **Autorizzazioni e accesso:** Controlla chi può visualizzare, modificare e gestire i tuoi dati con autorizzazioni basate sui ruoli. [Configura l'accesso](/l/it/user-guide/permissions-access/overview). * **Note e attività:** Crea note e attività collegate ai tuoi record per una collaborazione migliore. -* **API e Webhooks:** Connettiti ad altre app e crea integrazioni personalizzate. [Inizia a integrare](/l/it/developers/extend/capabilities/apis). +* **API e Webhooks:** Connettiti ad altre app e crea integrazioni personalizzate. [Inizia a integrare](/l/it/developers/api). ## Unisciti ora diff --git a/packages/twenty-docs/l/it/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/it/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index 8396bc4f329..1b8c46a699a 100644 --- a/packages/twenty-docs/l/it/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/it/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ Crea i campi di destinazione in **Impostazioni → Modello dati → Opportunità * Dimensione aziendale: `{{searchRecords[0].employees}}` -**Limitazione di Attività e Note**: Le relazioni su Attività e Note sono codificate come molte-a-molte e non sono ancora disponibili nei trigger o nelle azioni dei flussi di lavoro. Per accedere a queste relazioni, usa invece le [API](/l/it/developers/extend/capabilities/apis). +**Limitazione di Attività e Note**: Le relazioni su Attività e Note sono codificate come molte-a-molte e non sono ancora disponibili nei trigger o nelle azioni dei flussi di lavoro. Per accedere a queste relazioni, usa invece le [API](/l/it/developers/api). ## Sincronizzazione bidirezionale diff --git a/packages/twenty-docs/l/ja/developers/extend/extend.mdx b/packages/twenty-docs/l/ja/developers/extend/extend.mdx index c9f7a840c14..5360cd2c652 100644 --- a/packages/twenty-docs/l/ja/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/ja/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: 拡張 description: API、Webhook、カスタムアプリで Twenty の機能を拡張できます。 +redirect: /developers/introduction --- @@ -20,15 +21,15 @@ Twenty は拡張性を念頭に設計されています。 当社の API、Webho ## 始めに - + プログラムから Twenty に接続 - + イベントの通知をリアルタイムで受け取る - + カスタマイズをコードとして構築(アルファ版) diff --git a/packages/twenty-docs/l/ja/developers/introduction.mdx b/packages/twenty-docs/l/ja/developers/introduction.mdx index 3f257bc2504..d5a07bc4149 100644 --- a/packages/twenty-docs/l/ja/developers/introduction.mdx +++ b/packages/twenty-docs/l/ja/developers/introduction.mdx @@ -1,23 +1,33 @@ --- title: 始めに -description: Welcome to Twenty Developer Documentation, your resources for extending, self-hosting, and contributing to Twenty. +description: Twenty 開発者ドキュメントへようこそ。Twenty の拡張、セルフホスティング、貢献のためのリソースです。 --- import { CardTitle } from "/snippets/card-title.mdx" - - - Extend - Build integrations with APIs, webhooks, and custom apps. + + + API + REST または GraphQL で CRM データをクエリおよび変更します。 - + + Webhooks + イベント発生時にリアルタイムで通知を受け取ります。 + + + + Apps + Twenty の機能を拡張するカスタムアプリケーションを構築します。 + + + Self-Host - Deploy and manage Twenty on your own infrastructure. + ご自身のインフラストラクチャで Twenty をデプロイおよび管理します。 - + Contribute - Join our open-source community and contribute to Twenty. + オープンソースコミュニティに参加し、Twenty に貢献しましょう。 diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/export-your-data.mdx index 4e6f6593e34..44bcd987f5f 100644 --- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; * **表示されている列**のみがエクスポートされます * **フィルターで絞り込まれたレコード**のみがエクスポートされます(現在のビューに基づきます) -大規模なエクスポート(20,000 件超)では、フィルターを使ってバッチに分けてエクスポートするか、[API](/l/ja/developers/extend/capabilities/apis) を使用してください。 +大規模なエクスポート(20,000 件超)では、フィルターを使ってバッチに分けてエクスポートするか、[API](/l/ja/developers/api) を使用してください。 ### 権限 @@ -148,7 +148,7 @@ API にはレコード数の上限がありません: 2. GraphQL API を使用してレコードをクエリします 3. アプリケーションで結果を処理 -参照:[API ドキュメント](/l/ja/developers/extend/capabilities/apis) +参照:[API ドキュメント](/l/ja/developers/api) ## ヒントとベストプラクティス @@ -206,4 +206,4 @@ API にはレコード数の上限がありません: * [既存レコードを更新する方法](/l/ja/user-guide/data-migration/how-tos/update-existing-records-via-import) — エクスポートを編集して再インポート * [API でデータをインポートする方法](/l/ja/user-guide/data-migration/how-tos/import-data-via-api) — 大規模データセット向け -* [API ドキュメント](/l/ja/developers/extend/capabilities/apis) — カスタムのエクスポートワークフローを構築 +* [API ドキュメント](/l/ja/developers/api) — カスタムのエクスポートワークフローを構築 diff --git a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx index a70cac4fa60..b96c9e030d7 100644 --- a/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/ja/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty は 2 種類の API をサポートしています: | API | 最適な用途 | ドキュメント | | ----------- | ------------------------------ | -------------------------------------------------- | -| **GraphQL** | 柔軟なクエリ、関連データの取得、複雑な操作に最適 | [API ドキュメント](/l/ja/developers/extend/capabilities/apis) | -| **REST** | シンプルな CRUD 操作、馴染みのある REST パターン | [API ドキュメント](/l/ja/developers/extend/capabilities/apis) | +| **GraphQL** | 柔軟なクエリ、関連データの取得、複雑な操作に最適 | [API ドキュメント](/l/ja/developers/api) | +| **REST** | シンプルな CRUD 操作、馴染みのある REST パターン | [API ドキュメント](/l/ja/developers/api) | 両方の API でサポートされる内容: @@ -173,4 +173,4 @@ GraphQL API は **バッチ アップサート**をサポートしています 実装の詳細、コード例、スキーマリファレンスについては次を参照してください: -* [API ドキュメント](/l/ja/developers/extend/capabilities/apis) +* [API ドキュメント](/l/ja/developers/api) diff --git a/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/what-is-twenty.mdx index b6c8f134ad5..74eeadb8a58 100644 --- a/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/ja/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -39,7 +39,7 @@ description: Twenty is an open-source CRM that gives you the building blocks to * **ダッシュボード:** カスタムレポートや可視化でパフォーマンスを追跡します。 [ダッシュボードを表示](/l/ja/user-guide/dashboards/overview)。 * **権限とアクセス:** ロールベースの権限で、誰がデータを閲覧、編集、管理できるかを制御します。 [アクセスを設定](/l/ja/user-guide/permissions-access/overview)。 * **ノートとタスク:** より良いコラボレーションのために、レコードに関連付けられたノートやタスクを作成します。 -* **APIおよびWebhooks:** 他のアプリと接続し、カスタム統合を構築します。 [統合を開始](/l/ja/developers/extend/capabilities/apis). +* **APIおよびWebhooks:** 他のアプリと接続し、カスタム統合を構築します。 [統合を開始](/l/ja/developers/api). ## 今すぐ参加 diff --git a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index da00dc8ff6c..f0ff7949092 100644 --- a/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/ja/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ description: ワークフローを使用して、関連レコードのデータ * 会社規模: `{{searchRecords[0].employees}}` - **タスクとノートの制限**: タスクとノートのリレーションは多対多としてハードコードされており、ワークフローのトリガーやアクションではまだ使用できません。 これらのリレーションにアクセスするには、代わりに[API](/l/ja/developers/extend/capabilities/apis)を使用してください。 + **タスクとノートの制限**: タスクとノートのリレーションは多対多としてハードコードされており、ワークフローのトリガーやアクションではまだ使用できません。 これらのリレーションにアクセスするには、代わりに[API](/l/ja/developers/api)を使用してください。 ## 双方向同期 diff --git a/packages/twenty-docs/l/ko/developers/extend/extend.mdx b/packages/twenty-docs/l/ko/developers/extend/extend.mdx index a76782a4db3..fe0c7ed47b7 100644 --- a/packages/twenty-docs/l/ko/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/ko/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: 확장 description: API, 웹훅 및 맞춤형 앱으로 Twenty의 기능을 확장하세요. +redirect: /developers/introduction --- @@ -20,15 +21,15 @@ Twenty는 확장 가능하도록 설계되었습니다. 당사의 API, 웹훅 ## 시작하기 - + 프로그래밍 방식으로 Twenty에 연결하세요 - + 이벤트에 대한 실시간 알림을 받으세요 - + 코드로 사용자 지정을 구축하세요(알파) diff --git a/packages/twenty-docs/l/ko/developers/introduction.mdx b/packages/twenty-docs/l/ko/developers/introduction.mdx index 35dd83dfd8f..67bbb98f0c4 100644 --- a/packages/twenty-docs/l/ko/developers/introduction.mdx +++ b/packages/twenty-docs/l/ko/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Twenty 개발자 문서에 오신 것을 환영합니다. 이 문 import { CardTitle } from "/snippets/card-title.mdx" - - - 확장 - API, 웹훅 및 맞춤형 앱과의 통합을 구축하세요. + + + API + REST 또는 GraphQL로 CRM 데이터를 쿼리하고 수정합니다. - + + Webhooks + 이벤트 발생 시 실시간 알림을 받습니다. + + + + Apps + Twenty의 기능을 확장하는 맞춤형 애플리케이션을 구축하세요. + + + 자체 호스팅 자체 인프라에 Twenty를 배포하고 관리하세요. - + 기여 오픈 소스 커뮤니티에 참여하고 Twenty에 기여하세요. diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/export-your-data.mdx index 944fb8ce134..7cd281b0e4c 100644 --- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; * **표시된 열**만 내보내집니다 * **필터링된 레코드**만 내보내집니다(현재 보기 기준) -더 큰 내보내기(20,000개 이상의 레코드)에는 필터를 사용해 배치로 내보내거나 [API](/l/ko/developers/extend/capabilities/apis)를 사용하세요. +더 큰 내보내기(20,000개 이상의 레코드)에는 필터를 사용해 배치로 내보내거나 [API](/l/ko/developers/api)를 사용하세요. ### 권한 @@ -148,7 +148,7 @@ API에는 레코드 수 한도가 없습니다: 2. GraphQL API를 사용해 레코드를 쿼리하세요 3. 애플리케이션에서 결과를 처리하세요 -참고: [API 문서](/l/ko/developers/extend/capabilities/apis) +참고: [API 문서](/l/ko/developers/api) ## 팁 및 모범 사례 @@ -206,4 +206,4 @@ API에는 레코드 수 한도가 없습니다: * [기존 레코드를 업데이트하는 방법](/l/ko/user-guide/data-migration/how-tos/update-existing-records-via-import) — 내보낸 파일을 편집한 뒤 다시 가져오세요 * [API로 데이터 가져오는 방법](/l/ko/user-guide/data-migration/how-tos/import-data-via-api) — 대용량 데이터셋용 -* [API 문서](/l/ko/developers/extend/capabilities/apis) — 맞춤 내보내기 워크플로우를 구축하세요 +* [API 문서](/l/ko/developers/api) — 맞춤 내보내기 워크플로우를 구축하세요 diff --git a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-data-via-api.mdx index 102b5c08608..99bafe9a2c4 100644 --- a/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/ko/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty는 두 가지 유형의 API를 지원합니다: | API | 적합한 용도 | 문서 | | ----------- | ----------------------------- | ---------------------------------------------- | -| **GraphQL** | 유연한 쿼리, 연관 데이터 조회, 복잡한 작업에 적합 | [API 문서](/l/ko/developers/extend/capabilities/apis) | -| **REST** | 단순한 CRUD 작업, 익숙한 REST 패턴 | [API 문서](/l/ko/developers/extend/capabilities/apis) | +| **GraphQL** | 유연한 쿼리, 연관 데이터 조회, 복잡한 작업에 적합 | [API 문서](/l/ko/developers/api) | +| **REST** | 단순한 CRUD 작업, 익숙한 REST 패턴 | [API 문서](/l/ko/developers/api) | 두 API 모두 다음을 지원합니다: @@ -173,4 +173,4 @@ GraphQL API는 **배치 업서트**를 지원합니다 — 레코드가 있으 전체 구현 세부정보, 코드 예제, 스키마 참조는 다음을 확인하세요: -* [API 문서](/l/ko/developers/extend/capabilities/apis) +* [API 문서](/l/ko/developers/api) diff --git a/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/what-is-twenty.mdx index cfa5ac621ff..eb79aeb580a 100644 --- a/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/ko/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ description: Twenty는 비즈니스에 필요한 것을 정확히 만들 수 있 * **대시보드:** 맞춤형 보고서와 시각화를 통해 성과를 추적하세요. [대시보드 보기](/l/ko/user-guide/dashboards/overview). * **권한 및 액세스:** 역할 기반 권한을 통해 누가 데이터를 보기, 편집, 관리할 수 있는지 제어하세요. [액세스 구성](/l/ko/user-guide/permissions-access/overview). * **노트 및 작업:** 더 나은 협업을 위해 레코드에 연결된 노트와 작업을 생성하세요. -* **API 및 웹훅:** 다른 앱과 연결하고 맞춤형 통합을 구축하세요. [통합 시작하기](/l/ko/developers/extend/capabilities/apis). +* **API 및 웹훅:** 다른 앱과 연결하고 맞춤형 통합을 구축하세요. [통합 시작하기](/l/ko/developers/api). ## 지금 가입하세요 diff --git a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index 4ab87443f10..0fafba7b32c 100644 --- a/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/ko/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ description: "워크플로우를 사용해 관련 레코드의 데이터를 표 * 회사 규모: `{{searchRecords[0].employees}}` - **작업 및 노트 제한 사항**: 작업과 노트의 관계는 다대다로 하드코딩되어 있으며, 워크플로우 트리거 또는 액션에서 아직 사용할 수 없습니다. 이러한 관계에 액세스하려면 대신 [API](/l/ko/developers/extend/capabilities/apis)를 사용하세요. + **작업 및 노트 제한 사항**: 작업과 노트의 관계는 다대다로 하드코딩되어 있으며, 워크플로우 트리거 또는 액션에서 아직 사용할 수 없습니다. 이러한 관계에 액세스하려면 대신 [API](/l/ko/developers/api)를 사용하세요. ## 양방향 동기화 diff --git a/packages/twenty-docs/l/pt/developers/extend/extend.mdx b/packages/twenty-docs/l/pt/developers/extend/extend.mdx index d34d835fbd6..8418f52ba42 100644 --- a/packages/twenty-docs/l/pt/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/pt/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Estender description: Amplie a funcionalidade do Twenty com APIs, webhooks e aplicativos personalizados. +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ O Twenty foi projetado para ser extensível. Use nossas APIs, webhooks e o frame ## Primeiros passos - + Conecte-se ao Twenty programaticamente - + Receba notificações de eventos em tempo real - + Crie personalizações como código (Alpha) diff --git a/packages/twenty-docs/l/pt/developers/introduction.mdx b/packages/twenty-docs/l/pt/developers/introduction.mdx index 03f46561902..6e3892d6c2e 100644 --- a/packages/twenty-docs/l/pt/developers/introduction.mdx +++ b/packages/twenty-docs/l/pt/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Bem-vindo à Documentação para Desenvolvedores da Twenty, seus re import { CardTitle } from "/snippets/card-title.mdx" - - - Estender - Crie integrações com APIs, webhooks e aplicativos personalizados. + + + API + Consulte e modifique os dados do seu CRM com REST ou GraphQL. - + + Webhooks + Receba notificações em tempo real quando eventos ocorrerem. + + + + Apps + Crie aplicativos personalizados que estendem as capacidades do Twenty. + + + Auto-hospedar Implante e gerencie o Twenty na sua própria infraestrutura. - + Contribuir Junte-se à nossa comunidade de código aberto e contribua para o Twenty. diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/export-your-data.mdx index ca43e98b3bf..f78525460db 100644 --- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ Exporte os dados do seu espaço de trabalho para CSV para backups, relatórios o * Apenas **as colunas visíveis** são exportadas * Apenas **os registros filtrados** são exportados (com base na sua visualização atual) -Para exportações maiores (20,000+ registros), use filtros para exportar em lotes ou use a [API](/l/pt/developers/extend/capabilities/apis). +Para exportações maiores (20,000+ registros), use filtros para exportar em lotes ou use a [API](/l/pt/developers/api). ### Permissões @@ -148,7 +148,7 @@ A API não tem limite de registros: 2. Use a API GraphQL para consultar registros 3. Processe os resultados no seu aplicativo -Veja: [Documentação da API](/l/pt/developers/extend/capabilities/apis) +Veja: [Documentação da API](/l/pt/developers/api) ## Dicas e Boas Práticas @@ -206,4 +206,4 @@ Arquivos exportados podem conter dados sensíveis: * [Como Atualizar Registros Existentes](/l/pt/user-guide/data-migration/how-tos/update-existing-records-via-import) — edite e reimporte sua exportação * [Como Importar Dados via API](/l/pt/user-guide/data-migration/how-tos/import-data-via-api) — para conjuntos de dados grandes -* [Documentação da API](/l/pt/developers/extend/capabilities/apis) — crie fluxos de trabalho de exportação personalizados +* [Documentação da API](/l/pt/developers/api) — crie fluxos de trabalho de exportação personalizados diff --git a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-data-via-api.mdx index b74e5c04a20..895f30a5817 100644 --- a/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/pt/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ A Twenty suporta dois tipos de API: | API | Melhor para | Documentação | | ----------- | ------------------------------------------------------------------------ | ----------------------------------------------------------- | -| **GraphQL** | Consultas flexíveis, obtenção de dados relacionados, operações complexas | [Documentação da API](/l/pt/developers/extend/capabilities/apis) | -| **REST** | Operações CRUD simples, padrões REST familiares | [Documentação da API](/l/pt/developers/extend/capabilities/apis) | +| **GraphQL** | Consultas flexíveis, obtenção de dados relacionados, operações complexas | [Documentação da API](/l/pt/developers/api) | +| **REST** | Operações CRUD simples, padrões REST familiares | [Documentação da API](/l/pt/developers/api) | Ambas as APIs suportam: @@ -173,4 +173,4 @@ Contacte-nos em [contact@twenty.com](mailto:contact@twenty.com) ou explore os no Para detalhes completos de implementação, exemplos de código e referência de esquema: -* [Documentação da API](/l/pt/developers/extend/capabilities/apis) +* [Documentação da API](/l/pt/developers/api) diff --git a/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/what-is-twenty.mdx index 30b9759c9be..57df1794cce 100644 --- a/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/pt/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ O código aberto é a base da nossa abordagem, garantindo que o Twenty evolua co * **Painéis:** Acompanhe o desempenho com relatórios personalizados e visualizações personalizadas. [Ver painéis](/l/pt/user-guide/dashboards/overview). * **Permissões e Acesso:** Controle quem pode visualizar, editar e gerenciar seus dados com permissões baseadas em funções. [Configurar acesso](/l/pt/user-guide/permissions-access/overview). * **Notas e Tarefas:** Crie notas e tarefas vinculadas aos seus registros para uma melhor colaboração. -* **API e Webhooks:** Conecte-se a outros aplicativos e crie integrações personalizadas. [Comece a integrar](/l/pt/developers/extend/capabilities/apis). +* **API e Webhooks:** Conecte-se a outros aplicativos e crie integrações personalizadas. [Comece a integrar](/l/pt/developers/api). ## Participe agora diff --git a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index f4f77eaa9ca..74c8a8e3b7d 100644 --- a/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/pt/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ Crie os campos de destino em **Definições → Modelo de Dados → Oportunidade * Tamanho da Empresa: `{{searchRecords[0].employees}}` -**Limitação de Tarefas e Notas**: As relações em Tarefas e Notas são pré-definidas como muitos-para-muitos e ainda não estão disponíveis em gatilhos ou ações de fluxos de trabalho. Para aceder a estas relações, use a [API](/l/pt/developers/extend/capabilities/apis). +**Limitação de Tarefas e Notas**: As relações em Tarefas e Notas são pré-definidas como muitos-para-muitos e ainda não estão disponíveis em gatilhos ou ações de fluxos de trabalho. Para aceder a estas relações, use a [API](/l/pt/developers/api). ## Sincronização Bidirecional diff --git a/packages/twenty-docs/l/ro/developers/extend/extend.mdx b/packages/twenty-docs/l/ro/developers/extend/extend.mdx index cf16d8f9075..dbc74980d98 100644 --- a/packages/twenty-docs/l/ro/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/ro/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Extindeți description: Extindeți funcționalitatea Twenty cu API-uri, webhook-uri și aplicații personalizate. +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ Twenty este conceput pentru a fi extensibil. Utilizați API-urile noastre, webho ## Începeți - + Conectați-vă programatic la Twenty - + Primiți notificări despre evenimente în timp real - + Construiți personalizări sub formă de cod (Alpha) diff --git a/packages/twenty-docs/l/ro/developers/introduction.mdx b/packages/twenty-docs/l/ro/developers/introduction.mdx index da91ecdbc3b..26b6fc2c9bf 100644 --- a/packages/twenty-docs/l/ro/developers/introduction.mdx +++ b/packages/twenty-docs/l/ro/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Bun venit la Documentația Twenty pentru dezvoltatori, resursa dvs. import { CardTitle } from "/snippets/card-title.mdx" - - - Extindeți - Creați integrări cu API-uri, webhook-uri și aplicații personalizate. + + + API + Interogați și modificați datele CRM cu REST sau GraphQL. - + + Webhooks + Primiți notificări în timp real când se produc evenimente. + + + + Apps + Creați aplicații personalizate care extind capacitățile Twenty. + + + Autogăzduire Implementați și gestionați Twenty pe propria infrastructură. - + Contribuiți Alăturați-vă comunității noastre cu sursă deschisă și contribuiți la Twenty. diff --git a/packages/twenty-docs/l/ro/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/ro/user-guide/data-migration/how-tos/export-your-data.mdx index 7fbbe9bd35a..554fb9cc3bd 100644 --- a/packages/twenty-docs/l/ro/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/ro/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ Exportați datele spațiului de lucru în CSV pentru copii de siguranță, rapor * Sunt exportate doar **coloanele vizibile** * Sunt exportate doar **înregistrările filtrate** (pe baza vizualizării curente) -Pentru exporturi mai mari (20.000+ înregistrări), utilizați filtre pentru a exporta în loturi sau folosiți [API](/l/ro/developers/extend/capabilities/apis). +Pentru exporturi mai mari (20.000+ înregistrări), utilizați filtre pentru a exporta în loturi sau folosiți [API](/l/ro/developers/api). ### Permisiuni @@ -148,7 +148,7 @@ API-ul nu are limită de înregistrări: 2. Utilizați API-ul GraphQL pentru a interoga înregistrări 3. Procesați rezultatele în aplicația dvs. -Consultați: [Documentație API](/l/ro/developers/extend/capabilities/apis) +Consultați: [Documentație API](/l/ro/developers/api) ## Sfaturi și bune practici @@ -206,4 +206,4 @@ Fișierele exportate pot conține date sensibile: * [Cum să actualizați înregistrările existente](/l/ro/user-guide/data-migration/how-tos/update-existing-records-via-import) — editați și reimportați exportul * [Cum să importați date prin API](/l/ro/user-guide/data-migration/how-tos/import-data-via-api) — pentru seturi de date mari -* [Documentație API](/l/ro/developers/extend/capabilities/apis) — creați fluxuri de lucru de export personalizate +* [Documentație API](/l/ro/developers/api) — creați fluxuri de lucru de export personalizate diff --git a/packages/twenty-docs/l/ro/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/ro/user-guide/data-migration/how-tos/import-data-via-api.mdx index f42a8d5b503..9b1bcf8581b 100644 --- a/packages/twenty-docs/l/ro/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/ro/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty acceptă două tipuri de API: | API | Cel mai potrivit pentru | Documentație | | ----------- | --------------------------------------------------------------------- | -------------------------------------------------------- | -| **GraphQL** | Interogări flexibile, preluarea datelor asociate, operațiuni complexe | [Documentație API](/l/ro/developers/extend/capabilities/apis) | -| **REST** | Operațiuni CRUD simple, tipare REST familiare | [Documentație API](/l/ro/developers/extend/capabilities/apis) | +| **GraphQL** | Interogări flexibile, preluarea datelor asociate, operațiuni complexe | [Documentație API](/l/ro/developers/api) | +| **REST** | Operațiuni CRUD simple, tipare REST familiare | [Documentație API](/l/ro/developers/api) | Ambele API-uri acceptă: @@ -173,4 +173,4 @@ Contactați-ne la [contact@twenty.com](mailto:contact@twenty.com) sau explorați Pentru detalii complete de implementare, exemple de cod și referință de schemă: -* [Documentație API](/l/ro/developers/extend/capabilities/apis) +* [Documentație API](/l/ro/developers/api) diff --git a/packages/twenty-docs/l/ro/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/ro/user-guide/getting-started/capabilities/what-is-twenty.mdx index 93d49e15155..7ea47b6e8a9 100644 --- a/packages/twenty-docs/l/ro/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/ro/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ Open-source este fundamentul abordării noastre, asigurându-ne că Twenty evolu * **Tablouri de bord:** Urmăriți performanța cu rapoarte și vizualizări personalizate. [Vizualizați tablourile de bord](/l/ro/user-guide/dashboards/overview). * **Permisiuni și acces:** Controlați cine poate vizualiza, edita și gestiona datele dvs. cu permisiuni bazate pe roluri. [Configurați accesul](/l/ro/user-guide/permissions-access/overview). * **Note și sarcini:** Creați note și sarcini legate de înregistrările dvs. pentru o colaborare mai bună. -* **API și Webhooks:** Conectați-vă la alte aplicații și creați integrări personalizate. [Începeți integrarea](/l/ro/developers/extend/capabilities/apis). +* **API și Webhooks:** Conectați-vă la alte aplicații și creați integrări personalizate. [Începeți integrarea](/l/ro/developers/api). ## Alătură-te acum diff --git a/packages/twenty-docs/l/ro/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/ro/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index b18e8fb6d0e..c408ebaa443 100644 --- a/packages/twenty-docs/l/ro/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/ro/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ Creați câmpurile destinație în **Settings → Data Model → Opportunities** * Dimensiunea Companiei: `{{searchRecords[0].employees}}` -**Limitare Tasks and Notes**: Relațiile pentru Tasks și Notes sunt codificate ca many-to-many și nu sunt încă disponibile în declanșatoare sau acțiuni de flux de lucru. Pentru a accesa aceste relații, utilizați [API-ul](/l/ro/developers/extend/capabilities/apis) în schimb. +**Limitare Tasks and Notes**: Relațiile pentru Tasks și Notes sunt codificate ca many-to-many și nu sunt încă disponibile în declanșatoare sau acțiuni de flux de lucru. Pentru a accesa aceste relații, utilizați [API-ul](/l/ro/developers/api) în schimb. ## Sincronizare bidirecțională diff --git a/packages/twenty-docs/l/ru/developers/extend/extend.mdx b/packages/twenty-docs/l/ru/developers/extend/extend.mdx index d028827eeeb..a4888036dc1 100644 --- a/packages/twenty-docs/l/ru/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/ru/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Расширяйте description: Расширяйте возможности Twenty с помощью API, вебхуков и пользовательских приложений. +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ Twenty разработан с учетом расширяемости. Испо ## Начало работы - + Подключайтесь к Twenty программно - + Получайте уведомления о событиях в реальном времени - + Создавайте настройки как код (Alpha) diff --git a/packages/twenty-docs/l/ru/developers/introduction.mdx b/packages/twenty-docs/l/ru/developers/introduction.mdx index 95ef9178629..647e25a3996 100644 --- a/packages/twenty-docs/l/ru/developers/introduction.mdx +++ b/packages/twenty-docs/l/ru/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Добро пожаловать в документацию для import { CardTitle } from "/snippets/card-title.mdx" - - - Расширяйте - Создавайте интеграции с API, вебхуками и пользовательскими приложениями. + + + API + Запрашивайте и изменяйте данные CRM с помощью REST или GraphQL. - + + Webhooks + Получайте уведомления в реальном времени при возникновении событий. + + + + Apps + Создавайте пользовательские приложения, расширяющие возможности Twenty. + + + Развертывайте у себя Развертывайте и управляйте Twenty в собственной инфраструктуре. - + Вносите вклад Присоединяйтесь к нашему сообществу с открытым исходным кодом и вносите вклад в Twenty. diff --git a/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/export-your-data.mdx index 13e229413ed..f19e722ba08 100644 --- a/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; * Экспортируются только **видимые столбцы** * Экспортируются только **отфильтрованные записи** (на основе вашего текущего представления) -Для больших экспортов (20 000+ записей) используйте фильтры для экспорта партиями или используйте [API](/l/ru/developers/extend/capabilities/apis). +Для больших экспортов (20 000+ записей) используйте фильтры для экспорта партиями или используйте [API](/l/ru/developers/api). ### Разрешения @@ -148,7 +148,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; 2. Используйте GraphQL API для выборки записей 3. Обрабатывайте результаты в вашем приложении -См.: [Документация по API](/l/ru/developers/extend/capabilities/apis) +См.: [Документация по API](/l/ru/developers/api) ## Советы и лучшие практики @@ -206,4 +206,4 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; * [Как обновить существующие записи](/l/ru/user-guide/data-migration/how-tos/update-existing-records-via-import) — отредактируйте и импортируйте ваш экспорт повторно * [Как импортировать данные через API](/l/ru/user-guide/data-migration/how-tos/import-data-via-api) — для больших наборов данных -* [Документация по API](/l/ru/developers/extend/capabilities/apis) — создавайте собственные рабочие процессы экспорта +* [Документация по API](/l/ru/developers/api) — создавайте собственные рабочие процессы экспорта diff --git a/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/import-data-via-api.mdx index 939925ae2ba..6fd0435732a 100644 --- a/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/ru/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty поддерживает два типа API: | API | Лучше всего подходит для | Документация | | ----------- | ------------------------------------------------------------ | ----------------------------------------------------------- | -| **GraphQL** | Гибкие запросы, получение связанных данных, сложные операции | [Документация по API](/l/ru/developers/extend/capabilities/apis) | -| **REST** | Простые операции CRUD, привычные шаблоны REST | [Документация по API](/l/ru/developers/extend/capabilities/apis) | +| **GraphQL** | Гибкие запросы, получение связанных данных, сложные операции | [Документация по API](/l/ru/developers/api) | +| **REST** | Простые операции CRUD, привычные шаблоны REST | [Документация по API](/l/ru/developers/api) | Оба API поддерживают: @@ -173,4 +173,4 @@ GraphQL API поддерживает **пакетный upsert** — обнов Полная информация о реализации, примеры кода и справочник по схеме: -* [Документация по API](/l/ru/developers/extend/capabilities/apis) +* [Документация по API](/l/ru/developers/api) diff --git a/packages/twenty-docs/l/ru/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/ru/user-guide/getting-started/capabilities/what-is-twenty.mdx index 5c856a2371a..12469775cef 100644 --- a/packages/twenty-docs/l/ru/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/ru/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ description: Twenty — это CRM с открытым исходным кодо * **Панели управления:** Отслеживайте производительность с помощью индивидуальных отчетов и визуализаций. [Посмотреть панели управления](/l/ru/user-guide/dashboards/overview). * **Права и доступ:** Управляйте тем, кто может просматривать, редактировать и управлять вашими данными, с помощью ролевых прав доступа. [Настроить доступ](/l/ru/user-guide/permissions-access/overview). * **Заметки и задачи:** Создавайте заметки и задачи, связанные с вашими записями, для более эффективной совместной работы. -* **API и Вебхуки:** Подключайтесь к другим приложениям и создавайте индивидуальные интеграции. [Начать интеграцию](/l/ru/developers/extend/capabilities/apis). +* **API и Вебхуки:** Подключайтесь к другим приложениям и создавайте индивидуальные интеграции. [Начать интеграцию](/l/ru/developers/api). ## Присоединяйтесь сейчас diff --git a/packages/twenty-docs/l/ru/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/ru/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index 8599a56732c..d3af24fc81c 100644 --- a/packages/twenty-docs/l/ru/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/ru/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ description: Показывайте данные из связанных зап * Размер компании: `{{searchRecords[0].employees}}` -**Ограничение для задач и заметок**: связи в задачах и заметках жёстко заданы как многие-ко-многим и пока недоступны в триггерах или действиях рабочего процесса. Чтобы получить доступ к этим связям, вместо этого используйте [API](/l/ru/developers/extend/capabilities/apis). +**Ограничение для задач и заметок**: связи в задачах и заметках жёстко заданы как многие-ко-многим и пока недоступны в триггерах или действиях рабочего процесса. Чтобы получить доступ к этим связям, вместо этого используйте [API](/l/ru/developers/api). ## Двунаправленная синхронизация diff --git a/packages/twenty-docs/l/tr/developers/extend/extend.mdx b/packages/twenty-docs/l/tr/developers/extend/extend.mdx index d4676d98ee6..65af313b323 100644 --- a/packages/twenty-docs/l/tr/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/tr/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: Genişlet description: Twenty'nin işlevselliğini API'ler, webhook'lar ve özel uygulamalarla genişletin. +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ Twenty, genişletilebilir olacak şekilde tasarlanmıştır. Mevcut araçların ## Başlarken - + Twenty'ye programatik olarak bağlanın - + Olaylardan gerçek zamanlı olarak haberdar olun - + Özelleştirmeleri kod olarak oluşturun (Alfa) diff --git a/packages/twenty-docs/l/tr/developers/introduction.mdx b/packages/twenty-docs/l/tr/developers/introduction.mdx index 943afd7952b..bbc336ce652 100644 --- a/packages/twenty-docs/l/tr/developers/introduction.mdx +++ b/packages/twenty-docs/l/tr/developers/introduction.mdx @@ -5,18 +5,28 @@ description: Twenty Geliştirici Belgeleri'ne hoş geldiniz; Twenty'yi genişlet import { CardTitle } from "/snippets/card-title.mdx" - - - Extend - API'ler, webhook'lar ve özel uygulamalarla entegrasyonlar oluşturun. + + + API + REST veya GraphQL ile CRM verilerinizi sorgulayın ve değiştirin. - + + Webhooks + Olaylar gerçekleştiğinde gerçek zamanlı bildirimler alın. + + + + Apps + Twenty'nin yeteneklerini genişleten özel uygulamalar oluşturun. + + + Self-Host Twenty'yi kendi altyapınızda dağıtın ve yönetin. - + Contribute Açık kaynak topluluğumuza katılın ve Twenty'ye katkıda bulunun. diff --git a/packages/twenty-docs/l/tr/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/tr/user-guide/data-migration/how-tos/export-your-data.mdx index f266df01753..2c82ffdecc0 100644 --- a/packages/twenty-docs/l/tr/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/tr/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ Yedekleme, raporlama veya geçiş için çalışma alanı verilerinizi CSV'ye d * Yalnızca **görünür sütunlar** dışa aktarılır * Yalnızca **filtrelenmiş kayıtlar** dışa aktarılır (mevcut görünümünüze göre) -Daha büyük dışa aktarmalar için (20.000+ kayıt), toplu halde dışa aktarmak üzere filtreleri kullanın veya [API](/l/tr/developers/extend/capabilities/apis)'yi kullanın. +Daha büyük dışa aktarmalar için (20.000+ kayıt), toplu halde dışa aktarmak üzere filtreleri kullanın veya [API](/l/tr/developers/api)'yi kullanın. ### İzinler @@ -148,7 +148,7 @@ API'nin kayıt sınırı yoktur: 2. Kayıtları sorgulamak için GraphQL API'sini kullanın 3. Sonuçları uygulamanızda işleyin -Bkz: [API Belgeleri](/l/tr/developers/extend/capabilities/apis) +Bkz: [API Belgeleri](/l/tr/developers/api) ## İpuçları ve En İyi Uygulamalar @@ -206,4 +206,4 @@ Dışa aktarılan dosyalar hassas veriler içerebilir: * [Mevcut Kayıtlar Nasıl Güncellenir](/l/tr/user-guide/data-migration/how-tos/update-existing-records-via-import) — dışa aktarmanızı düzenleyin ve yeniden içe aktarın * [API ile Veri Nasıl İçe Aktarılır](/l/tr/user-guide/data-migration/how-tos/import-data-via-api) — büyük veri kümeleri için -* [API Belgeleri](/l/tr/developers/extend/capabilities/apis) — özel dışa aktarma iş akışları oluşturun +* [API Belgeleri](/l/tr/developers/api) — özel dışa aktarma iş akışları oluşturun diff --git a/packages/twenty-docs/l/tr/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/tr/user-guide/data-migration/how-tos/import-data-via-api.mdx index e11a77c500f..b50b14db03c 100644 --- a/packages/twenty-docs/l/tr/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/tr/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty iki API türünü destekler: | API | En uygun | Dokümantasyon | | ----------- | ------------------------------------------------------------ | ----------------------------------------------------- | -| **GraphQL** | Esnek sorgular, ilişkili verileri getirme, karmaşık işlemler | [API Belgeleri](/l/tr/developers/extend/capabilities/apis) | -| **REST** | Basit CRUD işlemleri, alışıldık REST kalıpları | [API Belgeleri](/l/tr/developers/extend/capabilities/apis) | +| **GraphQL** | Esnek sorgular, ilişkili verileri getirme, karmaşık işlemler | [API Belgeleri](/l/tr/developers/api) | +| **REST** | Basit CRUD işlemleri, alışıldık REST kalıpları | [API Belgeleri](/l/tr/developers/api) | Her iki API de şunları destekler: @@ -173,4 +173,4 @@ Karmaşık API geçişleri için iş ortaklarımız yardımcı olabilir: Tam uygulama ayrıntıları, kod örnekleri ve şema başvurusu için: -* [API Belgeleri](/l/tr/developers/extend/capabilities/apis) +* [API Belgeleri](/l/tr/developers/api) diff --git a/packages/twenty-docs/l/tr/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/tr/user-guide/getting-started/capabilities/what-is-twenty.mdx index 974ba1205b5..cbab83e6cef 100644 --- a/packages/twenty-docs/l/tr/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/tr/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ Açık kaynak, yaklaşımımızın temel taşıdır, Twenty'nin topluluğu ile b * **Panolar:** Özel raporlar ve görselleştirmelerle performansı izleyin. [Panoları görüntüleyin](/l/tr/user-guide/dashboards/overview). * **İzinler ve Erişim:** Rol tabanlı izinlerle verilerinizi kimlerin görüntüleyebileceğini, düzenleyebileceğini ve yönetebileceğini kontrol edin. [Erişimi yapılandırın](/l/tr/user-guide/permissions-access/overview). * **Notlar ve Görevler:** Daha iyi iş birliği için kayıtlarınıza bağlı notlar ve görevler oluşturun. -* **API & Webhooks:** Diğer uygulamalara bağlanın ve özel entegrasyonlar oluşturun. [Start integrating](/l/tr/developers/extend/capabilities/apis). +* **API & Webhooks:** Diğer uygulamalara bağlanın ve özel entegrasyonlar oluşturun. [Start integrating](/l/tr/developers/api). ## Şimdi katılın diff --git a/packages/twenty-docs/l/tr/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/tr/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index d9070058355..114f8a47e52 100644 --- a/packages/twenty-docs/l/tr/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/tr/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ Hedef alanları **Ayarlar → Veri Modeli → Fırsatlar** içinde oluşturun: * Şirket Büyüklüğü: `{{searchRecords[0].employees}}` -**Görevler ve Notlar sınırlaması**: Görevler ve Notlar üzerindeki ilişkiler çoktan çoğa olarak sabit kodlanmıştır ve henüz iş akışı tetikleyicileri veya eylemlerinde mevcut değildir. Bu ilişkilere erişmek için bunun yerine [API](/l/tr/developers/extend/capabilities/apis) kullanın. +**Görevler ve Notlar sınırlaması**: Görevler ve Notlar üzerindeki ilişkiler çoktan çoğa olarak sabit kodlanmıştır ve henüz iş akışı tetikleyicileri veya eylemlerinde mevcut değildir. Bu ilişkilere erişmek için bunun yerine [API](/l/tr/developers/api) kullanın. ## Çift Yönlü Senkronizasyon diff --git a/packages/twenty-docs/l/zh/developers/extend/extend.mdx b/packages/twenty-docs/l/zh/developers/extend/extend.mdx index 1fdfeffb7b8..d945901ae6d 100644 --- a/packages/twenty-docs/l/zh/developers/extend/extend.mdx +++ b/packages/twenty-docs/l/zh/developers/extend/extend.mdx @@ -1,6 +1,7 @@ --- title: 扩展 description: 使用 API、网络钩子和自定义应用扩展 Twenty 的功能。 +redirect: /developers/introduction --- @@ -20,13 +21,13 @@ Twenty 的设计旨在实现可扩展性。 使用我们的 API、网络钩子 ## 开始使用 - + 以编程方式连接到 Twenty - + 实时接收事件通知 - + 以代码方式构建自定义项 (Alpha) diff --git a/packages/twenty-docs/l/zh/developers/introduction.mdx b/packages/twenty-docs/l/zh/developers/introduction.mdx index 6906d4334b0..616c99dfec1 100644 --- a/packages/twenty-docs/l/zh/developers/introduction.mdx +++ b/packages/twenty-docs/l/zh/developers/introduction.mdx @@ -5,18 +5,28 @@ description: 欢迎来到 Twenty 开发者文档,这是您用于扩展、自 import { CardTitle } from "/snippets/card-title.mdx" - - - 扩展 - 使用 API、网络钩子和自定义应用构建集成。 + + + API + 使用 REST 或 GraphQL 查询和修改您的 CRM 数据。 - + + Webhooks + 当事件发生时接收实时通知。 + + + + Apps + 构建扩展 Twenty 功能的定制应用程序。 + + + 自托管 在您自己的基础设施上部署并管理 Twenty。 - + 贡献 加入我们的开源社区并为 Twenty 做出贡献。 diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/export-your-data.mdx index 12863ced6e2..f128dcbbdc3 100644 --- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/export-your-data.mdx @@ -24,7 +24,7 @@ import { VimeoEmbed } from '/snippets/vimeo-embed.mdx'; * 仅导出**可见列** * 仅导出**筛选后的记录**(基于您当前视图) -对于更大的导出(20,000+ 条记录),请使用筛选器分批导出,或使用 [API](/l/zh/developers/extend/capabilities/apis)。 +对于更大的导出(20,000+ 条记录),请使用筛选器分批导出,或使用 [API](/l/zh/developers/api)。 ### 权限 @@ -148,7 +148,7 @@ API 没有记录数量限制: 2. 使用 GraphQL API 查询记录 3. 在您的应用程序中处理结果 -参见:[API 文档](/l/zh/developers/extend/capabilities/apis) +参见:[API 文档](/l/zh/developers/api) ## 技巧与最佳实践 @@ -206,4 +206,4 @@ API 没有记录数量限制: * [如何更新现有记录](/l/zh/user-guide/data-migration/how-tos/update-existing-records-via-import) — 编辑并重新导入您的导出文件 * [如何通过 API 导入数据](/l/zh/user-guide/data-migration/how-tos/import-data-via-api) — 适用于大型数据集 -* [API 文档](/l/zh/developers/extend/capabilities/apis) — 构建自定义导出工作流 +* [API 文档](/l/zh/developers/api) — 构建自定义导出工作流 diff --git a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-data-via-api.mdx index 25f91135923..0dc5b07b609 100644 --- a/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/l/zh/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty 支持两种 API 类型: | 接口 | 最适合 | 文档 | | ----------- | ----------------------- | ---------------------------------------------- | -| **GraphQL** | 灵活查询、获取关联数据、复杂操作 | [API 文档](/l/zh/developers/extend/capabilities/apis) | -| **REST** | 简单的 CRUD 操作、熟悉的 REST 模式 | [API 文档](/l/zh/developers/extend/capabilities/apis) | +| **GraphQL** | 灵活查询、获取关联数据、复杂操作 | [API 文档](/l/zh/developers/api) | +| **REST** | 简单的 CRUD 操作、熟悉的 REST 模式 | [API 文档](/l/zh/developers/api) | 两种 API 都支持: @@ -173,4 +173,4 @@ GraphQL API 支持**批量合并插入** — 若记录已存在则更新,不 有关完整的实现细节、代码示例和架构参考: -* [API 文档](/l/zh/developers/extend/capabilities/apis) +* [API 文档](/l/zh/developers/api) diff --git a/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/what-is-twenty.mdx index 98c5ffaa63c..38e59f38b9c 100644 --- a/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/l/zh/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -35,7 +35,7 @@ description: Twenty 是一款开源 CRM,为您提供构建模块,助您精 * **仪表板:** 通过自定义报表和可视化跟踪绩效。 [查看仪表板](/l/zh/user-guide/dashboards/overview)。 * **权限与访问:** 通过基于角色的权限控制谁可以查看、编辑和管理您的数据。 [配置访问](/l/zh/user-guide/permissions-access/overview)。 * **笔记与任务:** 创建与您的记录关联的笔记和任务,以便更好地协作。 -* **API 与 Webhook:** 连接到其他应用,并构建自定义集成。 [开始集成](/l/zh/developers/extend/capabilities/apis)。 +* **API 与 Webhook:** 连接到其他应用,并构建自定义集成。 [开始集成](/l/zh/developers/api)。 ## 立即加入 diff --git a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index 420b8078823..d4a0f02e912 100644 --- a/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/l/zh/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -95,7 +95,7 @@ description: 使用工作流显示关联记录中的数据(例如,在机会 * 公司规模:`{{searchRecords[0].employees}}` -**任务和备注限制**:任务和备注上的关系被硬编码为多对多,目前尚不可用于工作流触发器或操作。 要访问这些关系,请改用 [API](/l/zh/developers/extend/capabilities/apis)。 +**任务和备注限制**:任务和备注上的关系被硬编码为多对多,目前尚不可用于工作流触发器或操作。 要访问这些关系,请改用 [API](/l/zh/developers/api)。 ## 双向同步 diff --git a/packages/twenty-docs/navigation/base-structure.json b/packages/twenty-docs/navigation/base-structure.json index 8fe8d116e94..3707010e570 100644 --- a/packages/twenty-docs/navigation/base-structure.json +++ b/packages/twenty-docs/navigation/base-structure.json @@ -364,14 +364,15 @@ "label": "Extend", "icon": "plug", "pages": [ - "developers/extend/extend", + "developers/extend/api", + "developers/extend/webhooks", { - "key": "extendCapabilities", - "label": "Capabilities", + "key": "apps", + "label": "Apps", "pages": [ - "developers/extend/capabilities/apis", - "developers/extend/capabilities/webhooks", - "developers/extend/capabilities/apps" + "developers/extend/apps/getting-started", + "developers/extend/apps/building", + "developers/extend/apps/publishing" ] } ] diff --git a/packages/twenty-docs/navigation/navigation-schema.json b/packages/twenty-docs/navigation/navigation-schema.json index 5f6ff67299e..bb95be1ab1b 100644 --- a/packages/twenty-docs/navigation/navigation-schema.json +++ b/packages/twenty-docs/navigation/navigation-schema.json @@ -363,14 +363,15 @@ "label": "Extend", "icon": "plug", "pages": [ - "developers/extend/extend", + "developers/extend/api", + "developers/extend/webhooks", { - "key": "extendCapabilities", - "label": "Capabilities", + "key": "apps", + "label": "Apps", "pages": [ - "developers/extend/capabilities/apis", - "developers/extend/capabilities/webhooks", - "developers/extend/capabilities/apps" + "developers/extend/apps/getting-started", + "developers/extend/apps/building", + "developers/extend/apps/publishing" ] } ] diff --git a/packages/twenty-docs/user-guide/data-migration/how-tos/export-your-data.mdx b/packages/twenty-docs/user-guide/data-migration/how-tos/export-your-data.mdx index 6fa7fe07fef..35e479b8fa7 100644 --- a/packages/twenty-docs/user-guide/data-migration/how-tos/export-your-data.mdx +++ b/packages/twenty-docs/user-guide/data-migration/how-tos/export-your-data.mdx @@ -22,7 +22,7 @@ Export your workspace data to CSV for backups, reporting, or migration. - Only **visible columns** are exported - Only **filtered records** are exported (based on your current view) -For larger exports (20,000+ records), use filters to export in batches or use the [API](/developers/extend/capabilities/apis). +For larger exports (20,000+ records), use filters to export in batches or use the [API](/developers/extend/api). ### Permissions You need the **"Export CSV"** permission to export data. Contact your workspace admin if you don't have this option. @@ -130,7 +130,7 @@ The API has no record limit: 2. Use the GraphQL API to query records 3. Process results in your application -See: [API Documentation](/developers/extend/capabilities/apis) +See: [API Documentation](/developers/extend/api) ## Tips and Best Practices @@ -183,4 +183,4 @@ Exported files may contain sensitive data: - [How to Update Existing Records](/user-guide/data-migration/how-tos/update-existing-records-via-import) — edit and re-import your export - [How to Import Data via API](/user-guide/data-migration/how-tos/import-data-via-api) — for large datasets -- [API Documentation](/developers/extend/capabilities/apis) — build custom export workflows +- [API Documentation](/developers/extend/api) — build custom export workflows diff --git a/packages/twenty-docs/user-guide/data-migration/how-tos/import-data-via-api.mdx b/packages/twenty-docs/user-guide/data-migration/how-tos/import-data-via-api.mdx index f90be44536e..e8028fafeaf 100644 --- a/packages/twenty-docs/user-guide/data-migration/how-tos/import-data-via-api.mdx +++ b/packages/twenty-docs/user-guide/data-migration/how-tos/import-data-via-api.mdx @@ -59,8 +59,8 @@ Twenty supports two API types: | API | Best For | Documentation | |-----|----------|---------------| -| **GraphQL** | Flexible queries, fetching related data, complex operations | [API Docs](/developers/extend/capabilities/apis) | -| **REST** | Simple CRUD operations, familiar REST patterns | [API Docs](/developers/extend/capabilities/apis) | +| **GraphQL** | Flexible queries, fetching related data, complex operations | [API Docs](/developers/extend/api) | +| **REST** | Simple CRUD operations, familiar REST patterns | [API Docs](/developers/extend/api) | Both APIs support: - Creating, reading, updating, and deleting records @@ -165,4 +165,4 @@ Contact us at [contact@twenty.com](mailto:contact@twenty.com) or explore our [Im For full implementation details, code examples, and schema reference: -- [API Documentation](/developers/extend/capabilities/apis) +- [API Documentation](/developers/extend/api) diff --git a/packages/twenty-docs/user-guide/getting-started/capabilities/what-is-twenty.mdx b/packages/twenty-docs/user-guide/getting-started/capabilities/what-is-twenty.mdx index 9af3d6b41e0..6af15236fbf 100644 --- a/packages/twenty-docs/user-guide/getting-started/capabilities/what-is-twenty.mdx +++ b/packages/twenty-docs/user-guide/getting-started/capabilities/what-is-twenty.mdx @@ -36,7 +36,7 @@ Open-source is the bedrock of our approach, ensuring that Twenty evolves with it - **Dashboards:** Track performance with custom reports and visualizations. [View dashboards](/user-guide/dashboards/overview). - **Permissions & Access:** Control who can view, edit, and manage your data with role-based permissions. [Configure access](/user-guide/permissions-access/overview). - **Notes & Tasks:** Create notes and tasks linked to your records for better collaboration. -- **API & Webhooks:** Connect to other apps and build custom integrations. [Start integrating](/developers/extend/capabilities/apis). +- **API & Webhooks:** Connect to other apps and build custom integrations. [Start integrating](/developers/extend/api). ## Join now diff --git a/packages/twenty-docs/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx b/packages/twenty-docs/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx index c240c40e342..7283c70fdcd 100644 --- a/packages/twenty-docs/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx +++ b/packages/twenty-docs/user-guide/workflows/how-tos/crm-automations/display-related-record-data.mdx @@ -93,7 +93,7 @@ Create the destination fields in **Settings → Data Model → Opportunities**: - Company Size: `{{searchRecords[0].employees}}` -**Tasks and Notes limitation**: Relations on Tasks and Notes are hardcoded as many-to-many and are not yet available in workflow triggers or actions. To access these relations, use the [API](/developers/extend/capabilities/apis) instead. +**Tasks and Notes limitation**: Relations on Tasks and Notes are hardcoded as many-to-many and are not yet available in workflow triggers or actions. To access these relations, use the [API](/developers/extend/api) instead. ## Bidirectional Sync diff --git a/packages/twenty-front/src/generated-metadata/graphql.ts b/packages/twenty-front/src/generated-metadata/graphql.ts index 851eaaa7d08..1af70182bc6 100644 --- a/packages/twenty-front/src/generated-metadata/graphql.ts +++ b/packages/twenty-front/src/generated-metadata/graphql.ts @@ -2456,7 +2456,6 @@ export type Mutation = { initiateOTPProvisioningForAuthenticatedUser: InitiateTwoFactorAuthenticationProvisioning; installApplication: Scalars['Boolean']; installMarketplaceApp: Scalars['Boolean']; - registerNpmPackage: ApplicationRegistration; removeQueryFromEventStream: Scalars['Boolean']; removeRoleFromAgent: Scalars['Boolean']; renewApplicationToken: ApplicationTokenPair; diff --git a/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx b/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx index 15ecb54e74b..374e9fc485a 100644 --- a/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx +++ b/packages/twenty-front/src/modules/settings/admin-panel/apps/components/SettingsAdminApps.tsx @@ -15,7 +15,10 @@ import { SearchInput } from 'twenty-ui/input'; import { Section } from 'twenty-ui/layout'; import { UndecoratedLink } from 'twenty-ui/navigation'; import { themeCssVariables } from 'twenty-ui/theme-constants'; -import { type ApplicationRegistrationFragmentFragment } from '~/generated-metadata/graphql'; +import { + ApplicationRegistrationSourceType, + type ApplicationRegistrationFragmentFragment, +} from '~/generated-metadata/graphql'; const StyledTableContainer = styled.div` margin-top: ${themeCssVariables.spacing[3]}; @@ -87,13 +90,15 @@ export const SettingsAdminApps = () => { diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx index 25194714d50..96b5c84acca 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationsDeveloperTab.tsx @@ -7,7 +7,6 @@ import { useQuery } from '@apollo/client'; import { styled } from '@linaria/react'; import { useLingui } from '@lingui/react/macro'; import { useContext } from 'react'; -import { useNavigate } from 'react-router-dom'; import { SettingsPath } from 'twenty-shared/types'; import { getSettingsPath } from 'twenty-shared/utils'; import { @@ -21,6 +20,7 @@ import { import { Button } from 'twenty-ui/input'; import { Section } from 'twenty-ui/layout'; import { ThemeContext, themeCssVariables } from 'twenty-ui/theme-constants'; +import { Tag } from 'twenty-ui/components'; import { type ApplicationRegistrationFragmentFragment, ApplicationRegistrationSourceType, @@ -31,15 +31,33 @@ const StyledButtonContainer = styled.div` margin: ${themeCssVariables.spacing[2]} 0; `; -const StyledEmptyStateContainer = styled.div` +const StyledRowRightContainer = styled.div` + align-items: center; display: flex; - flex-direction: column; + gap: ${themeCssVariables.spacing[2]}; `; +const SOURCE_TYPE_BADGE_CONFIG: Record< + ApplicationRegistrationSourceType, + { label: string; color: 'gray' | 'blue' | 'green' } +> = { + [ApplicationRegistrationSourceType.LOCAL]: { + label: 'Dev', + color: 'gray', + }, + [ApplicationRegistrationSourceType.NPM]: { + label: 'Npm', + color: 'blue', + }, + [ApplicationRegistrationSourceType.TARBALL]: { + label: 'Internal', + color: 'green', + }, +}; + export const SettingsApplicationsDeveloperTab = () => { const { theme } = useContext(ThemeContext); const { t } = useLingui(); - const navigate = useNavigate(); const currentWorkspaceMember = useAtomStateValue(currentWorkspaceMemberState); const { copyToClipboard } = useCopyToClipboard(); @@ -49,21 +67,6 @@ export const SettingsApplicationsDeveloperTab = () => { const registrations: ApplicationRegistrationFragmentFragment[] = data?.findManyApplicationRegistrations ?? []; - const developmentApps = registrations.filter( - (registration) => - registration.sourceType === ApplicationRegistrationSourceType.LOCAL, - ); - - const publishedApps = registrations.filter( - (registration) => - registration.sourceType === ApplicationRegistrationSourceType.NPM, - ); - - const internalApps = registrations.filter( - (registration) => - registration.sourceType === ApplicationRegistrationSourceType.TARBALL, - ); - const createCommands = [ // oxlint-disable-next-line lingui/no-unlocalized-strings 'npx create-twenty-app@latest my-twenty-app', @@ -84,100 +87,55 @@ export const SettingsApplicationsDeveloperTab = () => { /> ); - const publishNpmCommands = [ - // oxlint-disable-next-line lingui/no-unlocalized-strings - 'npx twenty app:publish', - // oxlint-disable-next-line lingui/no-unlocalized-strings - 'npx twenty app:register ', - ]; - - const publishNpmCopyButton = ( -