Development issueshttps://lab.civicrm.org/groups/dev/-/issues2022-04-22T15:53:45Zhttps://lab.civicrm.org/dev/core/-/issues/3284APIv4 Query Improvements2022-04-22T15:53:45Zjoshjosh@civicrm.orgAPIv4 Query ImprovementsThis project will expand the query language of APIv4 to increase functionality. Implementing this will enhance the capabilities of APIv4-based Smart Groups; without this their utility will be limited to simple queries. This is also a pre...This project will expand the query language of APIv4 to increase functionality. Implementing this will enhance the capabilities of APIv4-based Smart Groups; without this their utility will be limited to simple queries. This is also a prerequisite to the Search Builder UI project.
Tasks:
- Implement Having, Group By parameters.
- Enable use of SQL Functions like SUM().
- Implement explicit joins.
- Implement a way to add subquery expressions to an API call.
Related pull-requests:
* [#16947 - Support GROUP BY and aggregate functions](https://github.com/civicrm/civicrm-core/pull/16947) (merged)
* [#17047 - Api4 Explorer: Support SQL functions and HAVING clause ](https://github.com/civicrm/civicrm-core/pull/17047) (merged)colemanwcolemanw2020-06-30https://lab.civicrm.org/dev/core/-/issues/3242APIv4-Based Smart(er) Groups2022-04-22T15:52:29Zjoshjosh@civicrm.orgAPIv4-Based Smart(er) GroupsThis project will allow smart groups to be built from APIv4 criteria. The MVP would include a button in the API Explorer to save an api4 query as a smart group. This will also connect with the new Search Builder UI when that project is c...This project will allow smart groups to be built from APIv4 criteria. The MVP would include a button in the API Explorer to save an api4 query as a smart group. This will also connect with the new Search Builder UI when that project is complete.
Tasks:
- Allow swappable backend to smart groups
- Extend smart group schema to store api4 query parameters
- Add support for saving smart groups to API explorer UI.colemanwcolemanw2020-06-30https://lab.civicrm.org/dev/core/-/issues/2253Proposal: API4 should add `IS NULL` to `!=` queries2023-06-07T05:03:24ZJonGoldProposal: API4 should add `IS NULL` to `!=` queriesAndrew Hunt named this problem [in a blog post](https://civicrm.org/extensions/zombie-check) a while back - the database schema often allows `NULL` where a reasonable person would assume that is identical to `FALSE`. Most notably with `...Andrew Hunt named this problem [in a blog post](https://civicrm.org/extensions/zombie-check) a while back - the database schema often allows `NULL` where a reasonable person would assume that is identical to `FALSE`. Most notably with `is_deceased`, but there are lots of other places in the schema.
As we move Search Kit into mainstream use, we're going to run into problems where common sense and SQL disagree.
Consider the search kit results for "Prefix is Mr." and "Prefix is not Mr.". An end user would expect the sum of both of those to be everyone in the database. However, anyone without a prefix is excluded.
At first I thought the answer was an overhaul of the schema - but there's simply too many instances where `0` and `NULL` mean two different things.
I propose that when the "not equals" operator is used, we should add `OR <field> IS NULL`. I'm not sure whether an `OR` here breaks indexing but this seems like it's going to become a much more frequent complaint soon.https://lab.civicrm.org/dev/core/-/issues/2023Apiv4 Membership api2023-05-03T07:00:40ZeileenApiv4 Membership apiThis is missing at the moment due to complexity around the create action - which does some stuff with line items.
I expect quite a bit of code cleanup around membership functions before I get to the bottom of itThis is missing at the moment due to complexity around the create action - which does some stuff with line items.
I expect quite a bit of code cleanup around membership functions before I get to the bottom of ithttps://lab.civicrm.org/dev/core/-/issues/4240Cannot set Entityref fields via APIv4 Explorer - on multi-value data2023-06-08T18:04:44ZAndrew WestCannot set Entityref fields via APIv4 Explorer - on multi-value dataOverview
----------------------------------------
Adding EntityRef data in APIv4 explorer fails on multi-value data, because validation in CRM_Utils_Type doesn't support EntityRef.
Reproduction steps
-----------------------------------...Overview
----------------------------------------
Adding EntityRef data in APIv4 explorer fails on multi-value data, because validation in CRM_Utils_Type doesn't support EntityRef.
Reproduction steps
----------------------------------------
1. Create a multi-value data set for all Individuals
2. Add an EntityRef field linked to Activities
3. Try to set it via the APIv4 Explorer
As of this second this is failing on the WP Demo site:
https://wpmaster.demo.civicrm.org/wp-admin/admin.php?page=CiviCRM&q=civicrm%2Fapi4#/explorer/Custom_Test_Multi/create?values=%5B%5B%22entity_id%22,%2256%22%5D,%5B%22Test_EntityRef_on_Multi%22,%22459%22%5D%5D
![image](/uploads/ae4edfeeabbdbf601725271349774929/image.png)
Current behaviour
----------------------------------------
There's one error in CRM_Utils_Type::escape() and two in CRM_Utils_Type::validate()
**CRM_Utils_Type::escape**
Just needs EntityReference added to the switch statement (I think)
**CRM_Utils_Type::validate**
Needs EntityReference added to $possibleTypes (I think)
Needs a case added for EntityReference. This works as a temporary workaround:
```
case 'EntityReference':
// null is valid
if (strlen(trim($data)) == 0) {
return trim($data);
}
return (int) $data;
```
But presumably it needs some kind of validation like happens in ContactReference:
```
case 'ContactReference':
// null is valid
if (strlen(trim($data)) == 0) {
return trim($data);
}
if (CRM_Utils_Rule::validContact($data)) {
return (int) $data;
}
break;
```
Environment information
----------------------------------------
Replicated on 5.60 and 5.62alpha15.61.0https://lab.civicrm.org/dev/core/-/issues/4202EntityRef custom fields don't work with API4 or SearchKit2024-01-12T15:49:42ZJonGoldEntityRef custom fields don't work with API4 or SearchKitOverview
----------------------------------------
EntityRef custom fields don't return values when selected in API4. Even after I fixed that, they're not part of the `CRM.crmSearchAdmin.joins` so they're not selectable in SearchKit.
Re...Overview
----------------------------------------
EntityRef custom fields don't return values when selected in API4. Even after I fixed that, they're not part of the `CRM.crmSearchAdmin.joins` so they're not selectable in SearchKit.
Reproduction steps
----------------------------------------
API4 issue:
* Create an EntityRef custom field.
* Go to API4 Explorer.
* Try to use them comparably to how one might use a core EntityRef field (e.g. Contact `employer_id`).
Selecting the field directly returns `NULL`. You can't join on EntityRef.
I have a PR that fixes the above, but after that, the joins still don't appear in SK. I've tracked the issue down to `\Civi\Search\Admin::getJoins()` but this exceeds my API4 knowledge limit.
Technically I'd consider this part of #3721 but since that's closed we'll track this separately.
@herbdool Once this is done, #3949 could be solved by using an EntityRef custom field instead of ContactRef.https://lab.civicrm.org/dev/core/-/issues/4059CiviEvent: API3/4 deletes event is_template flag on event update2023-01-16T15:22:16ZBjörn EndresCiviEvent: API3/4 deletes event is_template flag on event updateOverview
----------------------------------------
The CiviCRM API resets(!) the ``is_template`` flag on an event entity when manipulating unrelated attributes. Tested on APIv3 and APIv4.
Reproduction steps
------------------------------...Overview
----------------------------------------
The CiviCRM API resets(!) the ``is_template`` flag on an event entity when manipulating unrelated attributes. Tested on APIv3 and APIv4.
Reproduction steps
----------------------------------------
1. Create a new event template (not a message template)
1. Go to the API explorer (3 or 4)
1. Run ``Event.get`` with the ID of the given template. Observe that the ``is_template`` parameter is set to 1/true.
1. Run ``Event.create/update`` with parameters:
* ``id`` = ID of the given template
* ``title`` = "just want to trigger a change"
1. Run ``Event.get`` with the ID of the given template.
Current behaviour
----------------------------------------
Observe that the ``is_template`` parameter is set to 0/false - **the flag has been deleted!**
Expected behaviour
----------------------------------------
API call should leave the ``is_template`` parameter alone, i.e. the return value of then ``is_template`` parameter should be 1/true
Environment information
----------------------------------------
Tested on current [DMASTER](https://dmaster.demo.civicrm.org) running 5.59.alpha1, but has definitely been around for longer.
Comments
----------------------------------------
A unit test to cover that should be pretty straightforward with these instructions.5.59.0https://lab.civicrm.org/dev/core/-/issues/3942Fatal Error in PHP 8.0 when passing an empty array to a custom checkboxes/sel...2023-01-29T06:17:46ZherbdoolFatal Error in PHP 8.0 when passing an empty array to a custom checkboxes/select field.When passing an empty array to a custom Checkboxes (or Select) field, under PHP 8.0 it gives a fatal error: `TypeError: mysqli_real_escape_string(): Argument #2 ($string) must be of type string, array given in mysqli_real_escape_string()...When passing an empty array to a custom Checkboxes (or Select) field, under PHP 8.0 it gives a fatal error: `TypeError: mysqli_real_escape_string(): Argument #2 ($string) must be of type string, array given in mysqli_real_escape_string() (line 880 of /app/vendor/pear/db/DB/mysqli.php).` There is no error in PHP 7.4.
Using CiviCRM 5.54.0.
For example:
```
$results = Address::update()
->addValue(Address_status.Fruit, [])
->addWhere('id', '=', 1)
->execture();
```
Where Address_status is the custom field group and Fruit is the checkboxes or select field with options.
I am assuming that either the error should be caught earlier by API4 or DAO and warn that empty arrays cannot be passed to this field type, or that it doesn't complain at all and converts the empty array to a serialized string, much like it does with populated arrays.https://lab.civicrm.org/dev/core/-/issues/3659APIv4 Contact.get - include email, phone, address?2023-01-04T23:44:25Zaydunsaidan.saunders@squiffle.ukAPIv4 Contact.get - include email, phone, address?# Suggestion/Discussion
Many times when creating a SearchKit search, I want a contact's email and phone. That requires joining on the email and phone entities.
1. that's dull and repetitive for such a common requirement
1. for end-user...# Suggestion/Discussion
Many times when creating a SearchKit search, I want a contact's email and phone. That requires joining on the email and phone entities.
1. that's dull and repetitive for such a common requirement
1. for end-users or newcomers to SK, they either don't find how to do it, or they do and it looks excessively complicated and off-putting for something so basic
In APIv3, `Contact.get` includes the primary email, phone and address.
Without polluting APIv4 with lots of special cases, I wonder whether it is worth making an exception for email and phone and returning those fields in APIv4 `Contact.get` Maybe also the address fields, but for me, that comes up less frequently.https://lab.civicrm.org/dev/core/-/issues/3183Event template scheduled reminders lost when creating a new event using API42024-01-18T05:18:05ZufundoEvent template scheduled reminders lost when creating a new event using API4Overview
----------------------------------------
Scheduled reminders from an event template are lost when creating a new event using API4 with the `template id` parameter.
The scheduled reminders are copied, but don't get properly atta...Overview
----------------------------------------
Scheduled reminders from an event template are lost when creating a new event using API4 with the `template id` parameter.
The scheduled reminders are copied, but don't get properly attached to the event.
It seems to work fine if creating an event from template using the admin screens.
Reproduction steps
----------------------------------------
1. Create an event template with one or more scheduled reminders configured on it
1. Check the id for your new template
1. Use API4 to create a new event from the template, using the `template_id` parameter ![image](/uploads/d173de6a8c9cb611fcd4280e99a31727/image.png)
1. Check your new event - it won't have any scheduled reminders
Current behaviour
----------------------------------------
The reminders for the new event are half-created — they show in Administer >> Communications >> Schedule Reminders but but they aren't attached to anything. The issue seems to be they get copied as Event Template reminders and don't get updated to be Event reminders.
![image](/uploads/8d578ef97d71c8be6a6f76cd7d5ef09e/image.png)
(Top row is the original reminder on the template. Second is the 'orphaned' reminder. Third is the successfully copied reminder on event created from template through the web UI)
Expected behaviour
----------------------------------------
The reminders should be attached to the new event.
Environment information
----------------------------------------
* __CiviCRM:__ _dmaster on buildkit 5.50.alpha1_ (and previous versions since a while)
* __PHP:__ _7.4_
* __CMS:__ _Drupal_
Comments
----------------------------------------
I have a patch that seems to resolve though feels a bit hacky. The event schedule reminder code is a bit sticky...https://lab.civicrm.org/dev/core/-/issues/2682APIv4 - entityBatch linkage2021-08-30T02:21:22ZeileenAPIv4 - entityBatch linkageThis comes from discussion here https://github.com/civicrm/civicrm-core/pull/20505
The issue is that to make it usable in search kit we need a pseudoconstant for what is allowed for 'entity_table'
In core I think this is ONLY civicrm_f...This comes from discussion here https://github.com/civicrm/civicrm-core/pull/20505
The issue is that to make it usable in search kit we need a pseudoconstant for what is allowed for 'entity_table'
In core I think this is ONLY civicrm_financial_trxn. However, gift-aid also added civicrm_contribution
My best idea at the moment is to use an option group (and create a PR against giftaid to add it + use release notes & dev-digest)https://lab.civicrm.org/dev/core/-/issues/1648Determine how to provide parity for apiv4 vs v3 Contact.delete2023-03-26T05:03:15ZeileenDetermine how to provide parity for apiv4 vs v3 Contact.deleteThere are 4 types of Contact.delete in CiviCRM
1) soft-delete - updates is_deleted to true, deletes uf match entries
2) hard delete, - deletes contact record, aborts if related entities exist that block delete, cleans up various entries...There are 4 types of Contact.delete in CiviCRM
1) soft-delete - updates is_deleted to true, deletes uf match entries
2) hard delete, - deletes contact record, aborts if related entities exist that block delete, cleans up various entries that an FK delete will not do
3) contact.update to is_deleted = 1 does 1 without the cleanup
4) contact.delete - does 2 without the cleanup or protection
Currently apiv3 does 1 or 2 depending on the site configuration. It can be 'pushed' to do 2 but will still only do that dependent on user permissions if check_permissions is on.
apiv4 does 3 and 4
I know @colemanw is reluctant to replicate v3 behaviour but I don't think current v4 is an acceptable alternative. Nor do I think the calling function should need to check site delete confighttps://lab.civicrm.org/dev/core/-/issues/1428APIv4 Activity::update() causes target contacts and assignees to be deleted2020-10-09T20:47:08ZPatrick Figelpfigel@greenpeace.orgAPIv4 Activity::update() causes target contacts and assignees to be deletedOverview
----------------------------------------
In APIv4, `\Civi\Api4\Activity::update()` causes target contacts and assignees to be deleted from `ActivityContact`.
Reproduction steps (includes links to APIv4 Explorer on dmaster)
----...Overview
----------------------------------------
In APIv4, `\Civi\Api4\Activity::update()` causes target contacts and assignees to be deleted from `ActivityContact`.
Reproduction steps (includes links to APIv4 Explorer on dmaster)
----------------------------------------
1. [Create a new activity and assign it to a target contact](https://dmaster.demo.civicrm.org/civicrm/api4#/explorer/Activity/create?values=%5B%5B%22subject%22,%22foo321%22%5D,%5B%22activity_type_id%22,%221%22%5D,%5B%22source_contact_id%22,%2270%22%5D%5D&chain=%5B%5B%22name_me_0%22,%5B%22ActivityContact%22,%22create%22,%22%7Bvalues:%20%7Bactivity_id:%20$id,%20contact_id:%2010,%20record_type_id:%203%7D%7D%22,%220%22%5D%5D%5D)
2. [Observe that the activity has a target contact](https://dmaster.demo.civicrm.org/civicrm/api4#/explorer/ActivityContact/get?where=%5B%5B%22activity.subject%22,%22%3D%22,%22foo321%22%5D%5D)
3. [Update an unrelated activity field using `\Civi\Api4\Activity::update()`](https://dmaster.demo.civicrm.org/civicrm/api4#/explorer/Activity/update?where=%5B%5B%22subject%22,%22%3D%22,%22foo321%22%5D%5D&values=%5B%5B%22duration%22,%222%22%5D%5D)
4. [Observe that the target contact was deleted](https://dmaster.demo.civicrm.org/civicrm/api4#/explorer/ActivityContact/get?where=%5B%5B%22activity.subject%22,%22%3D%22,%22foo321%22%5D%5D)
Current behaviour
----------------------------------------
Target contact and assignees are deleted from `ActivityContact`. Source contact is preserved.
Expected behaviour
----------------------------------------
Target contacts and assignees should be preserved.
Environment information
----------------------------------------
<!-- Some of the items below may not be relevant for every bug - if in doubt please include more information than you think is neccessary. -->
* __CiviCRM:__ _Master_
* __PHP:__ _7.2_
Comments
----------------------------------------
Not sure if this ever worked, we have no existing code that calls this.https://lab.civicrm.org/dev/core/-/issues/4562APIv4: Implicit joins for email_primary, etc cause error2023-09-12T03:35:01ZlarsssandergreenAPIv4: Implicit joins for email_primary, etc cause errorIn the APIv4 Explorer, you can select:
1) Contribution get
2) Select contact_id.email_primary
[Like this.](https://dmaster.demo.civicrm.org/civicrm/api4#/explorer/Contribution/get?limit=0&select=%5B%22contact_id.email_primary%22%5D)
Re...In the APIv4 Explorer, you can select:
1) Contribution get
2) Select contact_id.email_primary
[Like this.](https://dmaster.demo.civicrm.org/civicrm/api4#/explorer/Contribution/get?limit=0&select=%5B%22contact_id.email_primary%22%5D)
Result is an error:
```
TypeError: Civi\\Api4\\Service\\Schema\\Joiner::getExtraJoinSql(): Return value must be of type string, null returned in Civi\\Api4\\Service\\Schema\\Joiner::getExtraJoinSql() (line 82 of /srv/buildkit/build/dmaster/web/sites/all/modules/civicrm/Civi/Api4/Service/Schema/Joiner.php).
```
Same results with email_billing, phone_billing and phone_primary. It does work if you get contacts, just not with the join. Don't believe this is a recent regression.https://lab.civicrm.org/dev/core/-/issues/4417API 4 Explorer output is inconsistent for serialized fields in JSON view2023-07-07T15:10:50ZlarsssandergreenAPI 4 Explorer output is inconsistent for serialized fields in JSON viewEdit: See discussion below.
~~If we use API 4 to save JSON values for a JSON field, the JSON gets mucked up because the API expects an array. I suppose this works in a sense, but in another sense it is weird that you can't, for example,...Edit: See discussion below.
~~If we use API 4 to save JSON values for a JSON field, the JSON gets mucked up because the API expects an array. I suppose this works in a sense, but in another sense it is weird that you can't, for example, copy an entity by getting it from API 4 and then creating with the same values (because the API gives you JSON, but won't accept it).~~
~~If this is the expected behaviour, at least I can document it.~~
----
~~If we pass in `{"something": "thing"}`, what gets saved in the database is `[{"something": "thing"}]`.~~
~~If we use a save action and pass in a `records` array with a JSON value, what gets saved in the database is `["{\"something\": \"thing\"}"]`.~~https://lab.civicrm.org/dev/core/-/issues/4330API4 error "Column in order clause is ambiguous"2023-06-07T00:21:50ZsamuelsovAPI4 error "Column in order clause is ambiguous"I have a specific query that used to work but seems to be broken since around CiviCRM 5.60.
I was able to reproduced in master.
This is the api4 call:
```php
$addresses = \Civi\Api4\Address::get()
->addJoin('Contact AS contact', 'LEF...I have a specific query that used to work but seems to be broken since around CiviCRM 5.60.
I was able to reproduced in master.
This is the api4 call:
```php
$addresses = \Civi\Api4\Address::get()
->addJoin('Contact AS contact', 'LEFT', ['master_id.contact_id', '=', 'contact.id'])
->addOrderBy('location_type_id:label', 'ASC')
->setLimit(25)
->execute();
```
`location_type_id` is in Address and as it it doing a join for another address to get the master_id address, it is ambiguous.
Looking at the generated query, we can see that the table prefix is not added in the order by :
```sql
SELECT `a`.`id` AS `id`, `contact`.`display_name` AS `contact.display_name`
FROM civicrm_address a
LEFT JOIN `civicrm_address` `master_id_1` ON `a`.`master_id` = `master_id_1`.`id`
LEFT JOIN `civicrm_contact` `contact` ON `master_id_1`.`contact_id` = `contact`.`id`
ORDER BY FIELD(`location_type_id`,'16','14','1','19','3','15','4','12','2','17','18','20','21','5','11') ASC;
```
Giving the error :
```
ERROR 1052 (23000): Column 'location_type_id' in order clause is ambiguous
```https://lab.civicrm.org/dev/core/-/issues/4307SearchKit "If/Else" field transformation does not behave as described2023-05-25T02:13:22ZnoahSearchKit "If/Else" field transformation does not behave as describedFirst of all, [the description for the "If/Else" field transformation](https://github.com/civicrm/civicrm-core/blob/9e9feedffa6146ffb211f5a47de305b9bf591d22/Civi/Api4/Query/SqlFunctionIF.php#L54) is backwards. It says:
"If the field is ...First of all, [the description for the "If/Else" field transformation](https://github.com/civicrm/civicrm-core/blob/9e9feedffa6146ffb211f5a47de305b9bf591d22/Civi/Api4/Query/SqlFunctionIF.php#L54) is backwards. It says:
"If the field is empty, the first value, otherwise the second."
The order of "first" and "second" in that sentence are reversed. And, since we're just talking about the MySQL IF construct here, a closer description would be (according to the [MYSQL docs regarding the if/else construct](https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_if)):
"If the field is nonzero and non-NULL, the first value, otherwise the second."
But even that isn't totally accurate. It leaves out the fact that the field (the comparison value) will be cast to an integer for comparison. In MySQL, strings starting with any character except 1-9 will be cast to 0 (false).
````
+---------------------------+
| IF(true, 'true', 'false') |
+---------------------------+
| true |
+---------------------------+
+----------------------------+
| IF(false, 'true', 'false') |
+----------------------------+
| false |
+----------------------------+
+------------------------+
| IF(1, 'true', 'false') |
+------------------------+
| true |
+------------------------+
+------------------------+
| IF(0, 'true', 'false') |
+------------------------+
| false |
+------------------------+
+---------------------------+
| IF(null, 'true', 'false') |
+---------------------------+
| false |
+---------------------------+
+---------------------------------------+
| IF("5_golden_rings", 'true', 'false') |
+---------------------------------------+
| true |
+---------------------------------------+
+--------------------------------------+
| IF("my_1_and_only", 'true', 'false') |
+--------------------------------------+
| false |
+--------------------------------------+
````
So an accurate description of this field transformation is:
"If the field is boolean TRUE, any number except 0, or a string not starting with the digits 1-9, the first value, otherwise the second."https://lab.civicrm.org/dev/core/-/issues/4184Import search authorization issues2023-03-18T05:09:28ZeileenImport search authorization issuesI've hit an issue where the api validation fails to the point of crashing the SearchKit main screen when `UserJob` records exist that the user does not have access to
To replicate log in as admin, enable Civi-Import & run an import (pre...I've hit an issue where the api validation fails to the point of crashing the SearchKit main screen when `UserJob` records exist that the user does not have access to
To replicate log in as admin, enable Civi-Import & run an import (preferably testing one of my open import PRs in process :-). Then log out, and log in as demo user & try to load the SearchKit page
The issue is some of the imports are unavailable & the chained call here throws an Authorization error that is not caught.
https://github.com/civicrm/civicrm-core/blob/f7594387fc2134c3cd0f6ae093843bbfe5e58847/ext/search_kit/Civi/Search/Admin.php#L128-L134
@colemanw am looking for help on this & also ideally on tweaking this permission check
https://github.com/civicrm/civicrm-core/blob/d26dffa0597aecc903558dd8aaca5cfb392d88dd/CRM/Core/BAO/UserJob.php#L99-L101
to require EITHER a current user match OR is_template = 1
The alternative would be to blank `created_id` for templates - but it still feels like useful info. The template gitlab is https://lab.civicrm.org/dev/core/-/issues/4130
UPDATE
dang -hitting the same on explorer
![image](/uploads/fb6cf98cbd265245e4f1da8953ff2493/image.png)5.61.0https://lab.civicrm.org/dev/core/-/issues/4178Import Contribution creates API4 errors for Contribution Note2023-03-17T22:00:13ZStoobImport Contribution creates API4 errors for Contribution NoteTo reproduce:
- include a Note column in your CSV
- in your test file some rows should have text in the Note column and some should not
- map this column to 'Contribution Note' and use Import Contributions feature
In my import all rows...To reproduce:
- include a Note column in your CSV
- in your test file some rows should have text in the Note column and some should not
- map this column to 'Contribution Note' and use Import Contributions feature
In my import all rows generated this error, there was over 1200 error rows, whether or not the Note column had any text at all (seen attached)
![errors-note-api4](/uploads/94b222c546898267802af5c0f5cbbf7d/errors-note-api4.png)
**Problem: None of the notes imported**
@bgm5.59.2https://lab.civicrm.org/dev/core/-/issues/4175APiv4 explorer - can't enter `contribution.contribution_recur_id`2023-03-13T21:57:14ZeileenAPiv4 explorer - can't enter `contribution.contribution_recur_id`It tries & fails to auto-fill & then won't let you put in a number
![image](/uploads/81cdcf15906037b7a993f0337d4a0fc6/image.png)
@colemanw fyiIt tries & fails to auto-fill & then won't let you put in a number
![image](/uploads/81cdcf15906037b7a993f0337d4a0fc6/image.png)
@colemanw fyi5.61.0