i18n - docs translations (#19939)

Created by Github action

Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
github-actions[bot]
2026-04-21 16:52:23 +02:00
committed by GitHub
parent 8f34a02fea
commit 8bb98c309a
22 changed files with 279 additions and 279 deletions
@@ -1,6 +1,6 @@
---
title: دليل الأسلوب
icon: فرشاة الرسم},{
icon: فرشاة الرسم
description: اتفاقيات الشيفرة وأفضل الممارسات للمساهمة في Twenty.
---
@@ -1,23 +1,23 @@
---
title: التخطيط
description: Define views, navigation menu items, and page layouts to shape how your app appears in Twenty.
description: عرّف طرق العرض، وعناصر قائمة التنقّل، وتخطيطات الصفحات لتشكيل كيفية ظهور تطبيقك في Twenty.
icon: table-columns
---
Layout entities control how your app surfaces inside Twenty's UI — what lives in the sidebar, which saved views ship with the app, and how a record detail page is arranged.
تتحكّم كيانات التخطيط في كيفية ظهور تطبيقك داخل واجهة مستخدم Twenty — ما الذي يوجد في الشريط الجانبي، وأي العروض المحفوظة تأتي مع التطبيق، وكيف يتم ترتيب صفحة تفاصيل السجل.
## Layout concepts
## مفاهيم التخطيط
| Concept | What it controls | كيان |
| ------------------------ | --------------------------------------------------------------------------------- | -------------------------- |
| **View** | A saved list configuration for an object — visible fields, order, filters, groups | `defineView` |
| **Navigation Menu Item** | An entry in the left sidebar that links to a view or an external URL | `defineNavigationMenuItem` |
| **Page Layout** | The tabs and widgets that make up a record's detail page | `definePageLayout` |
| المفهوم | ما الذي يتحكّم فيه | كيان |
| ---------------------- | ------------------------------------------------------------------------------- | -------------------------- |
| **عرض** | تكوين قائمة محفوظة لكائن — الحقول المرئية، والترتيب، وعوامل التصفية، والمجموعات | `defineView` |
| **عنصر قائمة التنقّل** | عنصر في الشريط الجانبي الأيسر يرتبط بعرض أو بعنوان URL خارجي | `defineNavigationMenuItem` |
| **تخطيط الصفحة** | علامات التبويب وعناصر الواجهة التي تشكّل صفحة تفاصيل السجل | `definePageLayout` |
Views, navigation items, and page layouts reference each other by `universalIdentifier`:
تشير العروض، وعناصر التنقّل، وتخطيطات الصفحات إلى بعضها البعض عبر `universalIdentifier`:
* A **navigation menu item** of type `VIEW` points at a `defineView` identifier, so the sidebar link opens that saved view.
* A **page layout** of type `RECORD_PAGE` targets an object and can embed [front components](/l/ar/developers/extend/apps/front-components) inside its tabs as widgets.
* يشير **عنصر قائمة التنقّل** من النوع `VIEW` إلى معرّف `defineView`، بحيث يفتح رابط الشريط الجانبي ذلك العرض المحفوظ.
* يستهدف **تخطيط الصفحة** من النوع `RECORD_PAGE` كائنًا ويمكنه تضمين [مكوّنات الواجهة الأمامية](/l/ar/developers/extend/apps/front-components) داخل علامات التبويب الخاصة به بوصفها عناصر واجهة.
<AccordionGroup>
<Accordion title="defineView" description="تعريف العروض المحفوظة للكائنات">
@@ -1,6 +1,6 @@
---
title: Stylová příručka
icon: paintbrush},{
icon: paintbrush
description: Konvence kódu a osvědčené postupy pro přispívání do Twenty.
---
@@ -25,7 +25,7 @@ export function MyComponent() {
### Vlastnosti
Vytvořte typ s názvem `{ComponentName}Props`. Používejte destrukturování. Nepoužívejte `React.FC`.
Vytvořte typ s názvem `{ComponentName}Props`. Používejte destrukturalizaci. Nepoužívejte `React.FC`.
```tsx
type MyComponentProps = {
@@ -35,7 +35,7 @@ type MyComponentProps = {
export const MyComponent = ({ name }: MyComponentProps) => <div>Hello {name}</div>;
```
### Žádné rozprostření jediné proměnné do props
### Nepoužívejte prop spreading jediné proměnné
```tsx
// ❌ Bad
@@ -65,7 +65,7 @@ export const myAtomState = createAtomState<string>({
### Vyhněte se zbytečnému opakovanému vykreslování
* Vytáhněte `useEffect` a načítání dat do sourozeneckých sidecar komponent
* Přesuňte `useEffect` a načítání dat do sesterských sidecar komponent
* Upřednostňujte obslužné funkce událostí (`handleClick`, `handleChange`) před `useEffect`
* Nepoužívejte `React.memo()` — místo toho opravte kořenovou příčinu
* Omezte používání `useCallback` / `useMemo`
@@ -97,7 +97,7 @@ export const Page = () => {
* **`type` místo `interface`** — flexibilnější, lépe kombinovatelný
* **Řetězcové literály místo výčtů** — s výjimkou enumů GraphQL codegenu a interních API knihoven
* **Žádné `any`** — vynucený přísný TypeScript
* **Žádné type imports** — používejte běžné importy (vynuceno nástrojem Oxlint `typescript/consistent-type-imports`)
* **Žádné importy typů** — používejte běžné importy (vynuceno nástrojem Oxlint `typescript/consistent-type-imports`)
* **Používejte [Zod](https://github.com/colinhacks/zod)** pro runtime validaci netypovaných objektů
## JavaScript
@@ -172,5 +172,5 @@ front
```
* Moduly mohou importovat z jiných modulů, ale `ui/` by mělo zůstat bez závislostí
* Používejte podadresáře `internal/` pro kód soukromý pro modul
* Používejte podadresáře `internal/` pro interní kód modulu
* Komponenty do 300 řádků, služby do 500 řádků
@@ -1,23 +1,23 @@
---
title: Rozvržení
description: Define views, navigation menu items, and page layouts to shape how your app appears in Twenty.
description: Definujte pohledy, položky navigační nabídky a rozvržení stránek, abyste utvářeli, jak se vaše aplikace zobrazuje v Twenty.
icon: table-columns
---
Layout entities control how your app surfaces inside Twenty's UI — what lives in the sidebar, which saved views ship with the app, and how a record detail page is arranged.
Prvky rozvržení řídí, jak se vaše aplikace zobrazuje v uživatelském rozhraní Twenty — co je v postranním panelu, které uložené pohledy jsou součástí aplikace a jak je uspořádána stránka s podrobnostmi záznamu.
## Layout concepts
## Pojmy rozvržení
| Concept | What it controls | Entita |
| ------------------------ | --------------------------------------------------------------------------------- | -------------------------- |
| **View** | A saved list configuration for an object — visible fields, order, filters, groups | `defineView` |
| **Navigation Menu Item** | An entry in the left sidebar that links to a view or an external URL | `defineNavigationMenuItem` |
| **Page Layout** | The tabs and widgets that make up a record's detail page | `definePageLayout` |
| Pojem | Co řídí | Entita |
| ----------------------------- | ------------------------------------------------------------------------------ | -------------------------- |
| **Pohled** | Uložené nastavení seznamu pro objekt — viditelná pole, pořadí, filtry, skupiny | `defineView` |
| **Položka navigační nabídky** | Položka v levém postranním panelu, která odkazuje na pohled nebo externí URL | `defineNavigationMenuItem` |
| **Rozvržení stránky** | Karty a widgety, které tvoří stránku s podrobnostmi záznamu | `definePageLayout` |
Views, navigation items, and page layouts reference each other by `universalIdentifier`:
Pohledy, položky navigační nabídky a rozvržení stránek se na sebe odkazují pomocí `universalIdentifier`:
* A **navigation menu item** of type `VIEW` points at a `defineView` identifier, so the sidebar link opens that saved view.
* A **page layout** of type `RECORD_PAGE` targets an object and can embed [front components](/l/cs/developers/extend/apps/front-components) inside its tabs as widgets.
* Položka **navigační nabídky** typu `VIEW` odkazuje na identifikátor `defineView`, takže odkaz v postranním panelu otevře daný uložený pohled.
* **Rozvržení stránky** typu `RECORD_PAGE` cílí na objekt a může vkládat [front components](/l/cs/developers/extend/apps/front-components) do svých karet jako widgety.
<AccordionGroup>
<Accordion title="defineView" description="Definujte uložená zobrazení pro objekty">
@@ -48,10 +48,10 @@ Speichern Sie das `client_secret` sicher — es kann später nicht mehr abgerufe
## Geltungsbereiche
| Geltungsbereich | Zugriff |
| --------------- | ----------------------------------------------------------- |
| `api` | Voller Lese-/Schreibzugriff auf die Core- und Metadata-APIs |
| `profile` | Profilinformationen des authentifizierten Benutzers lesen |
| Geltungsbereich | Zugriff |
| --------------- | ------------------------------------------------------------ |
| `api` | Voller Lese-/Schreibzugriff auf die Core- und Metadaten-APIs |
| `profile` | Profilinformationen des authentifizierten Benutzers lesen |
Fordern Sie Geltungsbereiche als durch Leerzeichen getrennte Zeichenfolge an: `scope=api profile`
@@ -1,6 +1,6 @@
---
title: App-Tooltip
icon: nachricht
icon: Nachricht
---
<Frame>
@@ -38,15 +38,15 @@ export const MyComponent = () => {
<Tab title="&#x22;Eigenschaften&#x22;">
| "Eigenschaften" | Typ | Beschreibung |
| --------------- | ------------------------- | ------------------------------------------------------------------------------------------------------ |
| linkToEntity | Zeichenkette | Der Link zur Entität |
| entityId | Zeichenkette | Der eindeutige Identifikator für die Entität |
| name | string | Der Name der Entität |
| pictureUrl | Zeichenkette | s Bild", |
| avatarType | Avatar-Typ | Der Typ des Avatars, den Sie anzeigen möchten. Hat zwei Optionen: `abgerundet` und `quadratisch` |
| Variante | `EntityChipVariante` enum | Variante des Entity-Chips, die Sie anzeigen möchten. Hat zwei Optionen: `regelmäßig` und `transparent` |
| LeftIcon | Icon-Komponente | Eine React-Komponente, die ein Symbol darstellt. Wird auf der linken Seite des Chips angezeigt |
| Props | Typ | Beschreibung |
| ------------ | ------------------------- | ------------------------------------------------------------------------------------------------------ |
| linkToEntity | Zeichenkette | Der Link zur Entität |
| entityId | Zeichenkette | Der eindeutige Identifikator für die Entität |
| name | string | Der Name der Entität |
| pictureUrl | Zeichenkette | s Bild", |
| avatarType | Avatar-Typ | Der Typ des Avatars, den Sie anzeigen möchten. Hat zwei Optionen: `abgerundet` und `quadratisch` |
| Variante | `EntityChipVariante` enum | Variante des Entity-Chips, die Sie anzeigen möchten. Hat zwei Optionen: `regelmäßig` und `transparent` |
| LeftIcon | Icon-Komponente | Eine React-Komponente, die ein Symbol darstellt. Wird auf der linken Seite des Chips angezeigt |
@@ -137,15 +137,15 @@ export const MyComponent = () => {
<Tab title="Eigenschaften">
| Eigenschaften | Typ | Beschreibung |
| ------------- | ------------------------- | ------------------------------------------------------------------------------------------------------ |
| linkToEntity | string | Der Link zur Entität |
| entityId | string | Der eindeutige Identifikator für die Entität |
| name | string | Der Name der Entität |
| pictureUrl | Zeichenfolge | s Bild", |
| avatarType | Avatar-Typ | Der Typ des Avatars, den Sie anzeigen möchten. Hat zwei Optionen: `abgerundet` und `quadratisch` |
| Variante | `EntityChipVariante` enum | Variante des Entity-Chips, die Sie anzeigen möchten. Hat zwei Optionen: `regelmäßig` und `transparent` |
| LeftIcon | Icon-Komponente | Eine React-Komponente, die ein Symbol darstellt. Wird auf der linken Seite des Chips angezeigt |
| Props | Typ | Beschreibung |
| ------------ | ------------------------- | ------------------------------------------------------------------------------------------------------ |
| linkToEntity | string | Der Link zur Entität |
| entityId | string | Der eindeutige Identifikator für die Entität |
| name | string | Der Name der Entität |
| pictureUrl | Zeichenfolge | s Bild", |
| avatarType | Avatar-Typ | Der Typ des Avatars, den Sie anzeigen möchten. Hat zwei Optionen: `abgerundet` und `quadratisch` |
| Variante | `EntityChipVariante` enum | Variante des Entity-Chips, die Sie anzeigen möchten. Hat zwei Optionen: `regelmäßig` und `transparent` |
| LeftIcon | Icon-Komponente | Eine React-Komponente, die ein Symbol darstellt. Wird auf der linken Seite des Chips angezeigt |
@@ -1,6 +1,6 @@
---
title: '"Tag"'
icon: '"tag"'
icon: tag
---
Komponente zur visuellen Kategorisierung oder Kennzeichnung von Inhalten.
@@ -40,7 +40,7 @@ export const MyComponent = () => {
<Tab title="&#x22;Eigenschaften&#x22;">
| "Eigenschaften" | Typ | Beschreibung |
| Props | Typ | Beschreibung |
| --------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| deaktiviert | boolesch | Deaktiviert die Symbolauswahl, wenn auf `true` gesetzt ist. |
| beiÄnderung | function | Die Rückruffunktion wird ausgelöst, wenn der Benutzer ein Symbol auswählt. Es erhält ein Objekt mit `iconKey` und `Icon` Eigenschaften |
@@ -23,15 +23,15 @@ export const MyComponent = () => {
<Tab title="&#x22;Eigenschaften&#x22;">
| "Eigenschaften" | Typ | Beschreibung |
| --------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------ |
| bild | Zeichenkette | Die Bildquellen-URL |
| onUpload | Funktion | Die Funktion, die aufgerufen wird, wenn ein Benutzer ein neues Bild hochlädt. Es erhält das `Datei` Objekt als Parameter |
| onRemove | Funktion | Die Funktion wird aufgerufen, wenn der Benutzer auf die Entfernen-Schaltfläche klickt. |
| onAbort | Funktion | Die Funktion wird aufgerufen, wenn der Benutzer während des Bilduploads auf die Abbrechen-Schaltfläche klickt. |
| isUploading | boolesch | Gibt an, ob ein Bild derzeit hochgeladen wird |
| Fehlermeldung | Zeichenkette | Eine optionale Fehlermeldung, die unterhalb des Bildeingangs angezeigt wird. |
| deaktiviert | boolesch | Wenn `true`, ist die gesamte Eingabe deaktiviert und die Schaltflächen sind nicht anklickbar |
| Props | Typ | Beschreibung |
| ------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------ |
| bild | Zeichenkette | Die Bildquellen-URL |
| onUpload | Funktion | Die Funktion, die aufgerufen wird, wenn ein Benutzer ein neues Bild hochlädt. Es erhält das `Datei` Objekt als Parameter |
| onRemove | Funktion | Die Funktion wird aufgerufen, wenn der Benutzer auf die Entfernen-Schaltfläche klickt. |
| onAbort | Funktion | Die Funktion wird aufgerufen, wenn der Benutzer während des Bilduploads auf die Abbrechen-Schaltfläche klickt. |
| isUploading | boolesch | Gibt an, ob ein Bild derzeit hochgeladen wird |
| Fehlermeldung | Zeichenkette | Eine optionale Fehlermeldung, die unterhalb des Bildeingangs angezeigt wird. |
| deaktiviert | boolesch | Wenn `true`, ist die gesamte Eingabe deaktiviert und die Schaltflächen sind nicht anklickbar |
@@ -38,14 +38,14 @@ export const MyComponent = () => {
<Tab title="&#x22;Eigenschaften&#x22;">
| "Eigenschaften" | Typ | Beschreibung |
| --------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Klassenname | Zeichenkette | Optionale CSS-Klasse für zusätzliche Stilgebung |
| deaktiviert | boolesch | Wenn auf `true` gesetzt, wird die Benutzerinteraktion mit der Komponente deaktiviert |
| Beschriftung | string | Die Beschriftung, um den Zweck der `Select`-Komponente zu beschreiben |
| onChange | Funktion | Die Funktion, die aufgerufen wird, wenn sich die ausgewählten Werte ändern |
| optionen | Array | Repräsentiert die verfügbaren Optionen für die `Select`-Komponente. Es ist ein Array von Objekten, bei dem jedes Objekt ein `value` (die eindeutige Kennung), `label` (die eindeutige Kennung) und ein optionales `Icon` hat |
| wert | Zeichenkette | Repräsentiert den aktuell ausgewählten Wert. Es sollte mit einem der `value`-Eigenschaften im `options`-Array übereinstimmen |
| Props | Typ | Beschreibung |
| ------------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Klassenname | Zeichenkette | Optionale CSS-Klasse für zusätzliche Stilgebung |
| deaktiviert | boolesch | Wenn auf `true` gesetzt, wird die Benutzerinteraktion mit der Komponente deaktiviert |
| Beschriftung | string | Die Beschriftung, um den Zweck der `Select`-Komponente zu beschreiben |
| onChange | Funktion | Die Funktion, die aufgerufen wird, wenn sich die ausgewählten Werte ändern |
| optionen | Array | Repräsentiert die verfügbaren Optionen für die `Select`-Komponente. Es ist ein Array von Objekten, bei dem jedes Objekt ein `value` (die eindeutige Kennung), `label` (die eindeutige Kennung) und ein optionales `Icon` hat |
| wert | Zeichenkette | Repräsentiert den aktuell ausgewählten Wert. Es sollte mit einem der `value`-Eigenschaften im `options`-Array übereinstimmen |
@@ -48,7 +48,7 @@ export const MyComponent = () => {
<Tab title="Eigenschaften">
| Eigenschaften | Typ | Beschreibung |
| Props | Typ | Beschreibung |
| -------------- | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| className | Zeichenkette | Optionaler Name für zusätzliche Stile |
| Beschriftung | Zeichenkette | Stellt die Beschriftung für das Eingabefeld dar |
@@ -100,15 +100,15 @@ export const MyComponent = () => {
<Tab title="Eigenschaften">
| Eigenschaften | Typ | Beschreibung |
| ------------- | ------------ | ---------------------------------------------------------------------------------------- |
| onValidate | Funktion | Die Callback-Funktion, die Sie auslösen möchten, wenn der Benutzer die Eingabe validiert |
| minRows | nummer | Die minimale Anzahl von Zeilen für den Textbereich |
| Platzhalter | Zeichenkette | Der Platzhaltertext, den Sie anzeigen möchten, wenn der Textbereich leer ist |
| onFocus | Funktion | Die Callback-Funktion, die Sie auslösen möchten, wenn der Textbereich den Fokus erlangt |
| Variante | Zeichenkette | Die Variante der Eingabe. Optionen umfassen: `Standard`, `Ikone` und `Schaltfläche` |
| buttonTitle | Zeichenkette | Der Titel für die Schaltfläche (nur für die Schaltflächenvariante anwendbar) |
| wert | Zeichenkette | Der Initialwert für den Textbereich |
| Props | Typ | Beschreibung |
| ----------- | ------------ | ---------------------------------------------------------------------------------------- |
| onValidate | Funktion | Die Callback-Funktion, die Sie auslösen möchten, wenn der Benutzer die Eingabe validiert |
| minRows | nummer | Die minimale Anzahl von Zeilen für den Textbereich |
| Platzhalter | Zeichenkette | Der Platzhaltertext, den Sie anzeigen möchten, wenn der Textbereich leer ist |
| onFocus | Funktion | Die Callback-Funktion, die Sie auslösen möchten, wenn der Textbereich den Fokus erlangt |
| Variante | Zeichenkette | Die Variante der Eingabe. Optionen umfassen: `Standard`, `Ikone` und `Schaltfläche` |
| buttonTitle | Zeichenkette | Der Titel für die Schaltfläche (nur für die Schaltflächenvariante anwendbar) |
| wert | Zeichenkette | Der Initialwert für den Textbereich |
@@ -146,13 +146,13 @@ export const MyComponent = () => {
<Tab title="Eigenschaften">
| Eigenschaften | Typ | Beschreibung |
| ------------- | ------------ | ---------------------------------------------------------------------------- |
| deaktiviert | boolesch | Gibt an, ob der Textbereich deaktiviert ist |
| minRows | nummer | Minimale Anzahl sichtbarer Zeilen für den Textbereich. |
| onChange | Funktion | Rückruffunktion wird ausgelöst, wenn sich der Inhalt des Textbereichs ändert |
| Platzhalter | Zeichenkette | Platzhaltertext, der angezeigt wird, wenn der Textbereich leer ist |
| wert | Zeichenkette | Der aktuelle Wert des Textbereichs |
| Props | Typ | Beschreibung |
| ----------- | ------------ | ---------------------------------------------------------------------------- |
| deaktiviert | boolesch | Gibt an, ob der Textbereich deaktiviert ist |
| minRows | nummer | Minimale Anzahl sichtbarer Zeilen für den Textbereich. |
| onChange | Funktion | Rückruffunktion wird ausgelöst, wenn sich der Inhalt des Textbereichs ändert |
| Platzhalter | Zeichenkette | Platzhaltertext, der angezeigt wird, wenn der Textbereich leer ist |
| wert | Zeichenkette | Der aktuelle Wert des Textbereichs |
@@ -30,9 +30,9 @@ export const MyComponent = () => {
<Tab title="&#x22;Eigenschaften&#x22;">
| "Eigenschaften" | Typ | Beschreibung |
| --------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| aktiverSchritt | nummer | Der Index des derzeit aktiven Schritts. Dies bestimmt, welcher Schritt visuell hervorgehoben werden soll. |
| Props | Typ | Beschreibung |
| -------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| aktiverSchritt | nummer | Der Index des derzeit aktiven Schritts. Dies bestimmt, welcher Schritt visuell hervorgehoben werden soll. |
@@ -1,6 +1,6 @@
---
title: Comandi Backend
icon: terminal
icon: terminale
---
## Comandi utili
@@ -1,5 +1,5 @@
---
title: Disposizione
title: Layout
description: Define views, navigation menu items, and page layouts to shape how your app appears in Twenty.
icon: table-columns
---
@@ -40,7 +40,7 @@ export const MyComponent = () => {
<Tab title="Props">
| Props | Tipo | Descrizione |
| Proprietà | Tipo | Descrizione |
| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
| disabilitato | booleano | Disabilita il selettore di icone se impostato su `true` |
| onChange | funzione | La funzione di callback attivata quando l'utente seleziona un'icona. Riceve un oggetto con le proprietà `iconKey` e `Icon` |
@@ -48,7 +48,7 @@ export const MyComponent = () => {
<Tab title="Proprietà">
| Proprietà | Tipo | Descrizione |
| Props | Tipo | Descrizione |
| -------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| nomeClasse | stringa | Nome opzionale per lo stile aggiuntivo |
| etichetta | stringa | Rappresenta l'etichetta per l'input |
@@ -100,7 +100,7 @@ export const MyComponent = () => {
<Tab title="Proprietà">
| Proprietà | Tipo | Descrizione |
| Props | Tipo | Descrizione |
| -------------- | -------- | ------------------------------------------------------------------------------------- |
| suValida | funzione | La funzione di callback che si vuole attivare quando l'utente valida l'input |
| righeMinime | numero | Il numero minimo di righe per l'area di testo |
@@ -146,7 +146,7 @@ export const MyComponent = () => {
<Tab title="Proprietà">
| Proprietà | Tipo | Descrizione |
| Props | Tipo | Descrizione |
| ------------- | -------- | --------------------------------------------------------------------------- |
| disabilitato | booleano | Indica se l'area di testo è disabilitata |
| righeMinime | numero | Numero minimo di righe visibili per l'area di testo. |
@@ -20,7 +20,7 @@ Views, navigation items, and page layouts reference each other by `universalIden
* A **page layout** of type `RECORD_PAGE` targets an object and can embed [front components](/l/pt/developers/extend/apps/front-components) inside its tabs as widgets.
<AccordionGroup>
<Accordion title="defineView" description="Define visualizações salvas para objetos">
<Accordion title="defineView" description="Defina visualizações salvas para objetos">
As visualizações são configurações salvas de como os registros de um objeto são exibidos — incluindo quais campos são visíveis, sua ordem e quaisquer filtros ou grupos aplicados. Use `defineView()` para enviar visualizações pré-configuradas com seu app:
@@ -56,7 +56,7 @@ Pontos-chave:
* `position` controla a ordenação quando existem várias visualizações para o mesmo objeto.
</Accordion>
<Accordion title="defineNavigationMenuItem" description="Define links de navegação da barra lateral">
<Accordion title="defineNavigationMenuItem" description="Defina links de navegação da barra lateral">
Os itens do menu de navegação adicionam entradas personalizadas à barra lateral do espaço de trabalho. Use `defineNavigationMenuItem()` para vincular a visualizações, URLs externas ou objetos:
@@ -1,23 +1,23 @@
---
title: OAuth
icon: chave
description: Authorization code flow with PKCE and client credentials for server-to-server access.
description: Fluxo de código de autorização com PKCE e credenciais de cliente para acesso servidor a servidor.
---
Twenty implements OAuth 2.0 with authorization code + PKCE for user-facing apps and client credentials for server-to-server access. Clients are registered dynamically via [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) — no manual setup in a dashboard.
A Twenty implementa OAuth 2.0 com código de autorização + PKCE para aplicações voltadas ao utilizador e credenciais de cliente para acesso servidor a servidor. Os clientes são registados dinamicamente via [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) — sem configuração manual num painel.
## When to Use OAuth
## Quando usar OAuth
| Cenário | Auth Method |
| --------------------------------------- | -------------------------------------------------------------------------------- |
| Internal scripts, automation | [API Key](/l/pt/developers/extend/api#authentication) |
| External app acting on behalf of a user | **OAuth — Authorization Code** |
| Server-to-server, no user context | **OAuth — Client Credentials** |
| Twenty App with UI extensions | [Apps](/l/pt/developers/extend/apps/getting-started) (OAuth is handled automatically) |
| Cenário | Método de autenticação |
| -------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Scripts internos, automatização | [Chave de API](/l/pt/developers/extend/api#authentication) |
| Aplicação externa atuando em nome de um utilizador | **OAuth — Código de Autorização** |
| Servidor a servidor, sem contexto de utilizador | **OAuth — Credenciais do Cliente** |
| Aplicação Twenty com extensões de UI | [Aplicações](/l/pt/developers/extend/apps/getting-started) (OAuth é tratado automaticamente) |
## Register a Client
## Registar um cliente
Twenty supports **dynamic client registration** per [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591). No manual setup needed — register programmatically:
A Twenty suporta **registo dinâmico de clientes** conforme [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591). Sem necessidade de configuração manual — registe programaticamente:
```bash
POST /oauth/register
@@ -31,7 +31,7 @@ Content-Type: application/json
}
```
**Response:**
**Resposta:**
```json
{
@@ -43,23 +43,23 @@ Content-Type: application/json
```
<Warning>
Store the `client_secret` securely — it cannot be retrieved later.
Guarde o `client_secret` com segurança — não poderá ser recuperado mais tarde.
</Warning>
## Escopos
| Scope | Acesso |
| -------- | ---------------------------------------------------- |
| `api` | Full read/write access to the Core and Metadata APIs |
| `perfil` | Read the authenticated user's profile information |
| Escopo | Acesso |
| -------- | ------------------------------------------------------- |
| `api` | Acesso total de leitura/escrita às APIs Core e Metadata |
| `perfil` | Leia as informações do perfil do utilizador autenticado |
Request scopes as a space-separated string: `scope=api profile`
Solicite escopos como uma cadeia separada por espaços: `scope=api profile`
## Authorization Code Flow
## Fluxo de Código de Autorização
Use this flow when your app acts on behalf of a Twenty user.
Use este fluxo quando a sua aplicação atuar em nome de um utilizador da Twenty.
### 1. Redirect the user to authorize
### 1. Redirecione o utilizador para autorizar
```
GET /oauth/authorize?
@@ -72,29 +72,29 @@ GET /oauth/authorize?
code_challenge_method=S256
```
| Parâmetro | Obrigatório | Descrição |
| ----------------------- | ----------- | ------------------------------------------------------------ |
| `client_id` | Sim | Your registered client ID |
| `response_type` | Sim | Must be `code` |
| `redirect_uri` | Sim | Must match a registered redirect URI |
| `scope` | Não | Space-separated scopes (defaults to `api`) |
| `estado` | Recomendado | Random string to prevent CSRF attacks |
| `code_challenge` | Recomendado | PKCE challenge (SHA-256 hash of verifier, base64url-encoded) |
| `code_challenge_method` | Recomendado | Must be `S256` when using PKCE |
| Parâmetro | Obrigatório | Descrição |
| ----------------------- | ----------- | ------------------------------------------------------------------- |
| `client_id` | Sim | O seu ID de cliente registado |
| `response_type` | Sim | Deve ser `code` |
| `redirect_uri` | Sim | Deve corresponder a um URI de redirecionamento registado |
| `scope` | Não | Escopos separados por espaços (predefinido para `api`) |
| `estado` | Recomendado | Cadeia aleatória para prevenir ataques CSRF |
| `code_challenge` | Recomendado | Desafio PKCE (hash SHA-256 do verificador, codificado em base64url) |
| `code_challenge_method` | Recomendado | Deve ser `S256` ao usar PKCE |
The user sees a consent screen and approves or denies access.
O utilizador vê um ecrã de consentimento e aprova ou nega o acesso.
### 2. Handle the callback
### 2. Trate o callback
After authorization, Twenty redirects back to your `redirect_uri`:
Após a autorização, a Twenty redireciona de volta para o seu `redirect_uri`:
```
https://myapp.com/callback?code=AUTH_CODE&state=random_state_value
```
Verify that `state` matches what you sent.
Verifique se `state` corresponde ao que enviou.
### 3. Exchange the code for tokens
### 3. Troque o código por tokens
```bash
POST /oauth/token
@@ -108,7 +108,7 @@ client_secret=YOUR_CLIENT_SECRET&
code_verifier=YOUR_PKCE_VERIFIER
```
**Response:**
**Resposta:**
```json
{
@@ -119,14 +119,14 @@ code_verifier=YOUR_PKCE_VERIFIER
}
```
### 4. Use the access token
### 4. Use o token de acesso
```bash
GET /rest/companies
Authorization: Bearer ACCESS_TOKEN
```
### 5. Refresh when expired
### 5. Atualize quando expirar
```bash
POST /oauth/token
@@ -138,9 +138,9 @@ client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET
```
## Client Credentials Flow
## Fluxo de Credenciais do Cliente
For server-to-server integrations with no user interaction:
Para integrações servidor a servidor sem interação do utilizador:
```bash
POST /oauth/token
@@ -152,38 +152,38 @@ client_secret=YOUR_CLIENT_SECRET&
scope=api
```
The returned token has workspace-level access, not tied to any specific user.
O token retornado tem acesso ao nível do espaço de trabalho, não vinculado a nenhum utilizador específico.
## Server Discovery
## Descoberta do servidor
Twenty publishes its OAuth configuration at a standard discovery endpoint:
A Twenty publica a sua configuração OAuth num endpoint padrão de descoberta:
```
GET /.well-known/oauth-authorization-server
```
This returns all endpoints, supported grant types, scopes, and capabilities — useful for building generic OAuth clients.
Isto retorna todos os endpoints, tipos de concessão suportados, escopos e capacidades — útil para criar clientes OAuth genéricos.
## API Endpoints Summary
## Resumo de endpoints da API
| Endpoint | Finalidade |
| ----------------------------------------- | --------------------------- |
| `/.well-known/oauth-authorization-server` | Server metadata discovery |
| `/oauth/register` | Dynamic client registration |
| `/oauth/authorize` | User authorization |
| `/oauth/token` | Token exchange and refresh |
| Endpoint | Finalidade |
| ----------------------------------------- | ----------------------------------- |
| `/.well-known/oauth-authorization-server` | Descoberta de metadados do servidor |
| `/oauth/register` | Registo dinâmico de cliente |
| `/oauth/authorize` | Autorização do utilizador |
| `/oauth/token` | Troca e atualização de tokens |
| Ambiente | URL base |
| ------------------ | ------------------------ |
| **Nuvem** | `https://api.twenty.com` |
| **Auto-hospedado** | `https://{your-domain}` |
## OAuth vs API Keys
## OAuth vs Chaves de API
| | Chaves API | OAuth |
| ------------------ | ----------------------- | -------------------------------------- |
| **Configuração** | Generate in Settings | Register a client, implement flow |
| **User context** | None (workspace-level) | Specific user's permissions |
| **Melhor para** | Scripts, internal tools | External apps, multi-user integrations |
| **Token rotation** | Manual | Automatic via refresh tokens |
| **Scoped access** | Full API access | Granular via scopes |
| | Chaves API | OAuth |
| ----------------------------- | ------------------------------------ | ------------------------------------------------ |
| **Configuração** | Gerar em Configurações | Registar um cliente, implementar o fluxo |
| **Contexto do utilizador** | Nenhum (nível de espaço de trabalho) | Permissões de um utilizador específico |
| **Melhor para** | Scripts, ferramentas internas | Aplicações externas, integrações multiutilizador |
| **Rotação de tokens** | Manual | Automática via tokens de atualização |
| **Acesso baseado em escopos** | Acesso total à API | Granular por escopos |
@@ -1,23 +1,23 @@
---
title: OAuth
icon: ключ
description: Authorization code flow with PKCE and client credentials for server-to-server access.
description: Поток авторизационного кода с PKCE и учётными данными клиента для доступа между серверами.
---
Twenty implements OAuth 2.0 with authorization code + PKCE for user-facing apps and client credentials for server-to-server access. Clients are registered dynamically via [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) — no manual setup in a dashboard.
Twenty реализует OAuth 2.0 с потоком авторизационного кода + PKCE для пользовательских приложений и с учётными данными клиента для доступа между серверами. Клиенты регистрируются динамически по [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) — никакой ручной настройки в панели управления.
## When to Use OAuth
## Когда использовать OAuth
| Сценарий | Auth Method |
| --------------------------------------- | -------------------------------------------------------------------------------- |
| Internal scripts, automation | [API Key](/l/ru/developers/extend/api#authentication) |
| External app acting on behalf of a user | **OAuth — Authorization Code** |
| Server-to-server, no user context | **OAuth — Client Credentials** |
| Twenty App with UI extensions | [Apps](/l/ru/developers/extend/apps/getting-started) (OAuth is handled automatically) |
| Сценарий | Метод аутентификации |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
| Внутренние скрипты, автоматизация | [Ключ API](/l/ru/developers/extend/api#authentication) |
| Внешнее приложение, действующее от имени пользователя | **OAuth — авторизационный код** |
| Между серверами, без контекста пользователя | **OAuth — клиентские учётные данные** |
| Приложение Twenty с расширениями пользовательского интерфейса (UI) | [Приложения](/l/ru/developers/extend/apps/getting-started) (OAuth обрабатывается автоматически) |
## Register a Client
## Зарегистрировать клиента
Twenty supports **dynamic client registration** per [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591). No manual setup needed — register programmatically:
Twenty поддерживает **динамическую регистрацию клиентов** по [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591). Ручная настройка не требуется — регистрируйте программно:
```bash
POST /oauth/register
@@ -31,7 +31,7 @@ Content-Type: application/json
}
```
**Response:**
**Ответ:**
```json
{
@@ -43,23 +43,23 @@ Content-Type: application/json
```
<Warning>
Store the `client_secret` securely — it cannot be retrieved later.
Храните `client_secret` в надёжном месте — позже его нельзя будет получить.
</Warning>
## Области действия
| Scope | Доступ |
| --------- | ---------------------------------------------------- |
| `api` | Full read/write access to the Core and Metadata APIs |
| `profile` | Read the authenticated user's profile information |
| Область действия | Доступ |
| ---------------- | ----------------------------------------------------------- |
| `api` | Полный доступ на чтение/запись к Core и Metadata API |
| `profile` | Чтение информации профиля аутентифицированного пользователя |
Request scopes as a space-separated string: `scope=api profile`
Запрашивайте области действия как строку, разделённую пробелами: `scope=api profile`
## Authorization Code Flow
## Поток авторизационного кода
Use this flow when your app acts on behalf of a Twenty user.
Используйте этот поток, когда ваше приложение действует от имени пользователя Twenty.
### 1. Redirect the user to authorize
### 1. Перенаправьте пользователя для авторизации
```
GET /oauth/authorize?
@@ -72,29 +72,29 @@ GET /oauth/authorize?
code_challenge_method=S256
```
| Параметр | Обязательно | Описание |
| ----------------------- | ------------- | ------------------------------------------------------------ |
| `client_id` | Да | Your registered client ID |
| `response_type` | Да | Must be `code` |
| `redirect_uri` | Да | Must match a registered redirect URI |
| `scope` | Нет | Space-separated scopes (defaults to `api`) |
| `state` | Рекомендуется | Random string to prevent CSRF attacks |
| `code_challenge` | Рекомендуется | PKCE challenge (SHA-256 hash of verifier, base64url-encoded) |
| `code_challenge_method` | Рекомендуется | Must be `S256` when using PKCE |
| Параметр | Обязательно | Описание |
| ----------------------- | ------------- | --------------------------------------------------------------- |
| `client_id` | Да | Идентификатор вашего зарегистрированного клиента |
| `response_type` | Да | Должно быть `code` |
| `redirect_uri` | Да | Должен совпадать с зарегистрированным redirect URI |
| `scope` | Нет | Области действия, разделённые пробелами (по умолчанию `api`) |
| `state` | Рекомендуется | Случайная строка для предотвращения CSRF-атак |
| `code_challenge` | Рекомендуется | Вызов PKCE (хэш SHA-256 от верификатора, в кодировке base64url) |
| `code_challenge_method` | Рекомендуется | Должно быть `S256` при использовании PKCE |
The user sees a consent screen and approves or denies access.
Пользователь видит экран согласия и подтверждает или отклоняет доступ.
### 2. Handle the callback
### 2. Обработайте обратный вызов
After authorization, Twenty redirects back to your `redirect_uri`:
После авторизации Twenty перенаправляет обратно на ваш `redirect_uri`:
```
https://myapp.com/callback?code=AUTH_CODE&state=random_state_value
```
Verify that `state` matches what you sent.
Проверьте, что `state` совпадает с отправленным значением.
### 3. Exchange the code for tokens
### 3. Обменяйте код на токены
```bash
POST /oauth/token
@@ -108,7 +108,7 @@ client_secret=YOUR_CLIENT_SECRET&
code_verifier=YOUR_PKCE_VERIFIER
```
**Response:**
**Ответ:**
```json
{
@@ -119,14 +119,14 @@ code_verifier=YOUR_PKCE_VERIFIER
}
```
### 4. Use the access token
### 4. Используйте токен доступа
```bash
GET /rest/companies
Authorization: Bearer ACCESS_TOKEN
```
### 5. Refresh when expired
### 5. Обновляйте при истечении срока действия
```bash
POST /oauth/token
@@ -138,9 +138,9 @@ client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET
```
## Client Credentials Flow
## Поток клиентских учётных данных
For server-to-server integrations with no user interaction:
Для интеграций между серверами без участия пользователя:
```bash
POST /oauth/token
@@ -152,38 +152,38 @@ client_secret=YOUR_CLIENT_SECRET&
scope=api
```
The returned token has workspace-level access, not tied to any specific user.
Возвращаемый токен имеет доступ на уровне рабочей области и не привязан к конкретному пользователю.
## Server Discovery
## Обнаружение сервера
Twenty publishes its OAuth configuration at a standard discovery endpoint:
Twenty публикует свою конфигурацию OAuth на стандартной конечной точке обнаружения:
```
GET /.well-known/oauth-authorization-server
```
This returns all endpoints, supported grant types, scopes, and capabilities — useful for building generic OAuth clients.
Это возвращает все конечные точки, поддерживаемые типы грантов, области действия и возможности — полезно для создания универсальных OAuth-клиентов.
## API Endpoints Summary
## Сводка конечных точек API
| Конечная точка | Назначение |
| ----------------------------------------- | --------------------------- |
| `/.well-known/oauth-authorization-server` | Server metadata discovery |
| `/oauth/register` | Dynamic client registration |
| `/oauth/authorize` | User authorization |
| `/oauth/token` | Token exchange and refresh |
| Конечная точка | Назначение |
| ----------------------------------------- | --------------------------------- |
| `/.well-known/oauth-authorization-server` | Обнаружение метаданных сервера |
| `/oauth/register` | Динамическая регистрация клиентов |
| `/oauth/authorize` | Авторизация пользователя |
| `/oauth/token` | Обмен и обновление токена |
| Среда | Базовый URL |
| --------------------------- | ------------------------ |
| **Облако** | `https://api.twenty.com` |
| **Самостоятельный хостинг** | `https://{your-domain}` |
## OAuth vs API Keys
## OAuth против ключей API
| | API ключи | OAuth |
| ---------------------------- | ----------------------- | -------------------------------------- |
| **Настройка** | Generate in Settings | Register a client, implement flow |
| **User context** | None (workspace-level) | Specific user's permissions |
| **Лучше всего подходит для** | Scripts, internal tools | External apps, multi-user integrations |
| **Token rotation** | Вручную | Automatic via refresh tokens |
| **Scoped access** | Full API access | Granular via scopes |
| | API ключи | OAuth |
| ------------------------------- | ------------------------------------- | ----------------------------------------------------- |
| **Настройка** | Создаются в разделе «Настройки» | Зарегистрировать клиента, реализовать поток |
| **Контекст пользователя** | Отсутствует (уровень рабочей области) | Права конкретного пользователя |
| **Лучше всего подходит для** | Скрипты, внутренние инструменты | Внешние приложения, мультипользовательские интеграции |
| **Ротация токенов** | Вручную | Автоматическая с помощью refresh-токенов |
| **Доступ по областям действия** | Полный доступ к API | Детализированный через области действия |
@@ -1,23 +1,23 @@
---
title: OAuth
icon: anahtar
description: Authorization code flow with PKCE and client credentials for server-to-server access.
description: PKCE'li yetkilendirme kodu akışı ve sunucudan sunucuya erişim için istemci kimlik bilgileri.
---
Twenty implements OAuth 2.0 with authorization code + PKCE for user-facing apps and client credentials for server-to-server access. Clients are registered dynamically via [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) — no manual setup in a dashboard.
Twenty, kullanıcıya dönük uygulamalar için yetkilendirme kodu + PKCE'yi ve sunucudan sunucuya erişim için istemci kimlik bilgilerini kullanarak OAuth 2.0'ı uygular. İstemciler [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) aracılığıyla dinamik olarak kaydedilir — bir kontrol panelinde manuel kurulum gerekmez.
## When to Use OAuth
## OAuth Ne Zaman Kullanılır
| Senaryo | Auth Method |
| --------------------------------------- | -------------------------------------------------------------------------------- |
| Internal scripts, automation | [API Key](/l/tr/developers/extend/api#authentication) |
| External app acting on behalf of a user | **OAuth — Authorization Code** |
| Server-to-server, no user context | **OAuth — Client Credentials** |
| Twenty App with UI extensions | [Apps](/l/tr/developers/extend/apps/getting-started) (OAuth is handled automatically) |
| Senaryo | Kimlik Doğrulama Yöntemi |
| --------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| Dahili betikler, otomasyon | [API Anahtarı](/l/tr/developers/extend/api#authentication) |
| Bir kullanıcının adına hareket eden harici uygulama | **OAuth — Yetkilendirme Kodu** |
| Sunucudan sunucuya, kullanıcı bağlamı yok | **OAuth — İstemci Kimlik Bilgileri** |
| UI uzantılarına sahip Twenty Uygulaması | [Uygulamalar](/l/tr/developers/extend/apps/getting-started) (OAuth otomatik olarak yönetilir) |
## Register a Client
## Bir İstemci Kaydedin
Twenty supports **dynamic client registration** per [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591). No manual setup needed — register programmatically:
Twenty, [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591) uyarınca **dinamik istemci kaydını** destekler. Manuel kurulum gerekmez — programatik olarak kaydedin:
```bash
POST /oauth/register
@@ -31,7 +31,7 @@ Content-Type: application/json
}
```
**Response:**
**Yanıt:**
```json
{
@@ -43,23 +43,23 @@ Content-Type: application/json
```
<Warning>
Store the `client_secret` securely — it cannot be retrieved later.
`client_secret` değerini güvenli bir şekilde saklayın — daha sonra geri alınamaz.
</Warning>
## Kapsamlar
| Scope | Erişim |
| --------- | ---------------------------------------------------- |
| `api` | Full read/write access to the Core and Metadata APIs |
| `profile` | Read the authenticated user's profile information |
| Kapsam | Erişim |
| --------- | ---------------------------------------------------------- |
| `api` | Core ve Metadata API'lerine tam okuma/yazma erişimi |
| `profile` | Kimliği doğrulanmış kullanıcının profil bilgilerini okuyun |
Request scopes as a space-separated string: `scope=api profile`
Kapsamları boşlukla ayrılmış bir dize olarak isteyin: `scope=api profile`
## Authorization Code Flow
## Yetkilendirme Kodu Akışı
Use this flow when your app acts on behalf of a Twenty user.
Uygulamanız bir Twenty kullanıcısı adına hareket ettiğinde bu akışı kullanın.
### 1. Redirect the user to authorize
### 1. Kullanıcıyı yetkilendirmek için yönlendirin
```
GET /oauth/authorize?
@@ -72,29 +72,29 @@ GET /oauth/authorize?
code_challenge_method=S256
```
| Parametre | Zorunlu | Açıklama |
| ----------------------- | -------- | ------------------------------------------------------------ |
| `client_id` | Evet | Your registered client ID |
| `response_type` | Evet | Must be `code` |
| `redirect_uri` | Evet | Must match a registered redirect URI |
| `scope` | Hayır | Space-separated scopes (defaults to `api`) |
| `state` | Önerilen | Random string to prevent CSRF attacks |
| `code_challenge` | Önerilen | PKCE challenge (SHA-256 hash of verifier, base64url-encoded) |
| `code_challenge_method` | Önerilen | Must be `S256` when using PKCE |
| Parametre | Zorunlu | Açıklama |
| ----------------------- | -------- | ------------------------------------------------------------------------ |
| `client_id` | Evet | Kayıtlı istemci kimliğiniz |
| `response_type` | Evet | `code` olmalıdır |
| `redirect_uri` | Evet | Kayıtlı bir yönlendirme URI'siyle eşleşmelidir |
| `scope` | Hayır | Boşlukla ayrılmış kapsamlar (varsayılan: `api`) |
| `state` | Önerilen | CSRF saldırılarını önlemek için rastgele bir dize |
| `code_challenge` | Önerilen | PKCE challenge (doğrulayıcının SHA-256 karması, base64url ile kodlanmış) |
| `code_challenge_method` | Önerilen | PKCE kullanılırken `S256` olmalıdır |
The user sees a consent screen and approves or denies access.
Kullanıcı bir onay ekranı görür ve erişimi onaylar veya reddeder.
### 2. Handle the callback
### 2. Geri dönüşü işleyin
After authorization, Twenty redirects back to your `redirect_uri`:
Yetkilendirmeden sonra, Twenty `redirect_uri` adresinize geri yönlendirir:
```
https://myapp.com/callback?code=AUTH_CODE&state=random_state_value
```
Verify that `state` matches what you sent.
`state` değerinin gönderdiğinizle eşleştiğini doğrulayın.
### 3. Exchange the code for tokens
### 3. Kodu belirteçlerle değiş tokuş edin
```bash
POST /oauth/token
@@ -108,7 +108,7 @@ client_secret=YOUR_CLIENT_SECRET&
code_verifier=YOUR_PKCE_VERIFIER
```
**Response:**
**Yanıt:**
```json
{
@@ -119,14 +119,14 @@ code_verifier=YOUR_PKCE_VERIFIER
}
```
### 4. Use the access token
### 4. Erişim belirtecini kullanın
```bash
GET /rest/companies
Authorization: Bearer ACCESS_TOKEN
```
### 5. Refresh when expired
### 5. Süresi dolduğunda yenileyin
```bash
POST /oauth/token
@@ -138,9 +138,9 @@ client_id=YOUR_CLIENT_ID&
client_secret=YOUR_CLIENT_SECRET
```
## Client Credentials Flow
## İstemci Kimlik Bilgileri Akışı
For server-to-server integrations with no user interaction:
Sunucudan sunucuya, kullanıcı etkileşimi olmayan entegrasyonlar için:
```bash
POST /oauth/token
@@ -152,38 +152,38 @@ client_secret=YOUR_CLIENT_SECRET&
scope=api
```
The returned token has workspace-level access, not tied to any specific user.
Döndürülen belirteç, belirli bir kullanıcıya bağlı olmayan, çalışma alanı düzeyinde erişime sahiptir.
## Server Discovery
## Sunucu Keşfi
Twenty publishes its OAuth configuration at a standard discovery endpoint:
Twenty, OAuth yapılandırmasını standart bir keşif uç noktasında yayımlar:
```
GET /.well-known/oauth-authorization-server
```
This returns all endpoints, supported grant types, scopes, and capabilities — useful for building generic OAuth clients.
Bu, tüm uç noktaları, desteklenen grant türlerini, kapsamları ve yetenekleri döndürür — genel OAuth istemcileri oluşturmak için kullanışlıdır.
## API Endpoints Summary
## API Uç Noktaları Özeti
| Uç nokta | Amaç |
| ----------------------------------------- | --------------------------- |
| `/.well-known/oauth-authorization-server` | Server metadata discovery |
| `/oauth/register` | Dynamic client registration |
| `/oauth/authorize` | User authorization |
| `/oauth/token` | Token exchange and refresh |
| Uç nokta | Amaç |
| ----------------------------------------- | ----------------------------- |
| `/.well-known/oauth-authorization-server` | Sunucu üstverisi keşfi |
| `/oauth/register` | Dinamik istemci kaydı |
| `/oauth/authorize` | Kullanıcı yetkilendirmesi |
| `/oauth/token` | Belirteç değişimi ve yenileme |
| Ortam | Temel URL |
| ---------------------------- | ------------------------ |
| **Bulut** | `https://api.twenty.com` |
| **Kendi Kendine Barındırma** | `https://{your-domain}` |
## OAuth vs API Keys
## OAuth ve API Anahtarları
| | API Anahtarları | OAuth |
| ------------------ | ----------------------- | -------------------------------------- |
| **Kurulum** | Generate in Settings | Register a client, implement flow |
| **User context** | None (workspace-level) | Specific user's permissions |
| **En uygun** | Scripts, internal tools | External apps, multi-user integrations |
| **Token rotation** | Manuel | Automatic via refresh tokens |
| **Scoped access** | Full API access | Granular via scopes |
| | API Anahtarları | OAuth |
| ------------------------- | -------------------------- | -------------------------------------------------- |
| **Kurulum** | Ayarlar'da oluşturun | Bir istemci kaydedin, akışı uygulayın |
| **Kullanıcı bağlamı** | Yok (çalışma alanı düzeyi) | Belirli bir kullanıcının izinleri |
| **En uygun** | Betikler, dahili araçlar | Harici uygulamalar, çok kullanıcılı entegrasyonlar |
| **Belirteç döndürme** | Manuel | Yenileme belirteçleri aracılığıyla otomatik olarak |
| **Kapsama dayalı erişim** | Tam API erişimi | Kapsamlar aracılığıyla ayrıntılı |
@@ -9,13 +9,13 @@ Twenty'nin yerleşimi üç düzeyde özelleştirilebilir: uygulamada nasıl gezi
Sol kenar çubuğu tamamen özelleştirilebilir. Şunları yapabilirsiniz:
* **Öğeleri sürükleyip bırakarak yeniden sıralayın**
* **Öğeleri yeniden sıralayın** sürükleyip bırakarak
* **Klasörler oluşturun** ilgili nesneleri ve görünümleri gruplamak için
* **Nesneleri gizleyin** — kullanmadıklarınızı
* **Özel bağlantılar ekleyin** harici araçlara
* **Favorileri sabitleyin** görünümlere, kayıtlara veya aramalara hızlı erişim için
[Gezinme başvurusu →](/l/tr/user-guide/layout/capabilities/navigation)
[Gezinme referansı →](/l/tr/user-guide/layout/capabilities/navigation)
## Görünümler
@@ -42,4 +42,4 @@ Bir kaydı açtığınızda, ayrıntı sayfası yapılandırılabilir sekmeler v
Komut menüsünden yerleşim özelleştirme moduna girin (`Cmd+K` → "Kayıt sayfası yerleşimini düzenle").
[Kayıt sayfaları başvurusu →](/l/tr/user-guide/layout/capabilities/record-pages)
[Kayıt sayfaları referansı →](/l/tr/user-guide/layout/capabilities/record-pages)