Zuweisung einer Person zu einer Personengruppe per API funktioniert nicht



  • Hallo,

    in der Category "Person group memberships" ist dokumentiert, dass das Feld "Person group memberships" vom Typ Integer[] ist.

    Quelle: Administration - Interfaces - external data - JSON-RPC API - Categories and attributes - Category : Person group membership C__CATS__PERSON_ASSIGNED_GROUPS)

    Verwende ich im Aufruf ein Integer-Array, erscheint ein Datenbankfehler:

    Aufruf:
    curl -k -u "very:secret" -H "Content-Type: application/json" -X POST -d "{ "objid" : 29, "category" : "C__CATS__PERSON_ASSIGNED_GROUPS", "data" : { "connected_object" : [ 35 ], "contact" : 29 } }" http://localhost:4321/latest/category
    {
    "id": 0,
    "success": false,
    "message": "Internal error: An database error occurred that indicates that you provided an Id which does not exist. \n Please check all properties which are referencing an entry for validity: FOREIGN KEY (isys_person_2_group__isys_obj__id__group) REFERENCES isys_obj (isys_obj__id) ON DELETE CASCADE ON)"
    }

    Auszug aus dem API-Log:
    [2019-02-25 10:02:05 588697] DEBUG: Calculated model parameters based on method "cmdb.category.save"":
    [
    "category",
    {
    "object": 29,
    "category": "C__CATS__PERSON_ASSIGNED_GROUPS",
    "data": {
    "contact": 29,
    "connected_object": [
    35
    ]
    },
    "objID": 29,
    "apikey": "xmreky8lf404k0oo",
    "language": "en",
    "option": "save"
    }
    ]
    [2019-02-25 10:02:05 588812] DEBUG: Prepare to run request...
    [2019-02-25 10:02:05 590261] INFO: Method: save
    [2019-02-25 10:02:05 600389] ERROR: An exception occured while processing request: -32603 Internal error: An database error occurred that indicates that you provided an Id which does not exist.
    Please check all properties which are referencing an entry for validity: FOREIGN KEY (isys_person_2_group__isys_obj__id__group) REFERENCES isys_obj (i sys_obj__id) ON DELETE CASCADE ON)
    {
    "mysqlErrorCode": 1452,
    "mysqlErrorMessage": "Database error : Query error: 'INSERT INTO isys_person_2_group SET isys_person_2_group__isys_obj__id__person = '29', isys_person_2_group__isys_obj__id__group = 'Array';':\nCannot add or update a child row: a foreign key constraint fails (idoit_data.isys_person_2_group, CONSTRAINT isys_person_2_group_ibfk_2 FOREIGN KEY (isys_person_2_group__isys_obj__id__group) REFERENCES isys_obj (isys_obj__id) ON DELETE CASCADE ON)\n"
    }

    Verwende ich im Aufruf anstatt einem Integer-Arrays nur den Integer-Wert, erscheint in der Ausgabe ein Formatfehler:

    Aufruf:
    curl -k -u "very:secret" -H "Content-Type: application/json" -X POST -d "{ "objid" : 29, "category" : "C__CATS__PERSON_ASSIGNED_GROUPS", "data" : { "connected_object" : 35 , "contact" : 29 } }" http://localhost:4321/latest/category
    {
    "id": 0,
    "success": false,
    "message": "Internal error: There was an validation error"
    }

    Auszug aus dem API-Log:
    [2019-02-25 10:03:12 281845] DEBUG: Calculated model parameters based on method "cmdb.category.save"":
    [
    "category",
    {
    "object": 29,
    "category": "C__CATS__PERSON_ASSIGNED_GROUPS",
    "data": {
    "contact": 29,
    "connected_object": 35
    },
    "objID": 29,
    "apikey": "xmreky8lf404k0oo",
    "language": "en",
    "option": "save"
    }
    ]
    [2019-02-25 10:03:12 281962] DEBUG: Prepare to run request...
    [2019-02-25 10:03:12 283243] INFO: Method: save
    [2019-02-25 10:03:12 288691] ERROR: An exception occured while processing request: -32603 Internal error: There was an validation error
    {
    "connected_object": "(object_browser) Property has to be an array."
    }

    Object 29 ist die Person und Object 35 ist die Personengruppe.

    Wie muss ein korrekter Aufruf aussehen?
    Was ist bei der Verknüpfung von Personen, Personengrupppen und Organisationen zu beachten?

    Grüße
    Oliver



  • Das ist wohl das gleiche Problem wie hier:

    Also: connected_object ist vom Typ Integer und Validierung ist auszuschalten.



  • @OliverGnapp

    Danke für den Link.
    Die Lösung ( api.validation = 0 in den Expert Settings ) hat geholfen.


Log in to reply
 


Datenschutz / Privacy Policy