Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
**/node_modules
**/dist
.turbo
.npmrc
.npmrc
*.pem
openapitools.json
32 changes: 32 additions & 0 deletions examples/php-api-client/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Example PHP API client for the AIA Carbon Calculators API

This example shows how to call the REST API available at https://emissionscalculator-mtls.production.aiaapi.com/calculator/3.0.0 using a simple PHP script.

## Running the example

You can execute a simple request to the `beef` endpoint using the example provided. You just need to update the calls `$config->setCertFile` and `$config->setKeyFile` in [example.php](./api-client/example.php) so they point to your client certificate and key files. This allows the client to authenticate with the endpoint via mTLS. Once that has been done you just need to run:

```
cd api-client
composer install
php example.php
```

## Code generation

The PHP API client has been generated using the [openapi-generator-cli](https://www.npmjs.com/package/@openapitools/openapi-generator-cli) tool. The generation can be reproduced with a script like:

```
API_CLIENT_DIR=api-client
API_VERSION=3.0.0
rm -rf $API_CLIENT_DIR

npm -g install @openapitools/openapi-generator-cli
openapi-generator-cli generate \
-i https://d2awla29kxgk7i.cloudfront.net/api/$API_VERSION/openapi.json \

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't know the final documentation URL yet

-g php \
-o $API_CLIENT_DIR \
--global-property apiTests=false,apiDocs=false,modelTests=false,modelDocs=false
```

For now, the PHP generator does not support all the configuration needed for an mTLS connection out of the box. Several fixes have been applied to the generated code in the `api-client` folder to let this work end to end. Once this [PR](https://github.com/OpenAPITools/openapi-generator/pull/22229) has been merged and released, it will be possible to make requests via mTLS without any code changes to the generated PHP client code needed.
15 changes: 15 additions & 0 deletions examples/php-api-client/api-client/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ref: https://github.com/github/gitignore/blob/master/Composer.gitignore

composer.phar
/vendor/

# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
# composer.lock

# php-cs-fixer cache
.php_cs.cache
.php-cs-fixer.cache

# PHPUnit cache
.phpunit.result.cache
23 changes: 23 additions & 0 deletions examples/php-api-client/api-client/.openapi-generator-ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator

# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.

# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs

# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux

# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux

# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md
306 changes: 306 additions & 0 deletions examples/php-api-client/api-client/.openapi-generator/FILES
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@
.gitignore
.openapi-generator-ignore
.php-cs-fixer.dist.php
.travis.yml
README.md
composer.json
git_push.sh
lib/Api/GAFApi.php
lib/ApiException.php
lib/Configuration.php
lib/FormDataProcessor.php
lib/HeaderSelector.php
lib/Model/ModelInterface.php
lib/Model/PostAquaculture200Response.php
lib/Model/PostAquaculture200ResponseCarbonSequestration.php
lib/Model/PostAquaculture200ResponseIntensities.php
lib/Model/PostAquaculture200ResponseIntermediateInner.php
lib/Model/PostAquaculture200ResponseIntermediateInnerCarbonSequestration.php
lib/Model/PostAquaculture200ResponseNet.php
lib/Model/PostAquaculture200ResponsePurchasedOffsets.php
lib/Model/PostAquaculture200ResponseScope1.php
lib/Model/PostAquaculture200ResponseScope2.php
lib/Model/PostAquaculture200ResponseScope3.php
lib/Model/PostAquacultureRequest.php
lib/Model/PostAquacultureRequestEnterprisesInner.php
lib/Model/PostAquacultureRequestEnterprisesInnerBaitInner.php
lib/Model/PostAquacultureRequestEnterprisesInnerCustomBaitInner.php
lib/Model/PostAquacultureRequestEnterprisesInnerFluidWasteInner.php
lib/Model/PostAquacultureRequestEnterprisesInnerFuel.php
lib/Model/PostAquacultureRequestEnterprisesInnerFuelStationaryFuelInner.php
lib/Model/PostAquacultureRequestEnterprisesInnerFuelTransportFuelInner.php
lib/Model/PostAquacultureRequestEnterprisesInnerInboundFreightInner.php
lib/Model/PostAquacultureRequestEnterprisesInnerRefrigerantsInner.php
lib/Model/PostAquacultureRequestEnterprisesInnerSolidWaste.php
lib/Model/PostBeef200Response.php
lib/Model/PostBeef200ResponseIntermediateInner.php
lib/Model/PostBeef200ResponseIntermediateInnerIntensities.php
lib/Model/PostBeef200ResponseNet.php
lib/Model/PostBeef200ResponseScope1.php
lib/Model/PostBeef200ResponseScope3.php
lib/Model/PostBeefRequest.php
lib/Model/PostBeefRequestBeefInner.php
lib/Model/PostBeefRequestBeefInnerClasses.php
lib/Model/PostBeefRequestBeefInnerClassesBullsGt1.php
lib/Model/PostBeefRequestBeefInnerClassesBullsGt1Autumn.php
lib/Model/PostBeefRequestBeefInnerClassesBullsGt1PurchasesInner.php
lib/Model/PostBeefRequestBeefInnerClassesBullsGt1Traded.php
lib/Model/PostBeefRequestBeefInnerClassesCowsGt2.php
lib/Model/PostBeefRequestBeefInnerClassesCowsGt2Traded.php
lib/Model/PostBeefRequestBeefInnerClassesHeifers1To2.php
lib/Model/PostBeefRequestBeefInnerClassesHeifers1To2Traded.php
lib/Model/PostBeefRequestBeefInnerClassesHeifersGt2.php
lib/Model/PostBeefRequestBeefInnerClassesHeifersGt2Traded.php
lib/Model/PostBeefRequestBeefInnerClassesHeifersLt1.php
lib/Model/PostBeefRequestBeefInnerClassesHeifersLt1Traded.php
lib/Model/PostBeefRequestBeefInnerClassesSteers1To2.php
lib/Model/PostBeefRequestBeefInnerClassesSteers1To2Traded.php
lib/Model/PostBeefRequestBeefInnerClassesSteersGt2.php
lib/Model/PostBeefRequestBeefInnerClassesSteersGt2Traded.php
lib/Model/PostBeefRequestBeefInnerClassesSteersLt1.php
lib/Model/PostBeefRequestBeefInnerClassesSteersLt1Traded.php
lib/Model/PostBeefRequestBeefInnerCowsCalving.php
lib/Model/PostBeefRequestBeefInnerFertiliser.php
lib/Model/PostBeefRequestBeefInnerFertiliserOtherFertilisersInner.php
lib/Model/PostBeefRequestBeefInnerMineralSupplementation.php
lib/Model/PostBeefRequestBurningInner.php
lib/Model/PostBeefRequestBurningInnerBurning.php
lib/Model/PostBeefRequestVegetationInner.php
lib/Model/PostBeefRequestVegetationInnerVegetation.php
lib/Model/PostBuffalo200Response.php
lib/Model/PostBuffalo200ResponseIntensities.php
lib/Model/PostBuffalo200ResponseIntermediateInner.php
lib/Model/PostBuffalo200ResponseNet.php
lib/Model/PostBuffalo200ResponseScope1.php
lib/Model/PostBuffalo200ResponseScope3.php
lib/Model/PostBuffaloRequest.php
lib/Model/PostBuffaloRequestBuffalosInner.php
lib/Model/PostBuffaloRequestBuffalosInnerClasses.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesBulls.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesBullsAutumn.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesBullsPurchasesInner.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesCalfs.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesCows.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesSteers.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesTradeBulls.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesTradeCalfs.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesTradeCows.php
lib/Model/PostBuffaloRequestBuffalosInnerClassesTradeSteers.php
lib/Model/PostBuffaloRequestBuffalosInnerCowsCalving.php
lib/Model/PostBuffaloRequestBuffalosInnerSeasonalCalving.php
lib/Model/PostBuffaloRequestVegetationInner.php
lib/Model/PostCotton200Response.php
lib/Model/PostCotton200ResponseIntermediateInner.php
lib/Model/PostCotton200ResponseIntermediateInnerIntensities.php
lib/Model/PostCotton200ResponseNet.php
lib/Model/PostCotton200ResponseScope1.php
lib/Model/PostCotton200ResponseScope3.php
lib/Model/PostCottonRequest.php
lib/Model/PostCottonRequestCropsInner.php
lib/Model/PostCottonRequestVegetationInner.php
lib/Model/PostDairy200Response.php
lib/Model/PostDairy200ResponseIntensities.php
lib/Model/PostDairy200ResponseIntermediateInner.php
lib/Model/PostDairy200ResponseNet.php
lib/Model/PostDairy200ResponseScope1.php
lib/Model/PostDairy200ResponseScope3.php
lib/Model/PostDairyRequest.php
lib/Model/PostDairyRequestDairyInner.php
lib/Model/PostDairyRequestDairyInnerAreas.php
lib/Model/PostDairyRequestDairyInnerClasses.php
lib/Model/PostDairyRequestDairyInnerClassesDairyBullsGt1.php
lib/Model/PostDairyRequestDairyInnerClassesDairyBullsLt1.php
lib/Model/PostDairyRequestDairyInnerClassesHeifersGt1.php
lib/Model/PostDairyRequestDairyInnerClassesHeifersLt1.php
lib/Model/PostDairyRequestDairyInnerClassesMilkingCows.php
lib/Model/PostDairyRequestDairyInnerClassesMilkingCowsAutumn.php
lib/Model/PostDairyRequestDairyInnerManureManagementMilkingCows.php
lib/Model/PostDairyRequestDairyInnerSeasonalFertiliser.php
lib/Model/PostDairyRequestDairyInnerSeasonalFertiliserAutumn.php
lib/Model/PostDairyRequestVegetationInner.php
lib/Model/PostDeer200Response.php
lib/Model/PostDeer200ResponseIntensities.php
lib/Model/PostDeer200ResponseIntermediateInner.php
lib/Model/PostDeer200ResponseNet.php
lib/Model/PostDeerRequest.php
lib/Model/PostDeerRequestDeersInner.php
lib/Model/PostDeerRequestDeersInnerClasses.php
lib/Model/PostDeerRequestDeersInnerClassesBreedingDoes.php
lib/Model/PostDeerRequestDeersInnerClassesBucks.php
lib/Model/PostDeerRequestDeersInnerClassesFawn.php
lib/Model/PostDeerRequestDeersInnerClassesOtherDoes.php
lib/Model/PostDeerRequestDeersInnerClassesTradeBucks.php
lib/Model/PostDeerRequestDeersInnerClassesTradeDoes.php
lib/Model/PostDeerRequestDeersInnerClassesTradeFawn.php
lib/Model/PostDeerRequestDeersInnerClassesTradeOtherDoes.php
lib/Model/PostDeerRequestDeersInnerDoesFawning.php
lib/Model/PostDeerRequestDeersInnerSeasonalFawning.php
lib/Model/PostDeerRequestVegetationInner.php
lib/Model/PostFeedlot200Response.php
lib/Model/PostFeedlot200ResponseIntermediateInner.php
lib/Model/PostFeedlot200ResponseIntermediateInnerIntensities.php
lib/Model/PostFeedlot200ResponseIntermediateInnerNet.php
lib/Model/PostFeedlot200ResponseScope1.php
lib/Model/PostFeedlot200ResponseScope3.php
lib/Model/PostFeedlotRequest.php
lib/Model/PostFeedlotRequestFeedlotsInner.php
lib/Model/PostFeedlotRequestFeedlotsInnerGroupsInner.php
lib/Model/PostFeedlotRequestFeedlotsInnerGroupsInnerStaysInner.php
lib/Model/PostFeedlotRequestFeedlotsInnerPurchases.php
lib/Model/PostFeedlotRequestFeedlotsInnerPurchasesBullsGt1Inner.php
lib/Model/PostFeedlotRequestFeedlotsInnerSales.php
lib/Model/PostFeedlotRequestFeedlotsInnerSalesBullsGt1Inner.php
lib/Model/PostFeedlotRequestVegetationInner.php
lib/Model/PostGoat200Response.php
lib/Model/PostGoat200ResponseIntensities.php
lib/Model/PostGoat200ResponseIntermediateInner.php
lib/Model/PostGoat200ResponseNet.php
lib/Model/PostGoatRequest.php
lib/Model/PostGoatRequestGoatsInner.php
lib/Model/PostGoatRequestGoatsInnerClasses.php
lib/Model/PostGoatRequestGoatsInnerClassesBreedingDoesNannies.php
lib/Model/PostGoatRequestGoatsInnerClassesBucksBilly.php
lib/Model/PostGoatRequestGoatsInnerClassesKids.php
lib/Model/PostGoatRequestGoatsInnerClassesMaidenBreedingDoesNannies.php
lib/Model/PostGoatRequestGoatsInnerClassesOtherDoesCulledFemales.php
lib/Model/PostGoatRequestGoatsInnerClassesTradeBreedingDoesNannies.php
lib/Model/PostGoatRequestGoatsInnerClassesTradeBucks.php
lib/Model/PostGoatRequestGoatsInnerClassesTradeDoes.php
lib/Model/PostGoatRequestGoatsInnerClassesTradeKids.php
lib/Model/PostGoatRequestGoatsInnerClassesTradeMaidenBreedingDoesNannies.php
lib/Model/PostGoatRequestGoatsInnerClassesTradeOtherDoesCulledFemales.php
lib/Model/PostGoatRequestGoatsInnerClassesTradeWethers.php
lib/Model/PostGoatRequestGoatsInnerClassesWethers.php
lib/Model/PostGoatRequestVegetationInner.php
lib/Model/PostGrains200Response.php
lib/Model/PostGrains200ResponseIntermediateInner.php
lib/Model/PostGrains200ResponseIntermediateInnerIntensitiesWithSequestration.php
lib/Model/PostGrainsRequest.php
lib/Model/PostGrainsRequestCropsInner.php
lib/Model/PostHorticulture200Response.php
lib/Model/PostHorticulture200ResponseIntermediateInner.php
lib/Model/PostHorticulture200ResponseIntermediateInnerIntensitiesWithSequestration.php
lib/Model/PostHorticulture200ResponseScope1.php
lib/Model/PostHorticultureRequest.php
lib/Model/PostHorticultureRequestCropsInner.php
lib/Model/PostHorticultureRequestCropsInnerRefrigerantsInner.php
lib/Model/PostPork200Response.php
lib/Model/PostPork200ResponseIntensities.php
lib/Model/PostPork200ResponseIntermediateInner.php
lib/Model/PostPork200ResponseNet.php
lib/Model/PostPork200ResponseScope1.php
lib/Model/PostPork200ResponseScope3.php
lib/Model/PostPorkRequest.php
lib/Model/PostPorkRequestPorkInner.php
lib/Model/PostPorkRequestPorkInnerClasses.php
lib/Model/PostPorkRequestPorkInnerClassesBoars.php
lib/Model/PostPorkRequestPorkInnerClassesGilts.php
lib/Model/PostPorkRequestPorkInnerClassesGrowers.php
lib/Model/PostPorkRequestPorkInnerClassesSlaughterPigs.php
lib/Model/PostPorkRequestPorkInnerClassesSows.php
lib/Model/PostPorkRequestPorkInnerClassesSowsManure.php
lib/Model/PostPorkRequestPorkInnerClassesSowsManureSpring.php
lib/Model/PostPorkRequestPorkInnerClassesSuckers.php
lib/Model/PostPorkRequestPorkInnerClassesWeaners.php
lib/Model/PostPorkRequestPorkInnerFeedProductsInner.php
lib/Model/PostPorkRequestPorkInnerFeedProductsInnerIngredients.php
lib/Model/PostPorkRequestVegetationInner.php
lib/Model/PostPoultry200Response.php
lib/Model/PostPoultry200ResponseIntensities.php
lib/Model/PostPoultry200ResponseIntermediateBroilersInner.php
lib/Model/PostPoultry200ResponseIntermediateBroilersInnerIntensities.php
lib/Model/PostPoultry200ResponseIntermediateLayersInner.php
lib/Model/PostPoultry200ResponseIntermediateLayersInnerIntensities.php
lib/Model/PostPoultry200ResponseNet.php
lib/Model/PostPoultry200ResponseScope1.php
lib/Model/PostPoultry200ResponseScope3.php
lib/Model/PostPoultryRequest.php
lib/Model/PostPoultryRequestBroilersInner.php
lib/Model/PostPoultryRequestBroilersInnerGroupsInner.php
lib/Model/PostPoultryRequestBroilersInnerGroupsInnerFeedInner.php
lib/Model/PostPoultryRequestBroilersInnerGroupsInnerFeedInnerIngredients.php
lib/Model/PostPoultryRequestBroilersInnerGroupsInnerMeatChickenGrowers.php
lib/Model/PostPoultryRequestBroilersInnerMeatChickenGrowersPurchases.php
lib/Model/PostPoultryRequestBroilersInnerMeatChickenLayersPurchases.php
lib/Model/PostPoultryRequestBroilersInnerMeatOtherPurchases.php
lib/Model/PostPoultryRequestBroilersInnerSalesInner.php
lib/Model/PostPoultryRequestLayersInner.php
lib/Model/PostPoultryRequestLayersInnerLayers.php
lib/Model/PostPoultryRequestLayersInnerLayersEggSale.php
lib/Model/PostPoultryRequestLayersInnerLayersPurchases.php
lib/Model/PostPoultryRequestLayersInnerMeatChickenLayers.php
lib/Model/PostPoultryRequestLayersInnerMeatChickenLayersEggSale.php
lib/Model/PostPoultryRequestVegetationInner.php
lib/Model/PostProcessing200Response.php
lib/Model/PostProcessing200ResponseIntensitiesInner.php
lib/Model/PostProcessing200ResponseIntermediateInner.php
lib/Model/PostProcessing200ResponseNet.php
lib/Model/PostProcessing200ResponseScope1.php
lib/Model/PostProcessing200ResponseScope3.php
lib/Model/PostProcessingRequest.php
lib/Model/PostProcessingRequestProductsInner.php
lib/Model/PostProcessingRequestProductsInnerProduct.php
lib/Model/PostRice200Response.php
lib/Model/PostRice200ResponseIntensities.php
lib/Model/PostRice200ResponseIntermediateInner.php
lib/Model/PostRice200ResponseIntermediateInnerIntensities.php
lib/Model/PostRice200ResponseScope1.php
lib/Model/PostRiceRequest.php
lib/Model/PostRiceRequestCropsInner.php
lib/Model/PostSheep200Response.php
lib/Model/PostSheep200ResponseIntermediateInner.php
lib/Model/PostSheep200ResponseIntermediateInnerIntensities.php
lib/Model/PostSheep200ResponseNet.php
lib/Model/PostSheepRequest.php
lib/Model/PostSheepRequestSheepInner.php
lib/Model/PostSheepRequestSheepInnerClasses.php
lib/Model/PostSheepRequestSheepInnerClassesRams.php
lib/Model/PostSheepRequestSheepInnerClassesRamsAutumn.php
lib/Model/PostSheepRequestSheepInnerClassesTradeEwes.php
lib/Model/PostSheepRequestSheepInnerClassesTradeLambsAndHoggets.php
lib/Model/PostSheepRequestSheepInnerEwesLambing.php
lib/Model/PostSheepRequestSheepInnerSeasonalLambing.php
lib/Model/PostSheepRequestVegetationInner.php
lib/Model/PostSheepbeef200Response.php
lib/Model/PostSheepbeef200ResponseIntensities.php
lib/Model/PostSheepbeef200ResponseIntermediate.php
lib/Model/PostSheepbeef200ResponseIntermediateBeef.php
lib/Model/PostSheepbeef200ResponseIntermediateSheep.php
lib/Model/PostSheepbeef200ResponseNet.php
lib/Model/PostSheepbeefRequest.php
lib/Model/PostSheepbeefRequestVegetationInner.php
lib/Model/PostSugar200Response.php
lib/Model/PostSugar200ResponseIntermediateInner.php
lib/Model/PostSugar200ResponseIntermediateInnerIntensities.php
lib/Model/PostSugarRequest.php
lib/Model/PostSugarRequestCropsInner.php
lib/Model/PostVineyard200Response.php
lib/Model/PostVineyard200ResponseIntermediateInner.php
lib/Model/PostVineyard200ResponseIntermediateInnerIntensities.php
lib/Model/PostVineyard200ResponseNet.php
lib/Model/PostVineyard200ResponseScope1.php
lib/Model/PostVineyard200ResponseScope3.php
lib/Model/PostVineyardRequest.php
lib/Model/PostVineyardRequestVegetationInner.php
lib/Model/PostVineyardRequestVineyardsInner.php
lib/Model/PostWildcatchfishery200Response.php
lib/Model/PostWildcatchfishery200ResponseIntensities.php
lib/Model/PostWildcatchfishery200ResponseIntermediateInner.php
lib/Model/PostWildcatchfishery200ResponseScope1.php
lib/Model/PostWildcatchfisheryRequest.php
lib/Model/PostWildcatchfisheryRequestEnterprisesInner.php
lib/Model/PostWildcatchfisheryRequestEnterprisesInnerBaitInner.php
lib/Model/PostWildseafisheries200Response.php
lib/Model/PostWildseafisheries200ResponseIntermediateInner.php
lib/Model/PostWildseafisheries200ResponseIntermediateInnerIntensities.php
lib/Model/PostWildseafisheries200ResponseScope1.php
lib/Model/PostWildseafisheries200ResponseScope3.php
lib/Model/PostWildseafisheriesRequest.php
lib/Model/PostWildseafisheriesRequestEnterprisesInner.php
lib/Model/PostWildseafisheriesRequestEnterprisesInnerBaitInner.php
lib/Model/PostWildseafisheriesRequestEnterprisesInnerCustombaitInner.php
lib/Model/PostWildseafisheriesRequestEnterprisesInnerFlightsInner.php
lib/Model/PostWildseafisheriesRequestEnterprisesInnerRefrigerantsInner.php
lib/Model/PostWildseafisheriesRequestEnterprisesInnerTransportsInner.php
lib/ObjectSerializer.php
phpunit.xml.dist
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
7.16.0
Loading