Amazon Selling Partner SPI - PHP SDKs

Overview

Amazon Selling Partner API - PHP SDK

This repository is not an official Amazon PHP library for their SP API.

social-preview

Why next library?

There are already few php sp api SDKs available for PHP however most of them comes with many issues of auto generated code.

  • hardcoded dependencies like guzzlehttp/guzzle or aws/aws-sdk-php
  • legacy code base (7.2)
  • no logger
  • SDK's are oriented around single seller which is not suitable for bigger systems
  • missing or lacking support for client_credentials grant type
  • not all API covered
  • no extensions

This library goal is to resolve all above mentioned issues.

Installations

composer install amazon-php/sp-api-sdk^1.0

This library is not in a stable stage yet, please use with caution.

Available SDKs

SellingPartnerSDK - Facade for all SDK's

Authorization

In order to start using SP API you need to first register as a Developer and create application. Whole process is described in Amazon Official Guides.

Normally amazon recommends to use Role IAM when creating application however this requires and additional API call when obtaining refresh token. It's easier to use User IAM and just make sure that the user has following Inline Policy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:*:*:*"
        }
    ]
}

IAM User

Example of changing refresh token into access token.

<?php

use AmazonPHP\SellingPartner\OAuth;
use AmazonPHP\SellingPartner\Configuration;
use AmazonPHP\SellingPartner\HttpFactory;

$oauth = new OAuth(
    $client,
    $httpFactory = new HttpFactory($factory, $factory),
    $config = Configuration::forIAMUser(
        'lwaClientID',
        'lwaClientID',
        'awsAccessKey',
        'awsSecretKey'
    )
);

$accessToken = $oauth->exchangeRefreshToken('seller_oauth_refresh_token');

IAM Role

@TODO

Development

99% of code in this library is auto generated from Amazon Selling Partner API Models using OpenAPI Generator tool. Output is later automatically upgraded by RectorPHP to PHP 7.4 version and finally coding standards are also automatically unified by PHP CS Fixer.

Requirements:

In oder to regenerate code (for example when API definitions change), execute following code:

composer generate

Examples

<?php

use AmazonPHP\SellingPartner\Marketplace;
use AmazonPHP\SellingPartner\Regions;
use AmazonPHP\SellingPartner\SellingPartnerSDK;
use Buzz\Client\Curl;
use AmazonPHP\SellingPartner\Exception\ApiException;
use AmazonPHP\SellingPartner\Configuration;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
use Nyholm\Psr7\Factory\Psr17Factory;

require_once __DIR__ . '/vendor/autoload.php';

$factory = new Psr17Factory();
$client = new Curl($factory);

$configuration = Configuration::forIAMUser(
    'lwaClientID',
    'lwaClientID',
    'awsAccessKey',
    'awsSecretKey'
);

$logger = new Logger('name');
$logger->pushHandler(new StreamHandler(__DIR__ . '/sp-api-php.log', Logger::DEBUG));

$sdk = SellingPartnerSDK::create($client, $factory, $factory, $configuration, $logger);

$accessToken = $sdk->oAuth()->exchangeRefreshToken('seller_oauth_refresh_token');

try {
    $item = $sdk->catalogItem()->getCatalogItem(
        $accessToken,
        Regions::NORTH_AMERICA,
        $marketplaceId = Marketplace::US()->id(),
        $asin = 'B07W13KJZC'
    );
    dump($item);
} catch (ApiException $exception) {
    dump($exception->getMessage());
}

Logging

Default log level is set up to DEBUG, but it can be changed in configuration to any other level for all operations in all APIs or only for given operation in given API.

$configuration->setDefaultLogLevel(\Psr\Log\LogLevel::INFO);

Specific API's or only given operations can be also excluded from logging (for example APIs with PII or sensitive data).

$configuration->setLogLevel(CatalogItemSDK::API_NAME, CatalogItemSDK::OPERATION_GETCATALOGITEM, LogLevel::INFO);
$configuration->setSkipLogging(TokensSDK::API_NAME);
$configuration->setSkipLogging(AuthorizationSDK::API_NAME, AuthorizationSDK::OPERATION_GETAUTHORIZATIONCODE);

Finally, you can also ignore specific headers when logging http request/response. By default, configuration is set to ignore following sensitive authorization headers:

'authorization',
'x-amz-access-token',
'proxy-authorization',
'www-authenticate',
'proxy-authenticate',

you can also add your own ignored headers:

$configuration->loggingAddSkippedHeader('some-sensitive-key');

Extensions

Each SDK allows you to register custom extensions executed before and after sending API requests.

<?php 

$configuration->registerExtension(new class implements \AmazonPHP\SellingPartner\Extension {
    public function preRequest(string $api, string $operation, RequestInterface $request): void
    {
        echo "pre: " . $api . "::" . $operation . " " . $request->getUri() . "\n";
    }

    public function postRequest(string $api, string $operation, RequestInterface $request, ResponseInterface $response): void
    {
        echo "post: " . $api . "::" . $operation . " " . $request->getUri() . " " 
            . $response->getStatusCode() . " rate limit: " . implode(' ', $response->getHeader('x-amzn-RateLimit-Limit')) . "\n";
    }
});
Comments
  • Add ReturnTypeWillChange attribute to prevent from deprecation errors on PHP 8.1

    Add ReturnTypeWillChange attribute to prevent from deprecation errors on PHP 8.1

    Change Log

    Added

    Fixed

    Changed

    • Update mustache template for model classes - added ReturnTypeWillChange attribute to prevent deprecation errors on PHP 8.1

    Removed

    Deprecated

    Security


    Description

    Update mustache template for model classes - added ReturnTypeWillChange attribute to prevent deprecation errors on PHP 8.1.

    opened by Stevad 12
  • Sandbox Mode Integration

    Sandbox Mode Integration

    Hi, we have a problem with integrating the sandbox API. We're using Guzzle as Client, using middlewares I managed to call the sandbox endpoints manually, but got The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.\n\nThe Canonical String for this request should have been... as an response, so I figured out there was some kind of problem with singing the request. I think it is a pretty much necessary feature, so I wondered whether you will implement it in your sdk , or is there some kind of battle-tested workaround of this problem.

    Thanks, Patrick

    enhancement 
    opened by SunnyFlail 11
  • Can you change version v0 to v2020-12-01 for GetCatalogItem?

    Can you change version v0 to v2020-12-01 for GetCatalogItem?

    https://sellercentral-japan.amazon.com/forums/t/topic/81380 2022/03 the v0 of GetCatalogItem will be abolished. Can you change version v0 to v2020-12-01 for GetCatalogItem?

    opened by aispel 11
  • During inheritance of ArrayAccess. Uncaught Return type (ObjectSerializer) PHP 8.1

    During inheritance of ArrayAccess. Uncaught Return type (ObjectSerializer) PHP 8.1

    Hi

    I have a problem with ObjectSerializer on PHP Version 8.1.7

    During inheritance of ArrayAccess: Uncaught yii\base\ErrorException: Return type of AmazonPHP\SellingPartner\Model\ProductTypesDefinitions\ProductTypeList::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/Model/ProductTypesDefinitions/ProductTypeList.php:219 Stack trace:

    0 /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/Model/ProductTypesDefinitions/ProductTypeList.php(17): Gepard\Log\Components\ConsoleErrorHandler->handleError(code: '...', message: '...', file: '...', line: '...')

    1 /var/www/html/vendor/composer/ClassLoader.php(571): ::unknown()

    2 /var/www/html/vendor/composer/ClassLoader.php(428): ::Composer\Autoload\includeFile(file: '...')

    3 /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/ObjectSerializer.php(360): Composer\Autoload\ClassLoader->loadClass(class: '...')

    4 /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/ObjectSerializer.php(360): ::method_exists(object_or_class: '...', method: '...')

    5 /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/Api/DefinitionsApi/ProductTypesDefinitionsSDK.php(396): AmazonPHP\SellingPartner\ObjectSerializer::deserialize(configuration: '...', data: '...', class: '...', httpHeaders: '...') AmazonPHP\SellingPartner\Api\DefinitionsApi\ProductTypesDefinitionsSDK->searchDefinitionsProductTypes(accessToken: '...', region: '...', marketplace_ids: '...', keywords: '...')

    6 {main} in /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/Model/ProductTypesDefinitions/ProductTypeList.php on line 17

    opened by osom-alexandr 9
  • FBAInventorySDK getInventorySummaries method not serializing boolean $details param as string

    FBAInventorySDK getInventorySummaries method not serializing boolean $details param as string

    The FBAInventorySDK getInventorySummaries method has an optional boolean parameter $details with a default boolean false value. When serializing to string value for use in the API call the value becomes 0 or 1. The API call expects string values of true and false.

    This following incorrect URI is created with the library:

    https://sellingpartnerapi-na.amazon.com/fba/inventory/v1/summaries?details=1&granularityType=Marketplace&granularityId=ATVPDKIKX0DER&marketplaceIds=ATVPDKIKX0DER
    

    The following is the expected URI:

    https://sellingpartnerapi-na.amazon.com/fba/inventory/v1/summaries?details=true&granularityType=Marketplace&granularityId=ATVPDKIKX0DER&marketplaceIds=ATVPDKIKX0DER
    

    The following response body is returned with a 400 error code:

    {
      "errors": [
        {
          "code": "InvalidInput",
          "message": "Invalid Input",
          "details": ""
        }
      ]
    }
    

    While this is not entirely helpful I was able to determine the cause thru trial and error, manually creating the variations on the URI.

    I would suspect that the same is true of any calls that have boolean values as params.

    opened by jasonhebert 9
  • Listing API item deserialization error

    Listing API item deserialization error

    I am trying to load the product using Listing API SDK.

    Request log:

    [2022-06-15T08:49:19.965991+00:00] amazon.DEBUG: Amazon Selling Partner API pre request {"api":"ListingsItems","operation":"getListingsItem","request_correlation_id":"86975203-3ed0-485a-a895-4ddbf92df76c","request_body":"","request_headers":{"content-type":["applica
    tion/json"],"accept":["application/json"],"host":["sellingpartnerapi-eu.amazon.com"],"user-agent":["Library amazon-php/sp-api-php (language=PHP 7.4.29; Platform=Linux 5.10.102.1-microsoft-standard-WSL2 x86_64)"],"x-amz-date":["20220615T084914Z"]},"request_uri":"https://se
    llingpartnerapi-eu.amazon.com/listings/2021-08-01/items/ASUBR/90NB0SL1-M10530?marketplaceIds=A1RKKUPIHCS9HS&includedData=summaries%2Cattributes%2Cissues%2Coffers%2CfulfillmentAvailability%2Cprocurement"}
    

    The request is successful, I see in logs that the response contains product data, but SDK fails on deserializing:

    [2022-06-15T08:49:46.547226+00:00] app.CRITICAL: TypeError: Argument 1 passed to AmazonPHP\SellingPartner\Model\ListingsItems\Item::setAttributes() must be an object or null, array given, called in /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/ObjectSerializer.php on line 381 (/var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/Model/ListingsItems/Item.php, line 308) {"trace":"
    #0 /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/ObjectSerializer.php(381): AmazonPHP\\SellingPartner\\Model\\ListingsItems\\Item->setAttributes()
    #1 /var/www/html/vendor/amazon-php/sp-api-sdk/src/AmazonPHP/SellingPartner/Api/ListingsApi/ListingsItemsSDK.php(392): AmazonPHP\\SellingPartner\\ObjectSerializer::deserialize()
    
    ... below stack trace is on files that are not related to the library ...
    

    If I remove attributes from includedData in the query - the issue disappears.

    opened by Stevad 9
  • Problem with jsonSerialize function

    Problem with jsonSerialize function

    Using the OrdersSDK the function jsonSerialize, sometimes have an exception.

    "AmazonPHP\SellingPartner\Model\Orders\Address::getName(): Return value must be of type string, null returned"

    The strange part is, if I try to collect the name using getOrderAddress, getShippingAddress and finally the getName, I retrieve the name without any problem.

    Debugging I found that the $this->container seems to be empty for most of attributes.

    I tried both version 4 and 5.

    opened by st-pimentel 5
  • SP-API getPackageTrackingDetails does not respond correctly when an unknown event code is responded. Part 2.

    SP-API getPackageTrackingDetails does not respond correctly when an unknown event code is responded. Part 2.

    https://github.com/norberttech/sp-api-sdk/blob/3e0421ca3b6934d5b3e5284e6613c6123ee36c87/src/AmazonPHP/SellingPartner/ObjectSerializer.php#L67

    The same response to #192 is needed at the above location.

    opened by Tetsuya-Takiguchi 5
  • Update Address.php

    Update Address.php

    Change Log

    Fixed

    • JsonSerialization of an \AmazonPHP\SellingPartner\Model\Orders fails due to an empty name attribute on the response filled into \AmazonPHP\SellingPartner\Model\Orders\Address. The failure is due to the expected return type. Fixed by adjusting the return type for string to be optional

    Description

    Addresses returned by the getOrder endpoint are documented as requiring an OrderAddress Address name parameter, but responses are not conforming to that spec.

    Currently, requests to JsonSerialize on an Orders object will fail when the getName method is called due to the return type. Adjusting the return to be an optional string.

    opened by georanma 5
  • Matching expected return for getRequiresAdditionalSellerInputs

    Matching expected return for getRequiresAdditionalSellerInputs

    Change Log

    Added

    Fixed

    • ShippingService -> getRequiresAdditionalSellerInputs - match return type

    Changed

    Removed

    Deprecated

    Security


    Description

    opened by rradutzu 4
  • New Catalog Items API v2022-04-01 Version, Errors executing: composer generate

    New Catalog Items API v2022-04-01 Version, Errors executing: composer generate

    Hi,

    here is the new Catalog Version: https://developer-docs.amazon.com/sp-api/docs/catalog-items-api-v2022-04-01-reference.

    Can you please update the https://github.com/amazon-php/sp-api-sdk/blob/4.x/src/AmazonPHP/SellingPartner/Api/CatalogApi/CatalogItemSDK.php?

    and Update: https://github.com/amazon-php/sp-api-sdk/blob/4.x/bin/generate.sh

    replace: https://raw.githubusercontent.com/amzn/selling-partner-api-models/main/models/catalog-items-api-model/catalogItems_2020-12-01.json with https://raw.githubusercontent.com/amzn/selling-partner-api-models/main/models/catalog-items-api-model/catalogItems_2022-04-01.json

    When i'll execute composer generate I'll got the following Errors

    > Composer\Config::disableProcessTimeout
    > rm -rf src/AmazonPHP/SellingPartner/Api
    > rm -rf src/AmazonPHP/SellingPartner/Model
    > bin/generate.sh
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-aplus.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-aplus.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-aplus.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-authorization.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-authorization.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-authorization.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
    -sh-4.2$ composer generate
    > Composer\Config::disableProcessTimeout
    > rm -rf src/AmazonPHP/SellingPartner/Api
    > rm -rf src/AmazonPHP/SellingPartner/Model
    > bin/generate.sh
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-aplus.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-aplus.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-aplus.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-authorization.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-authorization.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-authorization.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-catalog-item.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-catalog-item.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-catalog-item.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fba-inbound.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fba-inbound.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-fba-inbound.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fba-inventory.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fba-inventory.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-fba-inventory.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fba-small-and-light.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fba-small-and-light.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-fba-small-and-light.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-feeds.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-feeds.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-feeds.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-finances.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-finances.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-finances.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fulfillment-inbound.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fulfillment-inbound.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-fulfillment-inbound.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fulfillment-outbound.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-fulfillment-outbound.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-fulfillment-outbound.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-listings-items.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-listings-items.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-listings-items.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-merchant-fulfillment.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-merchant-fulfillment.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-merchant-fulfillment.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-messaging.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-messaging.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-messaging.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-notifications.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-notifications.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-notifications.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-orders.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-orders.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-orders.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-product-fees.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-product-fees.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-product-fees.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-product-pricing.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-product-pricing.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-product-pricing.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-product-types-definitions.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-product-types-definitions.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-product-types-definitions.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-reports.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-reports.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-reports.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-sales.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-sales.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-sales.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-sellers.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-sellers.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-sellers.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-services.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-services.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-services.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-shipment-invoicing.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-shipment-invoicing.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-shipment-invoicing.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-shipping.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-shipping.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-shipping.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-solicitations.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-solicitations.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-solicitations.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-tokens.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-tokens.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-tokens.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-uploads.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-uploads.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-uploads.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-inventory.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-inventory.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-direct-fulfillment-inventory.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-orders.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-orders.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-direct-fulfillment-orders.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-payments.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-payments.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-direct-fulfillment-payments.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-shipping.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-shipping.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-direct-fulfillment-shipping.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-transactions.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-direct-fulfillment-transactions.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-direct-fulfillment-transactions.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-invoices.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-invoices.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-invoices.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-orders.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-orders.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-orders.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-shipments.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-shipments.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-shipments.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-transaction-status.yaml (No such file or directory)
    [main] ERROR o.o.c.config.CodegenConfigurator - /sp-api/config/generator-vendor-transaction-status.yaml (No such file or directory)
    Exception in thread "main" java.lang.RuntimeException: Unable to deserialize config file: /sp-api/config/generator-vendor-transaction-status.yaml
            at org.openapitools.codegen.config.CodegenConfigurator.readDynamicSettings(CodegenConfigurator.java:163)
            at org.openapitools.codegen.config.CodegenConfigurator.fromFile(CodegenConfigurator.java:88)
            at org.openapitools.codegen.cmd.Generate.execute(Generate.java:286)
            at org.openapitools.codegen.cmd.OpenApiGeneratorCommand.run(OpenApiGeneratorCommand.java:32)
            at org.openapitools.codegen.OpenAPIGenerator.main(OpenAPIGenerator.java:66)
    Script bin/generate.sh handling the generate event returned with error code 1
    

    Where can i find the *.yaml Files? or am I missing something here?

    Docker version 20.10.17, build 100c701

    ty regards Torsten

    opened by GWTorstenDEV 4
  • Bump phpstan/phpstan from 1.9.4 to 1.9.7 in /tools

    Bump phpstan/phpstan from 1.9.4 to 1.9.7 in /tools

    Bumps phpstan/phpstan from 1.9.4 to 1.9.7.

    Release notes

    Sourced from phpstan/phpstan's releases.

    1.9.7

    Bleeding edge 🔪

    If you want to see the shape of things to come and adopt bleeding edge features early, you can include this config file in your project's phpstan.neon:

    includes:
    	- vendor/phpstan/phpstan/conf/bleedingEdge.neon
    

    Of course, there are no backwards compatibility guarantees when you include this file. The behaviour and reported errors can change in minor versions with this file included. Learn more

    Improvements 🔧

    Bugfixes 🐛

    Function signature fixes 🤖

    Internals 🔍

    1.9.6

    Improvements 🔧

    Bugfixes 🐛

    1.9.5

    ... (truncated)

    Commits
    • 0501435 PHPStan 1.9.7
    • 707c831 Updated PHPStan to commit d279f388f5a1cb7a6f821dbecc4052a9ebbb8417
    • 23daeff Updated PHPStan to commit 091fcafb07ac0b3eb261285c049d9c0f214a535c
    • 1a28725 Updated Composer baseline
    • af72eaa Updated PHPUnit baseline
    • c0d39c1 Updated PHPStan to commit 28c2c79b16cac6ba6b01f1b4d211541dd49d8a77
    • 45dbb01 Updated PHPStan to commit 752baaf49f65586b79ab24d5beb4b385c65a281c
    • 7f88292 Updated PHPStan to commit 02753c6883677edd87d40f397f057daddd103a05
    • b4c0d3f Updated PHPStan to commit 6debffdb5892f7fb311a60634ec9cda79b6e3154
    • 92ac649 Reproduce progress bar crash if all passed paths to analyse are excluded
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump friendsofphp/php-cs-fixer from 3.13.1 to 3.13.2 in /tools

    Bump friendsofphp/php-cs-fixer from 3.13.1 to 3.13.2 in /tools

    Bumps friendsofphp/php-cs-fixer from 3.13.1 to 3.13.2.

    Release notes

    Sourced from friendsofphp/php-cs-fixer's releases.

    v3.13.2 Oliva

    • bug: Fix type error when using paths intersection mode (#6734)
    Changelog

    Sourced from friendsofphp/php-cs-fixer's changelog.

    Changelog for v3.13.2

    • bug: Fix type error when using paths intersection mode (#6734)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump rector/rector from 0.14.3 to 0.15.2 in /tools

    Bump rector/rector from 0.14.3 to 0.15.2 in /tools

    Bumps rector/rector from 0.14.3 to 0.15.2.

    Release notes

    Sourced from rector/rector's releases.

    Released Rector 0.15.2

    New Features :partying_face:

    • [TypeDeclaration] Add FalseReturnClassMethodToNullableRector (#3229)
    • [DeadCode] Add TargetRemoveClassMethodRector (#3240)
    • Adapt PrivateConstantToSelfRector to work on non-final classes, too (#3198), Thanks @​alfredbez!
    • [CodingStyle] Add NullifyUnionNullableRector (#3231)
    • [TypeCoverage] Add EmptyOnNullableObjectToInstanceOfRector (#3230)
    • RenameClassRector with callback support (#3023), Thanks @​dorrogeray!

    Bugfixes :bug:

    • [Php82] Handle parent already readonly on ReadOnlyClassRector (#3199)
    • [DeadCode] Skip append array data on RemoveJustPropertyFetchRector (#3201)
    • [DeadCode] Skip standalone @​return false or true on RemoveUselessReturnTagRector (#3202)
    • Fix wrong reference to replacement rule (#3203), Thanks @​jlherren!
    • [Privatization] Do not remove comment on ChangeReadOnlyPropertyWithDefaultValueToConstantRector (#3204)
    • [Naming] Skip Doctrine collection with @​var Collection on RenamePropertyToMatchTypeRector (#3209)
    • [Core] Performance improvement: Remove unnecessary re-call FileFactory::createFileInfosFromPaths() (#3210)
    • [Php71] Skip defer() function on RemoveExtraParametersRector (#3211)
    • [Core] Improve performance: remove repetitive currentFileProvider->setFile() call on PhpFileProcessor (#3213)
    • [Php81] Allow explicit mixed processed on trait on NullToStrictStringFuncCallArgRector (#3212)
    • [Privatization] Skip used by heredoc on ChangeReadOnlyVariableWithDefaultValueToConstantRector (#3216)
    • [Parallel] Fix missing process RemovedAndAddedFilesProcessor->run() on parallel process on WorkerRunner (#3218)
    • [parallel] Improve performance: Run RemovedAndAddeedFileProcessor after loop (#3219)
    • [CodeQuality] Add empty() check to FlipTypeControlToUseExclusiveTypeRector (#3224)
    • [CodeQuality][TypeDeclaration] Handle default value from constructor removed on InlineConstructorDefaultToPropertyRector+TypedPropertyFromStrictConstructorRector (#3225)
    • [TypeDeclaration] Skip yield return on AddClosureReturnTypeRector (#3227)
    • [TypeDeclaration] Skip optional yield on AddReturnTypeDeclarationFromYieldsRector (#3228)
    • [NodeTraverser] Use NodeTraverser::DONT_TRAVERSE_CURRENT_AND_CHILDREN instead of NodeTraverser::DONT_TRAVERSE__CHILDREN (#3233)
    • [Core] Improve performance on AstResolver and ClassLikeAstResolver (#3234)
    • [Php81] Skip ReadOnlyPropertyRector on read only class (#3236)
    • [CodingStyle] Skip new line /\r\n|\r|\n/i on ConsistentPregDelimiterRector (#3241)
    • [CodingStyle] Skip EncapsedStringsToSprintfRector on heredoc (#3242)

    Released Rector 0.15.1

    New Features :partying_face:

    • [CodingStyle] Split SplitGroupedConstantsAndPropertiesRector to SplitGroupedClassConstantsRector and SplitGroupedPropertiesRector (#3158)
    • Add compatible phpstan/phpdoc-parser 0.15 (#3157)

    Bugfixes :bug:

    • Skip short class names in UseClassKeywordForClassNameResolutionRector (#3156)
    • [Core] Fix crash indentation on indent(\t, 1) config (#3155)
    • [TypeDeclaration] Skip union mixed on TypedPropertyFromAssignsRector (#3160)

    ... (truncated)

    Commits
    • 5bc89fa Rector 0.15.2
    • 5b34b97 Updated Rector to commit f8814b1d707d72e284870759d1f446848fa003b2
    • 374d2f5 Updated Rector to commit f8814b1d707d72e284870759d1f446848fa003b2
    • 5003a01 Updated Rector to commit e920ade7b67a17dbf7e6129585a3261f1fd1540e
    • f233f27 Updated Rector to commit ab3ad293122bafa96d9e8fc64ac15f0220aa9ecc
    • 727b9f4 Updated Rector to commit bfa1891c50677b01136a9308fd3c3ecc12e267d9
    • 680ba23 Updated Rector to commit 88629427917b7d359beeb1a0b34d39d2127472b9
    • e4dc601 Updated Rector to commit 3c168f03d38bb967a5e65e453f82adf120ef4eba
    • 96d8a22 Updated Rector to commit 70fea54e77ffd186e41540d2b36c5362b073fbc4
    • d72c810 Updated Rector to commit c78e255cf9cb17cedead84ff8a54f421f563942d
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump vimeo/psalm from 4.30.0 to 5.4.0 in /tools

    Bump vimeo/psalm from 4.30.0 to 5.4.0 in /tools

    Bumps vimeo/psalm from 4.30.0 to 5.4.0.

    Release notes

    Sourced from vimeo/psalm's releases.

    5.4.0

    What's Changed

    Features

    Fixes

    Internal changes

    Full Changelog: https://github.com/vimeo/psalm/compare/5.3.0...5.4.0

    5.3.0

    What's Changed

    Features

    Fixes

    Docs

    Internal changes

    New Contributors

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • 4.x

    4.x

    Added Belgium

    This is my first PR at GitHub. So I hope do not miss anything.

    Change Log

    Added

    • Added Belgium Marketplace

    Description

    I think only Belgium (AMEN7PMS3EDWL) and Saudi Arabia was missing. See full list here.

    I just saw the URL list here. I did not write tests for that.

    opened by sw-Oldeu 2
Releases(5.0.0)
Owner
Amazon PHP
PHP Libraries & tools for Amazon products
Amazon PHP
Extended response classes for Rest API clients/SDKs

Rest Response Extended response classes for Rest API clients/SDKs. About This package is intended to be component of SDKs so the responses can be easi

Ilesanmi Olawale Adedotun 2 Mar 28, 2022
The 1Password Connect PHP SDK provides your PHP applications access to the 1Password Connect API hosted on your infrastructure and leverage the power of 1Password Secrets Automation

1Password Connect PHP SDK The 1Password Connect PHP SDK provides your PHP applications access to the 1Password Connect API hosted on your infrastructu

Michelangelo van Dam 12 Dec 26, 2022
API for Symbiota using the Lumen PHP PHP Micro-Framework By Laravel

symbiota-api API for Symbiota using the Lumen PHP PHP Micro-Framework By Laravel Laravel Lumen Official Documentation Documentation for the Lumen fram

Biodiversity Knowledge Integration Center 2 Jan 3, 2022
Facebook SDK for PHP (v6) - allows you to access the Facebook Platform from your PHP app

Facebook SDK for PHP (v6) This repository contains the open source PHP SDK that allows you to access the Facebook Platform from your PHP app. Installa

null 0 Aug 10, 2022
Single file PHP script that adds a REST API to a SQL database

PHP-CRUD-API Single file PHP script that adds a REST API to a MySQL/MariaDB, PostgreSQL, SQL Server or SQLite database. NB: This is the TreeQL referen

Maurits van der Schee 3.2k Jan 8, 2023
Simple and effective multi-format Web API Server to host your PHP API as Pragmatic REST and / or RESTful API

Luracast Restler ![Gitter](https://badges.gitter.im/Join Chat.svg) Version 3.0 Release Candidate 5 Restler is a simple and effective multi-format Web

Luracast 1.4k Dec 14, 2022
Unofficial Firebase Admin SDK for PHP

Firebase Admin PHP SDK Table of Contents Overview Installation Documentation Support License Overview Firebase provides the tools and infrastructure y

kreait 1.9k Jan 3, 2023
Simple utility and class library for generating php classes from a wsdl file.

wsdl2phpgenerator Simple WSDL to PHP classes converter. Takes a WSDL file and outputs class files ready to use. Uses the MIT license. Announcement: We

null 802 Dec 10, 2022
Content Negotiation tools for PHP.

Negotiation Negotiation is a standalone library without any dependencies that allows you to implement content negotiation in your application, whateve

William Durand 1.3k Dec 22, 2022
A PHP library to support implementing representations for HATEOAS REST web services.

Hateoas A PHP library to support implementing representations for HATEOAS REST web services. Installation Working With Symfony Usage Introduction Conf

William Durand 998 Dec 5, 2022
This PHP library will help you to work with your Pinterest account without using any API account credentials.

Pinterest Bot for PHP A PHP library to help you work with your Pinterest account without API credentials. The Pinterest API is painful: receiving an a

Sergey Zhuk 414 Nov 21, 2022
Pure PHP implementation of GraphQL Server – Symfony Bundle

Symfony GraphQl Bundle This is a bundle based on the pure PHP GraphQL Server implementation This bundle provides you with: Full compatibility with the

null 283 Dec 15, 2022
application/hal builder / formatter for PHP 5.4+

Nocarrier\Hal This is a library for creating documents in the application/hal+json and application/hal+xml hypermedia formats It requires PHP 5.4 or l

Ben Longden 204 Sep 28, 2022
PHP REST API Framework

PSX Framework About PSX is a framework written in PHP dedicated to build REST APIs. It is based on multiple components which cover many aspects of the

Apioo 121 Dec 30, 2022
A simple PHP package for sending messages to Slack, with a focus on ease of use and elegant syntax.

Slack for PHP | A simple PHP package for sending messages to Slack with incoming webhooks, focused on ease-of-use and elegant syntax. supports: PHP 7.

null 128 Nov 28, 2022
Quickly and easily expose Doctrine entities as REST resource endpoints with the use of simple configuration with annotations, yaml, json or a PHP array.

Drest Dress up doctrine entities and expose them as REST resources This library allows you to quickly annotate your doctrine entities into restful res

Lee Davis 88 Nov 5, 2022
The efficient and elegant JSON:API 1.1 server library for PHP

Woohoo Labs. Yin Woohoo Labs. Yin is a PHP framework which helps you to build beautifully crafted JSON:APIs. Table of Contents Introduction Features W

Woohoo Labs. 237 Nov 28, 2022
Notion PHP SDK

Notion PHP SDK This is an unofficial PHP SDK for the new public Notion API. It's work in progress as we didn't get the change to be included to the pr

Codecycler 43 Nov 29, 2022
YouTrack RestAPI library for PHP. An implementation for communicating with your YouTrack instance.

YouTrack API PHP This is an implementation for communicating with the JetBrains YouTrack RestAPI. This library covers basic resource calls available i

Samih Soylu 4 May 3, 2022