> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nekt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sólides as a data source

> Bring your Sólides Gestão (HR) and Sólides Ponto (time tracking) data to Nekt.

Sólides is a Brazilian HR software suite. This connector reads two of its products, each through its own official API:

* **Sólides Gestão** (HR): employees with their full record, positions, departments, absences, occurrences, Profiler results and passports, talent pool resumes, job openings and their candidates, and performance evaluations.
* **Sólides Ponto / DP** (time tracking, formerly Tangerino): employees, punches, punch observations, adjustments (vacations, sick notes, days off), job roles, workplaces, cost centers, work schedules, punch rules, holiday calendars, managers, companies, devices and expense refunds.

Each product has its own API token. Fill in the token of each product you use; the tables of a product appear only when its token is filled in.

> [!NOTE]
>
> The connector only reads data. It never creates, changes or deletes anything in Sólides.

## Configuring Sólides as a Source

In the [Sources](https://app.nekt.ai/sources) tab, click on the "Add source" button located on the top right of your screen. Then, select the Sólides option from the list of connectors.

Click **Next** and you'll be prompted to add your access.

### 1. Add account access

Fill in at least one of the two tokens:

* **Sólides Gestão API Token**: an administrator of Sólides Gestão generates it under **Configurações > Ativar API de Integração > Ativar API**. Leave it empty if you do not use Sólides Gestão.
* **Sólides Ponto API Token**: an administrator of Sólides Ponto copies it under **Empregador > Integrações > Token de integração**. If the token is not there, ask Sólides support to enable the integration token for your account first. Leave it empty if you do not use Sólides Ponto.
* **Start Date**: the earliest date read by the date-based tables: punches and punch observations (on the first sync and on full syncs), refunds and holiday calendars. The other tables are always read whole.
* **Punch Lookback (days)** (advanced, default 45): on every sync, punches and punch observations are read again from this many days before the previous sync, to pick up edits, approvals and late punches.

> [!TIP]
>
> If your company uses both products, fill in both tokens in the same source. Each token is only used for its own product.

Once you're done, click **Next**.

### 2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones.

> Tip: The stream can be found more easily by typing its name.

Select the streams and click **Next**.

### 3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will effectively contain the fetched data) and the type of sync.

* **Layer**: choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
* **Folder**: a folder can be created inside the selected layer to group all tables being created from this new data source.
* **Table name**: we suggest a name, but feel free to customize it. You have the option to add a **prefix** to all tables at once and make this process faster!
* **Sync Type**: keep the suggested type. Punches and punch observations are **Incremental**: each sync reads the recent days (from the previous sync minus the Punch Lookback) and merges them into the table. The other tables are **Full table**: the Sólides APIs cannot list records changed since a date, so each sync reads them whole and replaces the table.

Once you are done configuring, click **Next**.

### 4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters.

To define your [Trigger](https://docs.nekt.com/runs/scheduling-and-triggers.md), consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). A daily sync works well for most companies.

Optionally, you can configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource [here](https://docs.nekt.com/get-started/core-concepts/resource-control).

Once you are ready, click **Next** to finalize the setup.

### 5. Check your new source

You can view your new source on the [Sources](https://app.nekt.ai/sources) page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.

> [!WARNING]
>
> For you to be able to see it on your [Catalog](https://app.nekt.ai/catalog), you need at least one successful source run.

# Streams and Fields

## Available streams

The table below lists every stream, its **slug** (the exact identifier to pass when creating the source via API), the token it needs and a short description.

| Stream | Slug | Token | Sync | Description |
| - | - | - | - | - |
| Employees (Gestão) | `gestao_employees` | Gestão | Full table | Every employee, active and dismissed. |
| Employee details (Gestão) | `gestao_employee_details` | Gestão | Full table | Full record of each employee: contacts, documents, dependents, vacations, benefits, occupational health. |
| Positions (Gestão) | `gestao_positions` | Gestão | Full table | Positions (cargos). |
| Departments (Gestão) | `gestao_departments` | Gestão | Full table | Departments. |
| Absences (Gestão) | `gestao_absences` | Gestão | Full table | Absence records (absenteísmo). |
| Occurrences (Gestão) | `gestao_occurrences` | Gestão | Full table | Employee occurrences (ocorrências). |
| Dismissal reasons (Gestão) | `gestao_dismissal_reasons` | Gestão | Full table | Dismissal reasons. |
| Contract types (Gestão) | `gestao_contract_types` | Gestão | Full table | Employment contract types. |
| Passports (Gestão) | `gestao_passports` | Gestão | Full table | Profiler passports sent to people. |
| Profilers (Gestão) | `gestao_profilers` | Gestão | Full table | Profiler results of the employees. |
| Resumes (Gestão) | `gestao_resumes` | Gestão | Full table | Talent pool resumes (without the photo). |
| Job openings (Gestão) | `gestao_job_openings` | Gestão | Full table | Job openings (vagas). |
| Job opening candidates (Gestão) | `gestao_job_opening_candidates` | Gestão | Full table | Candidates of each job opening and their phase. |
| Evaluation cycles (Gestão) | `gestao_evaluation_cycles` | Gestão | Full table | Performance evaluation cycles. |
| Evaluations (Gestão) | `gestao_evaluations` | Gestão | Full table | Evaluations of each cycle, with grades per criterion. |
| Employees (Ponto) | `ponto_employees` | Ponto | Full table | Every employee, active and dismissed. |
| Job roles (Ponto) | `ponto_job_roles` | Ponto | Full table | Job roles with CBO and salary. |
| Workplaces (Ponto) | `ponto_workplaces` | Ponto | Full table | Workplaces (locais de trabalho / setores), active and inactive. |
| Cost centers (Ponto) | `ponto_cost_centers` | Ponto | Full table | Cost centers. |
| Adjustment reasons (Ponto) | `ponto_adjustment_reasons` | Ponto | Full table | Adjustment reasons (motivos de ajuste). |
| Adjustments (Ponto) | `ponto_adjustments` | Ponto | Full table | Vacations, sick notes and other adjustments. |
| Managers (Ponto) | `ponto_managers` | Ponto | Full table | Managers and the employees they manage. |
| Companies (Ponto) | `ponto_companies` | Ponto | Full table | Companies (CNPJs) of the account. |
| Work schedules (Ponto) | `ponto_work_schedules` | Ponto | Full table | Work schedules (escalas) with their timetable, active and inactive. |
| Punch rules (Ponto) | `ponto_punch_rules` | Ponto | Full table | Punch rules (regras de ponto). |
| Holiday calendars (Ponto) | `ponto_holiday_calendars` | Ponto | Full table | Holiday calendars per year. |
| Refund types (Ponto) | `ponto_refund_types` | Ponto | Full table | Expense refund types. |
| Refunds (Ponto) | `ponto_refunds` | Ponto | Full table | Expense refunds since the Start Date. |
| Devices (Ponto) | `ponto_devices` | Ponto | Full table | Devices registered to clock in. |
| Employee functions (Ponto) | `ponto_employee_functions` | Ponto | Full table | Employee functions (funções). |
| Punch justifications (Ponto) | `ponto_punch_justifications` | Ponto | Full table | Justifications for manual punch edits. |
| Punches (Ponto) | `ponto_punches` | Ponto | Incremental | Clock-in / clock-out pairs with status, edits, location and device. |
| Punch observations (Ponto) | `ponto_punch_observations` | Ponto | Incremental | History of observations on punches. |

To combine punches with employee data, join `ponto_punches.employee_id` with `ponto_employees.id`. Sólides Gestão and Sólides Ponto use different employee identifiers; match them by CPF (`gestao_employees.cpf` and `ponto_employees.cpf`).

## Fields by stream

Fields marked String (JSON) hold a nested object or list as JSON text; use your warehouse's JSON functions to read them. Dates sent by Sólides Gestão as `dd/mm/aaaa` are converted to standard dates, and display amounts such as `R$ 3.890,00` to numbers. Clock-in PINs, access tokens and photos or attachments sent as files are never synced.

> [accordion] Employees (Gestão)
>
> Every employee of Sólides Gestão, active and dismissed.
>
> Table: `gestao_employees` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the employee in Sólides Gestão. |
> | `name` | String | Full name of the employee. |
> | `cpf` | String | Brazilian individual taxpayer number (CPF) of the employee. |
> | `email` | String | E-mail address of the employee. |
> | `registration` | String | Employee registration number (matrícula). |
> | `birth_date` | Date | Date of birth. |
> | `gender` | String | Gender as registered in Sólides. |
> | `education` | String | Education level (e.g. medio\_completo). |
> | `course` | String | Course or degree of the employee. |
> | `ethnicity` | String | Ethnicity as registered in Sólides. |
> | `date_admission` | Date | Admission (hiring) date. |
> | `date_dismissal` | Date | Dismissal date, when the employee was dismissed. |
> | `reason_dismissal` | String | Reason for the dismissal. |
> | `work_shift` | String | Work shift (e.g. Diurno). |
> | `type_contract` | String | Type of employment contract (e.g. CLT). |
> | `active` | Boolean | Whether the employee is active (false once dismissed). |
> | `updated_at` | Datetime | When the employee record was last updated in Sólides (account local time). |
> | `department_id` | Integer | Identifier of the employee's department. |
> | `department_name` | String | Name of the employee's department. |
> | `position_id` | Integer | Identifier of the employee's position (cargo). |
> | `position_name` | String | Name of the employee's position (cargo). |
> | `unit_id` | Integer | Identifier of the employee's business unit, when the API sends it. |
> | `unit_name` | String | Name of the employee's business unit. |
> | `manager_id` | Integer | Identifier of the employee's direct manager (senior). |
> | `manager_name` | String | Name of the employee's direct manager (senior). |
> | `external_links` | String (JSON) | Links of this employee to records in external systems (vinculo\_externos). |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Employee details (Gestão)
>
> The full record of each employee: contacts, documents, dependents, vacations, benefits and occupational health. Read with one request per employee.
>
> Table: `gestao_employee_details` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the employee in Sólides Gestão. |
> | `name` | String | Full name of the employee. |
> | `email` | String | E-mail address of the employee. |
> | `registration` | String | Employee registration number (matrícula). |
> | `birth_date` | Date | Date of birth. |
> | `gender` | String | Gender as registered in Sólides. |
> | `marital_status` | String | Marital status. |
> | `salutation` | String | Salutation used with the employee. |
> | `nationality` | String | Nationality. |
> | `birthplace` | String | Place of birth. |
> | `education` | String | Education level. |
> | `course` | String | Course or degree of the employee. |
> | `ethnicity` | String | Ethnicity as registered in Sólides. |
> | `date_admission` | Date | Admission (hiring) date. |
> | `salary` | Number | Salary, parsed from the display value (e.g. R\$ 3.890,00 -> 3890.00). |
> | `date_dismissal` | Date | Dismissal date, when the employee was dismissed. |
> | `reason_dismissal` | String | Reason for the dismissal. |
> | `hierarchical_level` | String | Hierarchical level of the employee. |
> | `type_contract` | String | Type of employment contract (e.g. CLT). |
> | `date_contract` | Date | Contract start date. |
> | `duration_contract` | String | Contract duration as registered (e.g. 12 meses). |
> | `contract_expiration_date` | Date | Contract expiration date. |
> | `work_shift` | String | Work shift (e.g. Diurno). |
> | `active` | Boolean | Whether the employee is active, when the API sends it. |
> | `department_id` | Integer | Identifier of the employee's department. |
> | `department_name` | String | Name of the employee's department. |
> | `position_id` | Integer | Identifier of the employee's position (cargo). |
> | `position_name` | String | Name of the employee's position (cargo). |
> | `unit_id` | Integer | Identifier of the employee's business unit, when the API sends it. |
> | `unit_name` | String | Name of the employee's business unit. |
> | `manager_id` | Integer | Identifier of the employee's direct manager (senior), when the API sends it. |
> | `manager_name` | String | Name of the employee's direct manager (senior), when the API sends it. |
> | `contact_phone` | String | Phone number. |
> | `contact_cell_phone` | String | Mobile phone number. |
> | `contact_emergency_phone` | String | Emergency phone number. |
> | `contact_personal_email` | String | Personal e-mail address. |
> | `contact_corporate_email` | String | Corporate e-mail address. |
> | `documents` | String (JSON) | Personal documents: CPF, RG, voter registration, CTPS, PIS, bank account details. |
> | `dependents` | String (JSON) | Dependents of the employee (name, CPF, birth date, relationship). |
> | `vacations` | String (JSON) | Vacation periods (start, end, due date, days, allowance, whether taken). |
> | `benefits` | String (JSON) | Benefits granted (name, type, value, discount). |
> | `health_and_safety` | String (JSON) | Occupational health exams and procedures. |
> | `external_links` | String (JSON) | Links of this employee to records in external systems (vinculo\_externos). |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Positions (Gestão)
>
> Positions (cargos).
>
> Table: `gestao_positions` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the position (cargo). |
> | `name` | String | Name of the position. |
> | `minimum_wage` | Number | Minimum wage of the position. |
> | `brief_description` | String | Short description of the position. |
> | `activities` | String | Activities of the position. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Departments (Gestão)
>
> Departments.
>
> Table: `gestao_departments` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the department. |
> | `name` | String | Name of the department. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Absences (Gestão)
>
> Absence records (absenteísmo). Times are in the account's local time.
>
> Table: `gestao_absences` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the absence record. |
> | `absence_at` | Datetime | Date and time of the absence (account local time). |
> | `type` | String | Type of absence record (e.g. Saída). |
> | `location` | String | Location where the absence was recorded. |
> | `tangerino_id` | Integer | Identifier of the matching record in Sólides Ponto (Tangerino), when synced. |
> | `note` | String | Notes about the absence. |
> | `employee_id` | Integer | Identifier of the employee. |
> | `employee_name` | String | Name of the employee. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Occurrences (Gestão)
>
> Employee occurrences (ocorrências), such as late arrivals, praise or warnings.
>
> Table: `gestao_occurrences` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the occurrence. |
> | `incident_date` | Date | Date of the occurrence. |
> | `classification` | String | Classification of the occurrence (e.g. Positivo, Negativo). |
> | `type_incident` | String | Type of occurrence (e.g. Atraso). |
> | `comment` | String | Comment registered with the occurrence. |
> | `value` | Number | Value associated with the occurrence. |
> | `employee_id` | Integer | Identifier of the employee. |
> | `employee_name` | String | Name of the employee. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Dismissal reasons (Gestão)
>
> Dismissal reasons (motivos de demissão).
>
> Table: `gestao_dismissal_reasons` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the dismissal reason. |
> | `name` | String | Name of the dismissal reason. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Contract types (Gestão)
>
> Employment contract types.
>
> Table: `gestao_contract_types` · Primary key: `contract_type` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `contract_type` | String | Name of the employment contract type (e.g. CLT, PJ, Estágio). |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Passports (Gestão)
>
> Profiler passports (behavioral profile invitations) sent to people.
>
> Table: `gestao_passports` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the passport. |
> | `name` | String | Name of the person. |
> | `email` | String | E-mail address of the person. |
> | `cpf` | String | Brazilian individual taxpayer number (CPF). |
> | `gender` | String | Gender. |
> | `profile` | String | Behavioral profile code from the Profiler test (e.g. EC). |
> | `date_of_birth` | Date | Date of birth. |
> | `send_date` | Date | Date the passport was sent. |
> | `response_date` | Date | Date the passport was answered. |
> | `expiration_date` | Date | Expiration date of the passport. |
> | `state` | String | Status of the passport (e.g. respondido). |
> | `passport_url` | String | Link to the passport. |
> | `passport_link` | String (JSON) | Passport link details, when the API sends them as an object. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Profilers (Gestão)
>
> Profiler (behavioral profile) results of the employees.
>
> Table: `gestao_profilers` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Identifier of the employee in Sólides Gestão. |
> | `name` | String | Name of the employee. |
> | `email` | String | E-mail address of the employee. |
> | `gender` | String | Gender. |
> | `department_id` | Integer | Identifier of the employee's department. |
> | `position_id` | Integer | Identifier of the employee's position. |
> | `date_admission` | Date | Admission date. |
> | `date_dismissal` | Date | Dismissal date. |
> | `salary` | Number | Salary, parsed from the display value. |
> | `work_shift` | String | Work shift. |
> | `profile` | String | Behavioral profile code (e.g. EA). |
> | `test_date` | Date | Date of the Profiler test. |
> | `profiler` | String (JSON) | Full Profiler result. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Resumes (Gestão)
>
> Resumes (currículos) of the talent pool. The candidate photo is not synced.
>
> Table: `gestao_resumes` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the resume. |
> | `full_name` | String | Full name of the candidate. |
> | `main_email` | String | Main e-mail address. |
> | `secondary_email` | String | Secondary e-mail address. |
> | `cpf` | String | Brazilian individual taxpayer number (CPF). |
> | `gender` | String | Gender. |
> | `phone` | String | Phone number. |
> | `mobile` | String | Mobile phone number. |
> | `birth_date` | Date | Date of birth. |
> | `marital_status` | String | Marital status. |
> | `seniority` | String | Seniority (e.g. Trainee, Pleno). |
> | `skype_gtalk` | String | Skype or Google Talk handle. |
> | `linkedin` | String | LinkedIn profile URL. |
> | `facebook` | String | Facebook profile URL. |
> | `youtube` | String | YouTube channel URL. |
> | `introduction_video_url` | String | URL of the candidate's introduction video. |
> | `origin` | String | Where the resume came from (e.g. Banco de talentos). |
> | `photo_extension` | String | File extension of the candidate photo (the photo itself is not synced). |
> | `address` | String (JSON) | Address of the candidate. |
> | `languages` | String (JSON) | Languages and proficiency levels. |
> | `notes` | String (JSON) | Notes registered on the resume. |
> | `professional_experiences` | String (JSON) | Professional experiences. |
> | `academic_educations` | String (JSON) | Academic education. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Job openings (Gestão)
>
> Job openings (vagas).
>
> Table: `gestao_job_openings` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the job opening. |
> | `title` | String | Title of the job opening. |
> | `position` | String | Position (cargo) of the job opening. |
> | `hierarchical_level` | String | Hierarchical level. |
> | `type` | String | Type of job opening. |
> | `external_id` | String | Identifier of the job opening in an external system. |
> | `created_at` | Datetime | When the job opening was created (account local time). |
> | `final_date` | Date | Closing date of the job opening. |
> | `minimum_wage` | Number | Minimum salary offered. |
> | `maximum_wage` | Number | Maximum salary offered. |
> | `description` | String | Description of the job opening. |
> | `requirements` | String | Requirements of the job opening. |
> | `active` | Boolean | Whether the job opening is active. |
> | `number_positions` | Integer | Number of positions to fill. |
> | `number_positions_occupied` | Integer | Number of positions already filled. |
> | `disclosure_permissions` | String (JSON) | Where the job opening may be published. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Job opening candidates (Gestão)
>
> Candidates of each job opening and the selection phase they are in.
>
> Table: `gestao_job_opening_candidates` · Primary key: `job_opening_id`, `candidate_key` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `job_opening_id` | Integer | Identifier of the job opening. |
> | `candidate_key` | String | Identifier of the candidate within the job opening: the candidate id when sent, else CPF, else e-mail. |
> | `id` | Integer | Identifier of the candidate, when the API sends it. |
> | `full_name` | String | Full name of the candidate. |
> | `main_email` | String | Main e-mail address of the candidate. |
> | `cpf` | String | Brazilian individual taxpayer number (CPF) of the candidate. |
> | `phase_type` | String | Type of the selection phase the candidate is in. |
> | `phase_title` | String | Title of the selection phase the candidate is in. |
> | `effectived` | Boolean | Whether the candidate was hired. |
> | `effectived_in` | Date | Date the candidate was hired. |
> | `banned` | Boolean | Whether the candidate was banned. |
> | `banned_in` | Date | Date the candidate was banned. |
> | `disqualified` | Boolean | Whether the candidate was disqualified. |
> | `disqualified_in` | Date | Date the candidate was disqualified. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Evaluation cycles (Gestão)
>
> Performance evaluation cycles (Avaliação de Desempenho).
>
> Table: `gestao_evaluation_cycles` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the evaluation cycle. |
> | `name` | String | Name of the evaluation cycle. |
> | `description` | String | Description of the evaluation cycle. |
> | `started_at` | Date | Start date of the cycle. |
> | `finished_at` | Date | End date of the cycle. |
> | `status` | String | Status of the cycle (e.g. active). |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Evaluations (Gestão)
>
> Evaluations of each performance evaluation cycle, with grades per criterion.
>
> Table: `gestao_evaluations` · Primary key: `cycle_id`, `evaluator_id`, `rated_id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `cycle_id` | Integer | Identifier of the evaluation cycle. |
> | `evaluator_id` | Integer | Identifier of the evaluator. |
> | `evaluator_name` | String | Name of the evaluator. |
> | `evaluator_email` | String | E-mail address of the evaluator. |
> | `rated_id` | Integer | Identifier of the evaluated employee. |
> | `rated_name` | String | Name of the evaluated employee. |
> | `rated_document` | String | Document (CPF) of the evaluated employee. |
> | `rated_position` | String | Position of the evaluated employee. |
> | `rated_department` | String | Department of the evaluated employee. |
> | `rated_date` | Date | Date of the evaluation. |
> | `rated_profiler` | String | Behavioral profile code of the evaluated employee. |
> | `criterions` | String (JSON) | Criteria with grade, weight and comments. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Employees (Ponto)
>
> Every employee of Sólides Ponto, active and dismissed.
>
> Table: `ponto_employees` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the employee in Sólides Ponto. |
> | `external_id` | String | Identifier of the employee in your own system (externalId). |
> | `name` | String | Full name of the employee. |
> | `social_name` | String | Social name of the employee. |
> | `email` | String | E-mail address of the employee. |
> | `phone` | String | Phone number of the employee. |
> | `cpf` | String | Brazilian individual taxpayer number (CPF). |
> | `pis` | String | PIS number of the employee. |
> | `ctps` | String | Work permit (CTPS) number. |
> | `series` | String | Work permit (CTPS) series. |
> | `gender` | String | Gender (FEMININO, MASCULINO). |
> | `birth_date` | Datetime | Date of birth. |
> | `admission_date` | Datetime | Admission (hiring) date. |
> | `effective_date` | Datetime | Date from which time tracking applies to the employee. |
> | `resignation_date` | Datetime | Resignation (dismissal) date. |
> | `dismissal_reason` | String | Reason for the dismissal. |
> | `fired` | Boolean | Whether the employee was dismissed. |
> | `status` | Integer | Status code of the employee. |
> | `state` | String | State (UF) of the employee. |
> | `records_punch` | Boolean | Whether the employee must clock in and out. |
> | `double_bind_employee` | Boolean | Whether the employee has a second employment bond in the account. |
> | `can_view_workgroup` | Boolean | Whether the employee can see their workgroup. |
> | `time_bank_control_date` | Datetime | Date the hour bank control started for the employee. |
> | `update_date` | Datetime | When the employee record was last updated. |
> | `photo_url` | String | URL of the employee photo. |
> | `company_id` | Integer | Identifier of the employee's company (CNPJ). |
> | `company_name` | String | Name of the employee's company. |
> | `company_external_id` | String | External identifier of the employee's company. |
> | `company` | String (JSON) | Company of the employee. |
> | `job_role_id` | Integer | Identifier of the employee's job role (cargo). |
> | `job_role_description` | String | Name of the employee's job role (cargo). |
> | `job_role_external_id` | String | External identifier of the employee's job role. |
> | `job_role` | String (JSON) | Job role of the employee, with CBO and salary. |
> | `current_work_schedule_id` | Integer | Identifier of the employee's current work schedule (escala). |
> | `current_work_schedule_name` | String | Name of the employee's current work schedule. |
> | `current_work_schedule` | String (JSON) | Current work schedule of the employee, with its timetable. |
> | `current_workplace_id` | Integer | Identifier of the employee's current workplace. |
> | `current_workplace_name` | String | Name of the employee's current workplace. |
> | `current_workplace` | String (JSON) | Current workplace of the employee. |
> | `last_manager_id` | Integer | Identifier of the employee's latest manager record. |
> | `last_manager` | String (JSON) | Latest manager of the employee. |
> | `managers` | String (JSON) | Managers of the employee. |
> | `work_schedule_list` | String (JSON) | Work schedules of the employee. |
> | `workplace_list` | String (JSON) | Workplaces of the employee. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Job roles (Ponto)
>
> Job roles (cargos) with CBO and salary.
>
> Table: `ponto_job_roles` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the job role (cargo). |
> | `external_id` | String | Identifier of the job role in your own system. |
> | `description` | String | Name of the job role. |
> | `cbo` | String | Brazilian occupation code (CBO). |
> | `cbo_id` | Integer | Identifier of the CBO. |
> | `salary_value` | Number | Salary of the job role. |
> | `salary_description` | String | Description of the salary. |
> | `salary_type_id` | Integer | Identifier of the salary type. |
> | `alteration_date` | Datetime | When the job role was last changed. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Workplaces (Ponto)
>
> Workplaces (locais de trabalho / setores).
>
> Table: `ponto_workplaces` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the workplace (local de trabalho / setor). |
> | `external_id` | String | Identifier of the workplace in your own system. |
> | `name` | String | Name of the workplace. |
> | `active` | Boolean | Whether the workplace is active. |
> | `standard` | Boolean | Whether this is the account's default workplace. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Cost centers (Ponto)
>
> Cost centers.
>
> Table: `ponto_cost_centers` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the cost center. |
> | `external_id` | String | Identifier of the cost center in your own system. |
> | `code` | String | Code of the cost center. |
> | `name` | String | Name of the cost center. |
> | `description` | String | Description of the cost center. |
> | `active` | Boolean | Whether the cost center is active. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Adjustment reasons (Ponto)
>
> Adjustment reasons (motivos de ajuste), such as vacations, sick notes or days off.
>
> Table: `ponto_adjustment_reasons` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the adjustment reason (motivo de ajuste). |
> | `description` | String | Name of the adjustment reason (e.g. FÉRIAS, ABONO, ATESTADO). |
> | `active` | Boolean | Whether the reason is active. |
> | `allowance` | Boolean | Whether the absence is paid (abonada). |
> | `full_day` | Boolean | Whether the reason applies to whole days. |
> | `count_as_missing` | Boolean | Whether the days count as absences. |
> | `account_as_absenteeism` | Boolean | Whether the reason counts as absenteeism. |
> | `enabled_for_employees` | Boolean | Whether employees can request it. |
> | `enabled_for_managers` | Boolean | Whether managers can register it. |
> | `limit_record` | Boolean | Whether the reason has a registration limit. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Adjustments (Ponto)
>
> Adjustments registered for employees (vacations, sick notes, days off). Deleted adjustments are not listed.
>
> Table: `ponto_adjustments` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the adjustment. |
> | `adjustment_reason_id` | Integer | Identifier of the adjustment reason. |
> | `adjustment_reason_description` | String | Name of the adjustment reason. |
> | `employee_id` | Integer | Identifier of the employee. |
> | `employee_name` | String | Name of the employee. |
> | `employee_external_id` | String | External identifier of the employee. |
> | `start_date` | Datetime | Start of the adjustment period. |
> | `end_date` | Datetime | End of the adjustment period. |
> | `full_day` | Boolean | Whether the adjustment covers whole days. |
> | `status` | String | Status of the adjustment (APROVADO, PENDENTE, REPROVADO). |
> | `origin` | String | Where the adjustment was registered (e.g. Integração). |
> | `observation` | String | Notes on the adjustment. |
> | `user` | String | User who registered the adjustment. |
> | `photo_url` | String | URL of the photo attached to the adjustment. |
> | `attachment_url` | String | URL of the file attached to the adjustment (the file itself is not synced). |
> | `attachment_type` | String | Type of the attached file. |
> | `last_update` | Datetime | When the adjustment was last updated. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Managers (Ponto)
>
> Managers and the employees they manage.
>
> Table: `ponto_managers` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the manager record. |
> | `employee_id` | Integer | Identifier of the employee who is the manager. |
> | `employee_name` | String | Name of the manager. |
> | `employee_external_id` | String | External identifier of the manager. |
> | `managed_employee_ids` | String (JSON) | Identifiers of the employees this manager manages. |
> | `managed_employee_count` | Integer | Number of employees this manager manages. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Companies (Ponto)
>
> Companies (CNPJs) of the account.
>
> Table: `ponto_companies` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the company. |
> | `external_id` | String | Identifier of the company in your own system. |
> | `cnpj` | String | CNPJ of the company. |
> | `cnpj_mask` | String | CNPJ formatted for display. |
> | `description_name` | String | Name of the company. |
> | `fantasy_name` | String | Trade name of the company. |
> | `social_reason` | String | Legal name of the company. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Work schedules (Ponto)
>
> Work schedules (escalas) with their weekly timetable.
>
> Table: `ponto_work_schedules` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the work schedule (escala). |
> | `external_id` | String | Identifier of the work schedule in your own system. |
> | `name` | String | Name of the work schedule. |
> | `standard` | Boolean | Whether this is the account's default work schedule. |
> | `inactive` | Boolean | Whether the work schedule is inactive. |
> | `ignore_holiday` | Boolean | Whether holidays are ignored by this schedule. |
> | `pre_assigned_interval` | Boolean | Whether breaks are pre-assigned. |
> | `show_intraday_in_time_sheet` | Boolean | Whether intraday breaks show in the time sheet. |
> | `alteration_date` | Datetime | When the work schedule was last changed. |
> | `timetable` | String (JSON) | Shifts per weekday: day (1 = Sunday ... 7 = Saturday) and shift start/end in milliseconds from midnight. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Punch rules (Ponto)
>
> Punch rules (regras de ponto): tolerance, overtime and hour bank settings. Settings without a column are in extra\_fields.
>
> Table: `ponto_punch_rules` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the punch rule. |
> | `external_id` | String | Identifier of the punch rule in your own system. |
> | `description` | String | Name of the punch rule. |
> | `standard` | Boolean | Whether this is the account's default punch rule. |
> | `registration_date` | Datetime | When the punch rule was created. |
> | `closing_day_time_sheet` | Integer | Day of the month the time sheet closes. |
> | `tolerance_minutes` | Integer | Tolerance in minutes. |
> | `tolerance_type` | String | How the tolerance applies. |
> | `schedule_control_type` | String | Type of schedule control. |
> | `hours_balance_control_type` | String | Type of hour bank control. |
> | `overtime_scope` | String | Scope of overtime calculation. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Holiday calendars (Ponto)
>
> Holiday calendars, one row per calendar and year, from the Start Date year to next year.
>
> Table: `ponto_holiday_calendars` · Primary key: `id`, `year` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the holiday calendar. |
> | `year` | Integer | Year of the calendar. |
> | `name` | String | Name of the calendar. |
> | `description` | String | Description of the calendar. |
> | `holidays` | String (JSON) | Holidays of the calendar in that year. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Refund types (Ponto)
>
> Expense refund types.
>
> Table: `ponto_refund_types` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the refund type. |
> | `description_name` | String | Name of the refund type. |
> | `deleted` | Boolean | Whether the refund type was deleted. |
> | `employer_id` | Integer | Identifier of the account. |
> | `registration_date` | Datetime | When the refund type was created. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Refunds (Ponto)
>
> Expense refunds (reembolsos) dated since the Start Date.
>
> Table: `ponto_refunds` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the refund. |
> | `employee_id` | Integer | Identifier of the employee. |
> | `employer_id` | Integer | Identifier of the account. |
> | `name` | String | Name of the employee. |
> | `refund_type_id` | Integer | Identifier of the refund type. |
> | `description` | String | Description of the refund. |
> | `value` | Number | Amount of the refund. |
> | `currency_type` | String | Currency of the amount. |
> | `status` | String | Status of the refund. |
> | `refund_date` | Datetime | Date of the expense. |
> | `registration_date` | Datetime | When the refund was registered. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Devices (Ponto)
>
> Devices registered to clock in.
>
> Table: `ponto_devices` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the device. |
> | `device_id` | String | Device identifier reported by the device. |
> | `name` | String | Name of the device. |
> | `model` | String | Device model. |
> | `type` | String | Type of device. |
> | `app_name` | String | App used on the device. |
> | `browser` | String | Browser used on the device. |
> | `authorized` | Boolean | Whether the device is authorized to register punches. |
> | `excluded` | Boolean | Whether the device was removed. |
> | `last_modified_user` | String | User who last changed the device. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Employee functions (Ponto)
>
> Employee functions (funções).
>
> Table: `ponto_employee_functions` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the employee function. |
> | `external_id` | String | Identifier of the function in your own system. |
> | `description` | String | Name of the function. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Punch justifications (Ponto)
>
> Justifications available for manual punch edits.
>
> Table: `ponto_punch_justifications` · Primary key: `id` · Sync: Full table
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the justification. |
> | `description` | String | Text of the justification. |
> | `attachment_required` | Boolean | Whether an attachment is required. |
> | `observation_required` | Boolean | Whether an observation is required. |
> | `excluded` | Boolean | Whether the justification was removed. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Punches (Ponto)
>
> Punches (marcações): each row is a clock-in / clock-out pair, with approval status, edits, location and device.
>
> Table: `ponto_punches` · Primary key: `id` · Sync: Incremental
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | Integer | Unique identifier of the punch (a clock-in / clock-out pair). |
> | `punch_date` | Datetime | Date of the punch: clock-in time, else clock-out time, else the reference date; used as the incremental replication key. |
> | `date` | Datetime | Reference date of the punch. |
> | `date_in` | Datetime | Clock-in time. |
> | `date_out` | Datetime | Clock-out time (empty while the employee has not clocked out). |
> | `date_in_full` | Datetime | Full clock-in timestamp. |
> | `date_out_full` | Datetime | Full clock-out timestamp. |
> | `employee_id` | Integer | Identifier of the employee. |
> | `employee_name` | String | Name of the employee. |
> | `employee_email` | String | E-mail address of the employee. |
> | `employee_external_id` | String | External identifier of the employee. |
> | `status` | String | Approval status of the punch (APPROVED, PENDING, REPROVED). |
> | `pending_type` | String | Which side is pending approval (ENTRADA, SAIDA, AMBOS). |
> | `type` | Integer | Type code of the punch. |
> | `type_time_appointment` | Integer | Type code of the time appointment. |
> | `adjust` | Boolean | Whether the punch is an adjustment. |
> | `allowance` | Boolean | Whether the time is paid (abonado). |
> | `full_day_adjustment` | Boolean | Whether it is a whole-day adjustment. |
> | `adjustment_reason_id` | Integer | Identifier of the adjustment reason, for adjustments. |
> | `adjustment_reason_description` | String | Name of the adjustment reason, for adjustments. |
> | `justification_id` | Integer | Identifier of the justification of a manual edit. |
> | `justification_description` | String | Justification of a manual edit. |
> | `comments` | String | Comments on the punch. |
> | `edited` | Boolean | Whether the punch was edited. |
> | `edited_in` | Boolean | Whether the clock-in was edited. |
> | `edited_out` | Boolean | Whether the clock-out was edited. |
> | `editable` | Boolean | Whether the punch can still be edited. |
> | `excluded` | Boolean | Whether the punch was deleted. |
> | `last_modified_date` | Datetime | When the punch was last changed. |
> | `last_modified_user` | String | Who last changed the punch. |
> | `moderator_id` | Integer | Identifier of the user who moderated (approved or rejected) the punch. |
> | `workplace_id` | Integer | Identifier of the workplace of the punch. |
> | `workplace_name` | String | Name of the workplace of the punch. |
> | `work_schedule_id` | Integer | Identifier of the work schedule applied. |
> | `location_in_latitude` | Number | Latitude of the clock-in. |
> | `location_in_longitude` | Number | Longitude of the clock-in. |
> | `location_in_address` | String | Address of the clock-in. |
> | `location_out_latitude` | Number | Latitude of the clock-out. |
> | `location_out_longitude` | Number | Longitude of the clock-out. |
> | `location_out_address` | String | Address of the clock-out. |
> | `photo_in_url` | String | URL of the clock-in photo. |
> | `photo_out_url` | String | URL of the clock-out photo. |
> | `recognized_face_in` | Boolean | Whether the face was recognized at clock-in. |
> | `recognized_face_out` | Boolean | Whether the face was recognized at clock-out. |
> | `valid_fingerprint` | Boolean | Whether the fingerprint was valid. |
> | `nsr_in` | Integer | Sequential record number (NSR) of the clock-in, for time clocks. |
> | `nsr_out` | Integer | Sequential record number (NSR) of the clock-out, for time clocks. |
> | `device_id` | String | Identifier of the device that registered the punch. |
> | `platform` | String | Platform that registered the punch. |
> | `model` | String | Model of the device that registered the punch. |
> | `version` | String | App version that registered the punch. |
> | `identifier` | String | Identifier of the punch on the device. |
> | `hash_start` | String | Hash of the clock-in record (links to punch observations). |
> | `hash_end` | String | Hash of the clock-out record (links to punch observations). |
> | `location_in` | String (JSON) | Clock-in location details. |
> | `location_out` | String (JSON) | Clock-out location details. |
> | `adjustment_reason` | String (JSON) | Adjustment reason details. |
> | `justification` | String (JSON) | Justification details. |
> | `work_place` | String (JSON) | Workplace details. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

> [accordion] Punch observations (Ponto)
>
> History of observations made on punches.
>
> Table: `ponto_punch_observations` · Primary key: `id` · Sync: Incremental
>
> | Field | Type | Description |
> | :- | :- | :- |
> | `id` | String | Identifier of the observation, derived from its punch, date, type, origin, user and text (the API sends none). |
> | `date` | Datetime | When the observation was made; used as the incremental replication key. |
> | `reference_day` | Datetime | Day of the punch the observation refers to. |
> | `punch_hash_id` | String | Hash identifier of the punch. |
> | `type` | String | Who made the observation (SISTEMA, MANUAL). |
> | `origin` | String | Origin of the observation. |
> | `user_name` | String | User who made the observation. |
> | `observation` | String | Text of the observation. |
> | `extra_fields` | String (JSON) | Other fields the API returned that have no column, keyed by their original names. |

## Implementation Notes

### Permissions

* A Sólides Gestão token reads every Gestão table. Performance evaluation cycles and evaluations come from the newer Sólides evaluation API; if your token cannot read it, those two tables end as failed and the others sync normally.
* A Sólides Ponto token may not have access to every feature (for example refunds or the punches API, depending on your plan). A table the token cannot read ends as failed with a message in the sync log, and the other tables sync normally. Ask Sólides to enable the feature for your token, or deselect the table.

### API Limits & Performance

* Sólides does not publish request limits. The connector reads one request at a time and, when Sólides asks it to slow down, waits and tells you in the sync log.
* Every Sólides Gestão list is read page by page until an empty page, so each table costs one or two requests more than its size suggests.
* Employee details make one request per employee, and job opening candidates and evaluations one per job opening or cycle. Deselect them if you do not need them, to make syncs faster.
* Punches are read in 30-day windows. The first sync reads every punch since the Start Date; later syncs read only the days since the previous sync plus the Punch Lookback. Changes to punches older than the lookback are picked up by a full sync.
* Refunds and holiday calendars are read from the Start Date on every sync; a later Start Date makes these syncs shorter.

## Troubleshooting

| Error or symptom | What it means | What to do |
| :- | :- | :- |
| "This source has no Sólides API token" | Neither token is filled in. | Fill in the token of each Sólides product you use. |
| "Sólides Gestão rejected the Sólides Gestão API Token" | The token is wrong, or the API was turned off in Sólides Gestão. | Generate it again under Configurações > Ativar API de Integração and update the source. |
| "Sólides Ponto rejected the Sólides Ponto API Token" | The token is wrong, or the integration token was not enabled for the account. | Copy it again under Empregador > Integrações, or ask Sólides support to enable it, and update the source. |
| "The ... token of this source cannot read ..." | The token has no access to that feature or API. The table was skipped and the other tables were synced. | Ask Sólides to enable the feature for your token, or deselect the table. |
| "Sólides ... returned no ... records at all, although the previous sync read N" | Sólides returned an empty list for a table that had rows. The table was kept. | If the data really was removed, run a full sync of the source. Otherwise run the sync again later. |
| "Sólides ... is limiting how fast this sync may read" | The request limit was reached, possibly together with other integrations using the same token. | No action needed; the sync waits and continues. |
| "Sólides ... did not answer" or "kept failing" | Sólides did not answer, or answered with errors, after several attempts. | Usually temporary; the next sync tries again. |
| "... in a format this connector does not recognise", "did not return the page" or "kept sending the same page" | The Sólides API changed or answered in an unexpected way. The table was not changed. | Contact Nekt support. |

## Skills for agents

<Snippet file="agent-skills-intro.mdx" />

> [card] [Download Sólides skills file](https://docs.nekt.com/sources/solides.md)
>
> Sólides connector documentation as plain markdown, for use in AI agent contexts.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.