# REST API - Anlegen eines Kunden samt Adresse

**URL:** <https://forum.shopware.com/t/rest-api-anlegen-eines-kunden-samt-adresse/70400>\
**Category:** Programmierung\
**Created:** [23. Oktober 2020 um 08:03 UTC](https://forum.shopware.com/t/rest-api-anlegen-eines-kunden-samt-adresse/70400 "2020-10-23T08:03:31Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ent\_dev](https://avatars.discourse-cdn.com/v4/letter/e/45deac/32.png) [@ent\_dev](https://forum.shopware.com/u/ent_dev)\
**Post date:** [23. Oktober 2020 um 08:03 UTC](https://forum.shopware.com/t/rest-api-anlegen-eines-kunden-samt-adresse/70400/1 "2020-10-23T08:03:31Z")

</div>

Guten Morgen zusammen,

ich möchte über die REST API mit cURL einen Kunden anlegen, soweit so gut, das funktioniert auch. Nun würde ich diesem Kunden auch seine Adresse mitgeben wollen. Allerdings fordert der Endpoint customer die Adresse als uuid. Diese kenne ich doch garnicht, wenn der Kunde bspw. neu ist.

Wie gehe ich denn nun vor, ich hatte mir gedacht das ich den Kunden einfach samt Adresse in einem POST übergebe, ist das garnicht möglich?

JSON-Objekt:

```
{"type":"customer",
"groupId":"cfbd5018d38d41d8adca10d94fc8bdd6",
"defaultPaymentMethodId":"b5443e8581ad42e9918a8313b9a994ce",
"salesChannelId":"4cf85b3816fb4dcba3361c7ae3ba88db",
"languageId":"2fbb5fe2e29a4d70aa5854ce7ce3e20b",
"customerNumber":"669966",
"salutationId":"69b9dcadb5aa4a9f93215e7cfda1eba8",
"firstName":"XY",
"lastName":"YX",
"email":"xy.yx@xxyy.de",
"createdAt":"2020-10-23T08:30:56.244+00:00",
"company":"XXYyy xyxy",
"street":"K\u00f6nigbacher Stra\u00dfe 666",
"zipcode":"12345",
"city":"Testburg"}

```

Oder gehe ich dann über den Sync-Endpoint und übergebe die Adresse der customer\_address und die Kundenstammdaten an customer?

Vielen Dank und ein schönes Wochenende!

ent\_dev

---

<div class="post-metadata">

**Author:** ![ent\_dev](https://avatars.discourse-cdn.com/v4/letter/e/45deac/32.png) [@ent\_dev](https://forum.shopware.com/u/ent_dev)\
**Post date:** [28. Oktober 2020 um 11:44 UTC](https://forum.shopware.com/t/rest-api-anlegen-eines-kunden-samt-adresse/70400/2 "2020-10-28T11:44:21Z")

</div>

**![Thumb-Up](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/thumb-up.png "Thumb-Up") UPDATE:**

Hallo zusammen,

mittlerweile bin ich so weit, dass ich mir das Model aus der CustomerGenerator.php geholt habe und meine Schnittstelle angepasst hab.

```
    $id = uniqid();
    $shippingAddressId = uniqid();
    $billingAddressId = uniqid();

    $customer = [
        'id' => $id,
        'customerNumber' => '1337',
        'salutationId' => '69b9dcadb5aa4a9f93215e7cfda1eba8',
        'firstName' => 'Max',
        'type' => 'customer',
        'lastName' => 'Mustermann',
        'email' => 'test@example.com',
        'password' => 'shopware',
        'defaultPaymentMethodId' => 'b5443e8581ad42e9918a8313b9a994ce',
        'groupId' => 'cfbd5018d38d41d8adca10d94fc8bdd6',
        'salesChannelId' => uniqid(),
        'defaultBillingAddressId' => $billingAddressId,
        'defaultShippingAddressId' => $shippingAddressId,
        'addresses' => [
            [
                'id' => $shippingAddressId,
                'customerId' => $id,
                'salutationId' => '69b9dcadb5aa4a9f93215e7cfda1eba8',
                'firstName' => 'Max',
                'lastName' => 'Mustermann',
                'street' => 'Ebbinghoff 10',
                'zipcode' => '48624',
                'city' => 'Schöppingen',
            ],
            [
                'id' => $billingAddressId,
                'customerId' => $id,
                'countryId' => '69b9dcadb5aa4a9f93215e7cfda1eba8',
                'salutationId' => '69b9dcadb5aa4a9f93215e7cfda1eba8',
                'firstName' => 'Max',
                'lastName' => 'Mustermann',
                'street' => 'Bahnhofstraße 27',
                'zipcode' => '10332',
                'city' => 'Berlin',
            ],
        ],
    ];

```

Im ersten Schritt generiere ich mir die UUID’s für **$id** , **$shippingAdressId** und **$billingAddressId**. Anschließend erstelle ich ein Array und befülle es mit den entsprechenden Daten. Anschließend json\_encode [blabla].

Meine erste Frage habe ich mir damit selbst beantwortet. Ich habe mir die \_info/open-api-schema.json angeschaut und festgestellt, dass man via addresses die beiden Objekte übergibt und mit customer\_id referenziert.

&nbsp;

Dies funktioniert allerdings immer noch nicht! Ich erhalte folgende Fehlermeldung: **Expected primary key field id for definition**

```
{"errors":[{"status":"500","code":"FRAMEWORK__PRIMARY_KEY_NOT_PROVIDED","title":"Internal Server Error","detail":"Expected primary key field id for definition Shopware\\Core\\Checkout\\Customer\\CustomerDefinition not provided","meta":{"parameters":{"definition":"Shopware\\Core\\Checkout\\Customer\\CustomerDefinition","propertyName":"id"}}}]}

```

Weiß hier jemand weiter? Ich wäre seeeehr dankbar! 😃

---

<div class="post-metadata">

**Author:** ![Moritz\_Naczenski](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/moritz_naczenski/32/7792_2.png) [@Moritz\_Naczenski](https://forum.shopware.com/u/Moritz_Naczenski)\
**Post date:** [28. Oktober 2020 um 16:53 UTC](https://forum.shopware.com/t/rest-api-anlegen-eines-kunden-samt-adresse/70400/3 "2020-10-28T16:53:43Z")

</div>

Hast du mal geschaut wie das im Admin gemacht wird?  
Generell kannst du ja einen Kunden anlegen und du siehst im Networkbrowser immer auch die API-Calls und den Payload. Da solltest du das einfach 1:1 übernehmen können.

---

<div class="post-metadata">

**Author:** ![ent\_dev](https://avatars.discourse-cdn.com/v4/letter/e/45deac/32.png) [@ent\_dev](https://forum.shopware.com/u/ent_dev)\
**Post date:** [29. Oktober 2020 um 07:10 UTC](https://forum.shopware.com/t/rest-api-anlegen-eines-kunden-samt-adresse/70400/4 "2020-10-29T07:10:17Z")

</div>

> [@Moritz Naczenski schrieb:](https://forum.shopware.com/profile/14574/Moritz%20Naczenski "Moritz%20Naczenski")
> 
> Hast du mal geschaut wie das im Admin gemacht wird?  
> Generell kannst du ja einen Kunden anlegen und du siehst im Networkbrowser immer auch die API-Calls und den Payload. Da solltest du das einfach 1:1 übernehmen können.

Es kann so einfach sein … Vielen Dank!
