Autor Zpráva
bautren
Profil
Dobrý den, mám problém ohledně posílání requestu na API ve formátu YAML. API je nastavené správně a vrací mi odpověď, ale pokáždé stejnou, tudíž {"message":"Unauthorized"} 401. Zkoušel jsem data posílat v JSON formátu, ale odpověď byla stejná. Zdej přikládám example YAMLu, co jsem k tomuto úkolu dostal.

paths:
    /v1/office/availability:
        parameters: []
        post:
          summary: Check Office Availability
          operationId: post-auth-v1-registration-advisor
          responses:
            '200':
              description: OK
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      email:
                        type: boolean
                      slug:
                        type: boolean
                  examples:
                    Example:
                      value:
                        email: true
                        slug: true
            '401':
              description: Unauthorized
              headers: {}
            '409':
              description: Conflict (returned if e-mail or slug are already used by tenant)
              content:
                application/json:
                  schema:
                    type: object
                    properties:
                      email:
                        type: boolean
                      slug:
                        type: boolean
                  examples:
                    Example - E-mail in use:
                      value:
                        email: false
                        slug: true
          parameters: []
          requestBody:
            content:
              application/json:
                schema:
                  type: object
                  properties:
                    tenant_id:
                      type: number
                    slug:
                      type: string
                    email:
                      type: string
                  required:
                    - tenant_id
                    - slug
                    - email
                examples:
                  Example:
                    value:
                      email: broker@example.com
                      slug: broker-inc
                      tenant_id: 1
            description: ''
          description: 'Checks if an office with given e-mail and office slug (URL) is available for registration, or already registered.'
          security:
            - Vendor API Key: []
          tags:
            - Office

A metoda na volání vypadá tahle:
protected function sendRequest($url, $data = [])
    {
            $yaml =
<<<EOD
- post:
    operationId: 10002
    api_key: (**secret***)
    - value:
        slug: true
        email: true    
EOD;


        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/x-yaml'
        ));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $yaml);

        $result = curl_exec($ch);
        $httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        print_r($result);
        echo "<br><br>";
        print_r($httpStatus);

        return [$httpStatus, $result];
    }

Potřeboval bych dostat platnou odpověd od serveru, ale už opravdu nevím, co ještě zkusit. Děkuji za případnou pomoc :-)
Firibix
Profil
Reakce na bautrena:
API vrací odpověď 401 Unauthorized, tedy buď nemáš oprávnění provést akci, o kterou se snažíš, nebo se k API špatně přihlašuješ (např. nesprávný API klíč, špatný způsob posílání toho klíče – má být součástí samotného YAML body, nebo spíš v nějaké HTTP hlavičce?).
bautren
Profil
Firibix:
To je právě ten problém, že já nevím. Nevím jestli to má být v hlavičce, nebo v body. Jediný co mi bylo řečeno, tak tady je API klíč a ať to funguje, správná implementace je v tom examplu, co jsme zaslal. Ale bohužel se v tom absolutně nevyznám. :)


bautren:
Dostal jsem k tomu:
API end-point
Tenant_id
API_key


bautren:
Ale bohužel nevím, jak to složit, aby mi to vrátilo správnou odpověď
Medvídek
Profil
Koukni, jak je v OpenAPI definován ten:

security:
            - Vendor API Key: []

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0