Tags für Firmen setzen :(

64 views
Skip to first unread message

Walter Speth

unread,
Dec 1, 2021, 5:18:04 AM12/1/21
to 42he API
Hallo,
Der Betreff sagt, was ich erreichen will. Allerdings gibt es nur 400, 404 oder 500 als Status.
Ich habe beim Studium des Web verstanden: es muss ein POST request sein.
Die URL ist nach meiner Erkenntnis so aufzubauen (007 als Firmen-ID)
payload des Post habe ich erfolglos variiert:
  1. {"tag":{"name": "mytag"}}
  2. {"tag": "mytag"}  }
  3. mytag
hierbei mag mir auch die genutzte Funktion einen Streich spielen: es ist ein "requests.post" in Python. Die Dokumentation redet von Übergabe eines JSON-Strings oder eines Python-Dictionaries.

Im Beispiel 3: ERR 404 {"error":"param-missing","description":"param is missing or the value is empty: tag"}

weiss jemand Rat?


Axel von Leitner

unread,
Dec 1, 2021, 6:02:53 AM12/1/21
to 42he API
Hey Walter, 

ich habe einen deiner Requests auch aus dem Errortracker gefischt. Die Struktur des Requests ist nicht ganz richtig. 

Versuch es bitte mit dem folgenden Payload: 

{"company"=>{"name"=>"Best Company", "tags_attributes"=>[{"name"=>"first tag"}, {"name"=>"second tag"}]}, "includes"=>"tags"}

(Wenn du den Parameter includes=tags übergibst, dann bekommst du die erstellten Tags auch direkt wieder mit zurück)


Ich hoffe das hilft dir? 


Gruß
Axel

Walter Speth

unread,
Dec 1, 2021, 8:17:10 AM12/1/21
to 42he API
Hallo Axel,
Du machst =>  PHP, was?
Also in Python:
data = {"company" : {"name" : "Testfirma", "tags_attributes" : [{"name" :"first tag"}]}, "includes": "tags"}
response = requests.post(url, json= json.dumps(data))
Gibt immer noch status 400 und '{"error":"param-missing","description":"param is missing or the value is empty: tag"}'
Das ändert sich auch nicht bei 
response = requests.post(url, data = data)
(dann soll der payload urlencoded übertragen werden)

hast Du noch eine Idee?
Walter

Walter Speth

unread,
Dec 1, 2021, 8:59:36 AM12/1/21
to 42he API
geht auch nicht:
url = 'https://api.centralstationcrm.net/api/tags.json?apikey=xyz'
data = {'tag': {'name': 'mytag', 'attachable_type': 'Company', 'attachable_id': 007}}

500er Fehler wenn ich urlencoded sende, 400 Fehler (param is missing or the value is empty: tag) wenn ich JSON-String sende

Axel von Leitner

unread,
Dec 2, 2021, 1:40:33 AM12/2/21
to 42he API
Hey Walter, 

ich habe das in Postman mal nachgebaut und dir das als Python Requests exportiert, was bei mir funktioniert. 

import requests


querystring = {"apikey":"XYZ"}

payload = "{\"company\" : {\"name\" : \"Testfirma\", \"tags_attributes\" : [{\"name\" :\"first tag\"}]}, \"includes\": \"tags\"}"
headers = {
    'Content-Type': "application/json",
    'cache-control': "no-cache",
    'Postman-Token': "5414e949-85ee-40d6-a869-c33844a26738"
    }

response = requests.request("POST", url, data=payload, headers=headers, params=querystring)

print(response.text)



Dafür habe ich egtl nur deinen payload als JSON body geposted. 

Hilft dir das? 

Gruß
Axel

Walter Speth

unread,
Dec 2, 2021, 12:34:41 PM12/2/21
to 42he API
okay, danke Axel, damit klappt es.
Mir scheint, der Fehler ist, den Kunden über die URL zu addressieren
ansonsten ist mit Deiner Vorlage nun das mein code

payload = {"company" : {"name" : "Testfirma", "tags_attributes" : [{"name" :"mytag"}]}, "includes": "tags"}
response = requests.post(url, json=payload)
der funktioniert zwar "mit Erfolg", d.h. status 201 und das Tag wird erzeugt. Allerdings zeigt das web-Frontend das Tag nicht(!) als der Firma zugewiesen

alles in allem noch unbefriedigend, dass folgende payload abgelehnt wird, weil der Firmenname gebraucht wird:
 {"company": {"id": 0815, "tags_attributes": [{"name": "mytag"}]}

interessieren würde mich ja schon, wieso +++ falsch ist.
Das entspricht nämlich dem Vorschlag von Moritz Machner:


ich brauche also weiter Deine Hilfe

Walter

Walter Speth

unread,
Dec 7, 2021, 6:23:21 AM12/7/21
to 42he API
gibt es noch einen Tipp?

Axel von Leitner

unread,
Dec 10, 2021, 11:27:00 AM12/10/21
to 42he API
Hallo Walter, 

sorry, aber das ist mir jetzt durchgegangen und heute komme ich auch nicht mehr dazu weiter zu debuggen. Ich hoffe ich komme Anfang der kommenden Woche dazu. 

Gruß
Axel

Axel von Leitner

unread,
Dec 10, 2021, 11:34:59 AM12/10/21
to 42he API
Hey Walter, 

ich gucke jetzt einmal ganz kurz rein und denke schneller wäre ich, wenn du uns über den Support die konkreten Daten deines Requests schicken würdest. Ich kann gerade nur mutmaßen, um welchen Datensatz es sich handelt, finde aber am Tag deiner letzten Nachricht durchaus eine Testfirma, die auch ein Tag mit demselben created_at Timestamp hat. Ich kann aber jetzt nicht ausschließen, dass es ein Missverständnis der GUI gibt, weil dieses Tag so natürlich in der GUI angezeigt werden sollte. 

Insofern schick uns doch vllt mal deinen request mit der Rückgabe (zB company id) an deve...@42he.com. Natürlich ohne API-key. 

Dasselbe gilt auch für deinen request  {"company": {"id": 0815, "tags_attributes": [{"name""mytag"}]}

Der company name ist definitiv nicht nötig, wenn du nur ein Tag ergänzt bei einer bestehenden Firma

Gruß
Axel

Reply all
Reply to author
Forward
0 new messages