i18n - docs translations (#19939)
Created by Github action Co-authored-by: github-actions <github-actions@twenty.com>
This commit is contained in:
committed by
GitHub
parent
8f34a02fea
commit
8bb98c309a
@@ -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=""Eigenschaften"">
|
||||
|
||||
|
||||
| "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=""Eigenschaften"">
|
||||
|
||||
|
||||
| "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=""Eigenschaften"">
|
||||
|
||||
|
||||
| "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=""Eigenschaften"">
|
||||
|
||||
|
||||
| "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=""Eigenschaften"">
|
||||
|
||||
|
||||
| "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
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user