### Get Projects Source: https://apidoc.planfact.io/index Retrieves a list of projects with optional filtering and sorting. Requires an API key for authorization. ```php ``` -------------------------------- ### GET /api/v1/bizinfos/incomeoutcomehistorybyprojects Source: https://apidoc.planfact.io/index Fetches income and outcome history for businesses, filtered by various project-related parameters. ```APIDOC ## GET /api/v1/bizinfos/incomeoutcomehistorybyprojects ### Description Retrieves a history of income and outcome transactions, filtered by project-related parameters. ### Method GET ### Endpoint /api/v1/bizinfos/incomeoutcomehistorybyprojects ### Parameters #### Query Parameters - **filter.periodStartDate** (string) - Required - The end date of the period. - **filter.periodEndDate** (string) - Required - The start date of the period. - **filter.isCalculation** (boolean) - Optional - Use accrual date for calculations. - **filter.accountId** (Array of integers or null) - Optional - Account identifiers. - **filter.contrAgentId** (Array of integers or null) - Optional - Counterparty identifiers. - **filter.operationCategoryId** (Array of integers or null) - Optional - Operation category identifiers. - **filter.projectId** (Array of integers or null) - Optional - Project identifiers. - **filter.projectGroupId** (Array of integers or null) - Optional - Project group identifiers. - **filter.firstAdditionalOperationAttributeId** (Array of integers or null) - Optional - First additional operation attribute identifiers. - **filter.userCurrencyCode** (string) - Optional - Currency code model. Enum: "USD", "EUR", "GBP", "RUB", "BYN", "UAH", "KZT", "CNY", "TRY", "KGS", "AMD", "AED", "INR", "JPY", "MDL", "UZS", "PLN", "SGD", "BTC", "ETH", "BCH", "XRP", "LTC", "DASH", "XMR", "ETC", "ZEC", "STRAX", "DCR", "DOGE", "SC", "CAD", "THB", "HUF", "CZK", "HRK", "RON", "BDT", "AZN", "NOK", "CHF", "MVR", "LKR", "GEL", "ILS", "TJS", "TMT", "AUD", "NZD", "IDR", "TRX", "PHP", "PEN", "EGP", "VND", "USDT", "BGN", "CLP", "MXN", "COP", "BRL", "STBU", "RSD", "SEK", "HKD", "NPR", "GTQ", "BOB", "UYU", "ARS", "CRC", "KRW", "PAB", "SOL", "BNB", "USDC", "GMT", "GST", "PKOIN", "IRR", "DOP". - **filter.ignoreMove** (boolean) - Optional - Ignore movement operations. - **filter.ignoreAccrual** (boolean) - Optional - Ignore accrual operations. - **filter.sellingDealId** (Array of strings or null) - Optional - Selling deal identifiers. - **filter.purchaseDealId** (Array of strings or null) - Optional - Purchase deal identifiers. ### Request Example ```json { "filter": { "periodStartDate": "2023-01-01T00:00:00Z", "periodEndDate": "2023-12-31T23:59:59Z", "accountId": [1, 2], "projectId": [101, 102] } } ``` ### Response #### Success Response (200) - **isSuccess** (boolean) - Indicates if the operation was successful. - **errorMessage** (string) - Contains an error message if the operation failed. - **errorCode** (string) - An error code. - **errorCodeTitle** (string) - A title for the error code. - **errors** (Array of objects) - A list of specific errors. - **code** (string) - The code for a specific error. - **message** (string) - The message for a specific error. #### Response Example ```json { "isSuccess": true, "errorMessage": null, "errorCode": null, "errorCodeTitle": null, "errors": [] } ``` ### Error Handling - **401** Unauthorized - **403** Forbidden - **500** Internal Error ``` -------------------------------- ### Get Account Groups using PHP cURL Source: https://apidoc.planfact.io/index Example of how to fetch a list of account groups from the PlanFact API using PHP with cURL. Requires an API key for authorization. ```php ``` -------------------------------- ### Create Account Request Payload Source: https://apidoc.planfact.io/index Example JSON payload for creating a new account via the API. It includes fields for account details, company information, and currency. ```json { "title": "string", "longTitle": "string", "description": "string", "companyId": 0, "accountType": "Cash", "accountAcct": "string", "correspondentAcct": "string", "accountBik": "string", "accountBank": "string", "currencyCode": "USD", "active": true, "remainder": 0.1, "remainderDate": "2019-08-24T14:15:22Z", "externalId": "string", "accountGroupId": 0, "headerPosition": 0 } ``` -------------------------------- ### Get Invoice Documents (PHP cURL) Source: https://apidoc.planfact.io/index Fetches a list of invoice documents using a GET request with cURL in PHP. Requires an API key for authentication. Handles common API responses. ```php ``` -------------------------------- ### Get Income/Outcome History by Projects (PHP cURL) Source: https://apidoc.planfact.io/index This snippet demonstrates how to fetch income and outcome history data grouped by projects using PHP with cURL. It requires an API key for authentication and sends a GET request to the specified endpoint. ```php ) - Optional - IDs of operations. - **filter.operationDateStart** (string) - Optional - Start date for operations. - **filter.operationDateEnd** (string) - Optional - End date for operations. - **filter.calculationPeriodDateStart** (string) - Optional - Start date for accrual period. - **filter.calculationPeriodDateEnd** (string) - Optional - End date for accrual period. - **filter.accountId** (Array) - Optional - IDs of accounts. - **filter.excludedAccountId** (Array) - Optional - IDs of excluded accounts. - **filter.contrAgentId** (Array) - Optional - IDs of counterparties. - **filter.excludedContrAgentId** (Array) - Optional - IDs of excluded counterparties. - **filter.operationCategoryId** (Array) - Optional - IDs of operation categories. - **filter.excludedOperationCategoryId** (Array) - Optional - IDs of excluded operation categories. - **filter.operationType** (Array) - Optional - Types of operations (Income, Outcome, Move, Accrual, Shipment, Supply). - **filter.projectId** (Array) - Optional - IDs of projects. - **filter.excludedProjectId** (Array) - Optional - IDs of excluded projects. - **filter.firstAdditionalOperationAttributeId** (Array) - Optional - IDs of the first additional operation attribute. - **filter.withoutInvoiceId** (boolean) - Optional - Filter for operations without an invoice. - **filter.invoiceId** (Array) - Optional - IDs of invoices. - **filter.dealId** (Array) - Optional - IDs of deals (OR logic with WithoutDeal parameter). - **filter.excludedDealId** (Array) - Optional - IDs of excluded deals. - **filter.withoutDeal** (boolean) - Optional - Flag for operations not attached to deals (OR logic with DealId parameter). - **filter.withDealsOnly** (boolean) - Optional - Flag for operations attached to deals (OR logic with DealId parameter). - **filter.importLogId** (Array) - Optional - IDs of import logs. - **filter.excludedImportLogId** (Array) - Optional - IDs of excluded import logs. - **filter.importLogOnly** (boolean) - Optional - Flag to return only automatically created operations during import. - **filter.valueMin** (number) - Optional - Minimum total value of the operation. - **filter.valueMax** (number) - Optional - Maximum total value of the operation. - **filter.valueOnlyOfWholeOperation** (boolean) - Optional - Filter only by the value of the entire operation. - **filter.isCommitted** (boolean) - Optional - Flag indicating if the operation is committed. - **filter.isCalculationCommitted** (boolean) - Optional - Flag indicating if the operation is committed on the accrual date. - **filter.searchString** (string) - Optional - String for extended search across various fields (Comment, Counterparty Name, Account Name, Company Name, Category Name, Project Name, First Additional Operation Attribute Name, Deal Name). - **filter.invertSearch** (boolean) - Optional - Inverts the search logic for SearchString. - **filter.invoiceSearchString** (string) - Optional - String for extended search by invoice number. - **filter.moveComplexOperationType** (string) - Optional - Subtypes of complex operations (move, accrual): None, IncomePart, OutcomePart. - **filter.accrualComplexOperationType** (string) - Optional - Subtypes of complex operations (move, accrual): None, IncomePart, OutcomePart. - **filter.ignoreIncomeWithSellingDeal** (boolean) - Optional - Flag to ignore income operations linked to sales deals. - **filter.ignoreOutcomeWithPurchaseDeal** (boolean) - Optional - Flag to ignore outcome operations linked to purchase deals. - **filter.reportVariant** (Array) - Optional - Report variants the operation belongs to (Cashflow, IncomeExpense, AccountBalance). - **filter.isCalculation** (boolean) - Optional - Flag to use accrual date for calculations. - **filter.isOpuCash** (boolean) - Optional - Consider accrual operations only with active OPU cash method. ### Responses #### Success Response (200) OK #### Error Responses - **401** Unauthorized - **403** Forbidden - **500** Internal Error ``` -------------------------------- ### GET /api/v1/projects/groups Source: https://apidoc.planfact.io/index Retrieves a list of project groups with pagination support. Allows fetching groups with specified offset and limit. ```APIDOC ## GET /api/v1/projects/groups ### Description Retrieves a list of project groups with pagination support. Allows fetching groups with specified offset and limit. ### Method GET ### Endpoint https://api.planfact.io/api/v1/projects/groups ### Parameters #### Query Parameters - **paging.offset** (integer) - Смещение от начала списка. По умолчанию 0 - **paging.limit** (integer) - Размер фрейма (от 1 до 10000). По умолчанию 10000 ### Request Example ```php ``` ### Response #### Success Response (200) - **isSuccess** (boolean) - Indicates if the request was successful. - **errorMessage** (string) - Contains an error message if the request failed. - **errorCode** (string) - Error code if an error occurred. - **errorCodeTitle** (string) - Title for the error code. - **errors** (array) - A list of specific errors, each with a code and message. #### Response Example ```json { "isSuccess": true, "errorMessage": "string", "errorCode": "None", "errorCodeTitle": "None", "errors": [ { "code": "None", "message": "string" } ] } ``` ### Errors - **401** Unauthorized - **403** Forbidden - **500** Internal Error ``` -------------------------------- ### PHP cURL Request for Income/Outcome History by Operation Categories Source: https://apidoc.planfact.io/index This snippet demonstrates how to make a GET request to the /api/v1/bizinfos/incomeoutcomehistorybyoperationcategories endpoint using PHP's cURL library. It includes setting the URL, API key, request method, and headers. The response is then echoed. ```php | null) - Identifiers of operations. - **operationDateStart** (string | null) - Start date of the operation. - **operationDateEnd** (string | null) - End date of the operation. - **calculationPeriodDateStart** (string | null) - Start date of accrual. - **calculationPeriodDateEnd** (string | null) - End date of accrual. - **withoutContrAgentId** (boolean | null) - Filter without counteragents. - **contrAgentId** (Array | null) - Identifiers of counteragents. - **excludedContrAgentId** (Array | null) - Identifiers of excluded counteragents. - **accountId** (Array | null) - Identifiers of accounts. - **excludedAccountId** (Array | null) - Identifiers of excluded accounts. - **accountCompanyId** (Array | null) - Identifiers of companies. - **operationType** (Array | null) - Types of operations. Enum: "Income", "Outcome", "Move", "Accrual", "Shipment", "Supply". - **operationCategoryActivityType** (Array | null) - Activity types. Enum: "None", "Operating", "Finance", "Investment". - **operationCategoryId** (Array | null) - Identifiers of categories. - **excludedOperationCategoryId** (Array | null) - Identifiers of excluded categories. - **valueMin** (number | null) - Minimum total amount. - **valueMax** (number | null) - Maximum total amount. - **valueOnlyOfWholeOperation** (boolean) - Filter only by the amount of the whole operation. - **projectId** (Array | null) - Identifiers of projects. - **excludedProjectId** (Array | null) - Identifiers of excluded projects. - **withoutInvoiceId** (boolean) - Without an invoice. - **invoiceId** (Array | null) - Identifiers of invoices. - **dealId** (Array | null) - Identifiers of deals (filters by OR with the WithoutDeal parameter). - **excludedDealId** (Array | null) - Identifiers of excluded deals. - **withoutDeal** (boolean) - Indicates that the operation is not attached to Deals (filters by OR with the DealId parameter). - **withDealsOnly** (boolean) - Indicates that the operation is attached to deals (filters by OR with the DealId parameter). - **isCommitted** (boolean | null) - Indicates whether the operation is committed. - **isCalculationCommitted** (boolean | null) - Indicates whether the operation is confirmed on the accrual date. - **lastModificationDateStart** (string | null) - Start date of last modification. - **lastModificationDateEnd** (string | null) - End date of last modification. - **externalId** (Array | null) - External identifiers. - **importLogId** (Array | null) - Identifiers of import logs. - **excludedImportLogId** (Array | null) - Identifiers of excluded import logs. - **importLogOnly** (boolean) - Indicates whether to return only automatically created operations during import. - **boundMoveOperationId** (Array | null) - Identifiers of related operations. - **searchString** (string | null) - String for extended search by: Comment, Counteragent Name, Account Name, Company Name, Category Name, Deal Name. - **invertSearch** (boolean) - Invert search by SearchString. - **invoiceSearchString** (string | null) - String for extended search by invoice number. - **changesFromDate** (string | null) - Start date of changes. - **disableNavigationProperties** (boolean) - Disable loading of navigation properties. - **groupMoveOperations** (boolean) - Group move operations. - **moveComplexOperationType** (string) - Subtypes of complex operations (move, accrual). Enum: "None", "IncomePart", "OutcomePart". - **accrualComplexOperationType** (string) - Subtypes of complex operations (move, accrual). Enum: "None", "IncomePart", "OutcomePart". - **ignoreIncomeWithSellingDeal** (boolean) - Indicates to ignore income attached to Sales deals. - **ignoreOutcomeWithPurchaseDeal** (boolean) - Indicates to ignore outcome attached to Purchase deals. - **reportVariant** (Array | null) - Report variants that include the operation. Enum: "Cashflow", "IncomeExpense", "AccountBalance". ### Request Example (No request body for GET requests with query parameters) ### Response #### Success Response (200) - **operations** (Array) - An array of operation objects. - **id** (integer) - Unique identifier of the operation. - **operationDate** (string) - Date of the operation. - **operationType** (string) - Type of the operation. - **description** (string) - Description of the operation. - **amount** (number) - Amount of the operation. - **currency** (string) - Currency of the operation. - **contrAgent** (Object | null) - Counteragent details. - **id** (integer) - Counteragent ID. - **name** (string) - Counteragent name. - **account** (Object | null) - Account details. - **id** (integer) - Account ID. - **name** (string) - Account name. - **category** (Object | null) - Category details. - **id** (integer) - Category ID. - **name** (string) - Category name. #### Response Example { "operations": [ { "id": 123, "operationDate": "2023-10-27T10:00:00Z", "operationType": "Income", "description": "Payment received", "amount": 1500.50, "currency": "USD", "contrAgent": { "id": 45, "name": "Example Corp" }, "account": { "id": 101, "name": "Checking Account" }, "category": { "id": 5, "name": "Sales Revenue" } } ] } ``` -------------------------------- ### GET /api/v1/accounts/groups Source: https://apidoc.planfact.io/index Retrieves a list of account groups. Supports pagination to manage large result sets efficiently. ```APIDOC ## GET /api/v1/accounts/groups ### Description Retrieves a list of account groups. Supports pagination to manage large result sets efficiently. ### Method GET ### Endpoint /api/v1/accounts/groups ### Parameters #### Query Parameters - **paging.offset** (integer) - Смещение от начала списка. По умолчанию 0 - **paging.limit** (integer) - Размер фрейма (от 1 до 100). По умолчанию 10000 ### Response #### Success Response (200) OK #### Response Example ```json { "isSuccess": true, "errorMessage": "string", "errorCode": "None", "errorCodeTitle": "None", "errors": [ { "code": "None", "message": "string" } ] } ``` #### Error Responses - **401** Unauthorized - **403** Forbidden - **500** Internal Error ``` -------------------------------- ### GET /api/v1/invoice-documents Source: https://apidoc.planfact.io/index Retrieves a list of invoice documents based on specified query parameters. Supports filtering by date, account, contractor, deal, and other criteria, as well as pagination and sorting. ```APIDOC ## GET /api/v1/invoice-documents ### Description Retrieves a list of invoice documents. Allows filtering by various criteria such as billing date, payment date, account ID, contractor ID, deal ID, and more. Supports pagination and sorting. ### Method GET ### Endpoint https://api.planfact.io/api/v1/invoice-documents ### Parameters #### Query Parameters - **filter.billingDateStart** (string or null) - Optional - The start date for filtering by billing date. - **filter.billingDateEnd** (string or null) - Optional - The end date for filtering by billing date. - **filter.paymentDateStart** (string or null) - Optional - The start date for filtering by payment date. - **filter.paymentDateEnd** (string or null) - Optional - The end date for filtering by payment date. - **filter.accountId** (Array of integers or null) - Optional - IDs of the accounts to filter by. - **filter.contractorId** (Array of integers or null) - Optional - IDs of the contractors to filter by. - **filter.contrAgentGroupId** (Array of strings or null) - Optional - IDs of contractor groups to filter by. - **filter.entityStatusId** (Array of strings or null) - Optional - IDs of deal statuses to filter by. - **filter.valueMin** (number or null) - Optional - Minimum invoice amount. - **filter.valueMax** (number or null) - Optional - Maximum invoice amount. - **filter.dealId** (Array of strings or null) - Optional - IDs of deals to filter by. - **filter.invoiceDocumentId** (Array of strings or null) - Optional - IDs of invoice documents to filter by. - **filter.searchString** (string or null) - Optional - Search string for invoice number, deal name, or contractor name. - **paging.offset** (integer) - Optional - Offset from the start of the list. Defaults to 0. - **paging.limit** (integer) - Optional - Number of items per page. Defaults to 10000. - **sorting.field** (string) - Optional - Field to sort by. Enum: "BillingDate", "PaymentDate", "Account", "Contractor", "Sum", "InvoiceNumber", "SellingDeal", "EntityStatus". - **sorting.direction** (string) - Optional - Sort direction. Enum: "Asc", "Desc". ### Response #### Success Response (200) - **isSuccess** (boolean) - Indicates if the operation was successful. - **errorMessage** (string) - Error message if the operation failed. - **errorCode** (string) - Error code. - **errorCodeTitle** (string) - Title of the error code. - **errors** (Array of objects) - List of errors, each with a "code" and "message". #### Response Example ```json { "isSuccess": true, "errorMessage": "string", "errorCode": "None", "errorCodeTitle": "None", "errors": [ { "code": "None", "message": "string" } ] } ``` ``` -------------------------------- ### GET /websites/apidoc_planfact_io Source: https://apidoc.planfact.io/index Retrieves a list of operations filtered by the provided query parameters. Supports filtering by operation ID, dates, counterparties, accounts, categories, amounts, deals, and modification dates. ```APIDOC ## GET /websites/apidoc_planfact_io ### Description Retrieves a list of operations filtered by the provided query parameters. ### Method GET ### Endpoint /websites/apidoc_planfact_io ### Parameters #### Query Parameters - **filter.operationId** (array[integer] | null) - IDs of operations. - **filter.operationDateStart** (string | null) - Start date of the operation. - **filter.operationDateEnd** (string | null) - End date of the operation. - **filter.calculationPeriodDateStart** (string | null) - Start date of accrual. - **filter.calculationPeriodDateEnd** (string | null) - End date of accrual. - **filter.withoutContrAgentId** (boolean | null) - Without counterparty. - **filter.contrAgentId** (array[integer] | null) - IDs of counterparties. - **filter.excludedContrAgentId** (array[integer] | null) - IDs of excluded counterparties. - **filter.accountId** (array[integer] | null) - IDs of accounts. - **filter.excludedAccountId** (array[integer] | null) - IDs of excluded accounts. - **filter.accountCompanyId** (array[integer] | null) - IDs of company accounts. - **filter.operationType** (array[string] | null) - Types of operations. Enum: "Income", "Outcome", "Move", "Accrual", "Shipment", "Supply". - **filter.operationCategoryActivityType** (array[string] | null) - Types of activities. Enum: "None", "Operating", "Finance", "Investment". - **filter.operationCategoryId** (array[integer] | null) - IDs of categories. - **filter.excludedOperationCategoryId** (array[integer] | null) - IDs of excluded categories. - **filter.valueMin** (number | null) - Minimum total amount. - **filter.valueMax** (number | null) - Maximum total amount. - **filter.valueOnlyOfWholeOperation** (boolean) - Filter only by the total amount of the entire operation. - **filter.projectId** (array[integer] | null) - IDs of projects. - **filter.excludedProjectId** (array[integer] | null) - IDs of excluded projects. - **filter.withoutInvoiceId** (boolean) - Without invoice. - **filter.invoiceId** (array[string] | null) - IDs of invoices. - **filter.dealId** (array[string] | null) - IDs of deals (filters by OR with WithoutDeal parameter). - **filter.excludedDealId** (array[string] | null) - IDs of excluded deals. - **filter.withoutDeal** (boolean) - Flag indicating if the operation is not attached to Deals (filters by OR with DealId parameter). - **filter.withDealsOnly** (boolean) - Flag indicating if the operation is attached to deals (filters by OR with DealId parameter). - **filter.isCommitted** (boolean | null) - Flag indicating if the operation is committed. - **filter.isCalculationCommitted** (boolean | null) - Flag indicating if the operation is confirmed on the accrual date. - **filter.lastModificationDateStart** (string | null) - Start date of last modification. - **filter.lastModificationDateEnd** (string | null) - End date of last modification. - **filter.externalId** (array[string] | null) - External IDs. - **filter.importLogId** (array[integer] | null) - IDs of import logs. - **filter.excludedImportLogId** (array[integer] | null) - IDs of excluded import logs. - **filter.importLogOnly** (boolean) - Flag to return only automatically created operations during import. - **filter.boundMoveOperationId** (array[integer] | null) - IDs of related operations. - **filter.searchString** (string | null) - String for advanced search by: Comment, Counterparty Name, Account Name, Company Name, Category Name, Deal Name. - **filter.invertSearch** (boolean) - Invert search by SearchString. - **filter.invoiceSearchString** (string | null) - String for advanced search by invoice number. - **filter.changesFromDate** (string | null) - Start date of changes. - **filter.disableNavigationProperties** (boolean) - Disable loading of navigation properties. - **filter.groupMoveOperations** (boolean) - Group move operations. - **filter.moveComplexOperationType** (string | null) - Subtypes of complex operations (move, accrual). Enum: "None", "IncomePart", "OutcomePart". - **filter.accrualComplexOperationType** (string | null) - Subtypes of complex operations (move, accrual). Enum: "None", "IncomePart", "OutcomePart". - **filter.ignoreIncomeWithSellingDeal** (boolean) - Flag to ignore Income associated with Selling Deals. - **filter.ignoreOutcomeWithPurchaseDeal** (boolean) - Flag to ignore Outcome associated with Purchase Deals. ### Request Example ```json { "filter": { "operationId": [1, 2, 3], "operationDateStart": "2023-01-01T00:00:00Z", "operationDateEnd": "2023-12-31T23:59:59Z", "operationType": ["Income", "Outcome"], "valueMin": 100.0, "valueMax": 1000.0 } } ``` ### Response #### Success Response (200) - **operations** (array) - A list of operation objects matching the filter criteria. #### Response Example ```json { "operations": [ { "id": 1, "operationDate": "2023-05-15T10:00:00Z", "operationType": "Income", "value": 500.50, "counterpartyName": "Example Corp" } ] } ``` ``` -------------------------------- ### Create Income Operation Request Payload Source: https://apidoc.planfact.io/index Example JSON payload for creating a new income operation. It includes details like operation date, account, category, and optional project-specific amounts. This payload is used with the PUT request to update or create income records. ```json { "operationDate": "2019-08-24T14:15:22Z", "calculationDate": "2019-08-24T14:15:22Z", "isCalculationCommitted": true, "contrAgentId": 0, "accountId": 0, "operationCategoryId": 0, "comment": "string", "value": 0.1, "valueByProjects": { "property1": 0.1, "property2": 0.1 }, "isCommitted": true, "importLogId": 0, "items": [ { "calculationDate": "2019-08-24T14:15:22Z", "isCalculationCommitted": true, "contrAgentId": 0, "operationCategoryId": 0, "projectId": 0, "firstAdditionalOperationAttributeId": 0, "value": 0.1, "sellingDealId": "361b8e09-1eac-4e8c-9e06-5c60ff56435d", "purchaseDealId": "48c43882-5015-48a6-8cbb-5a62e84eb8ed" } ], "externalId": "string", "distributeCalculationDate": "2019-08-24T14:15:22Z", "distributeCalculationType": "Year" } ``` -------------------------------- ### GET /api/v1/projects Source: https://apidoc.planfact.io/index Retrieves a list of projects based on specified filter and sorting parameters. Supports filtering by title, date ranges, status, external IDs, and project group IDs. ```APIDOC ## GET /api/v1/projects ### Description Retrieves a list of projects based on specified filter and sorting parameters. Supports filtering by title, date ranges, status, external IDs, and project group IDs. ### Method GET ### Endpoint https://api.planfact.io/api/v1/projects ### Parameters #### Query Parameters - **filter.title** (string or null) - Краткое название - **filter.startDateTime** (string or null) - Начальная дата поиска - **filter.endDateTime** (string or null) - Конечная дата поиска - **filter.active** (boolean or null) - Статус - **filter.changesFromDate** (string or null) - Начальная дата изменений - **filter.externalId** (Array of strings or null) - Набор искомых внешних идентификаторов - **filter.titleOrProjectGroupTitle** (string or null) - Строка для поиска по названию проекта или группы проектов - **filter.projectGroupId** (Array of integers or null) - Идентификатор для поиска по группе проектов - **paging.offset** (integer) - Смещение от начала списка. По умолчанию 0 - **paging.limit** (integer) - Размер фрейма (от 1 до 10000). По умолчанию 10000 - **sorting.field** (string) - Поля сортировки проектов (Enum: "Title", "Active", "FirstOperationDate", "LastOperationDate", "ModifyDate") - **sorting.direction** (string) - Направление сортировки (Enum: "Asc", "Desc") ### Request Example ```php