Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
dcb9143
Only require properties in merged schemas when required by all source…
bob2021 Jul 25, 2025
2994573
Move generator constants to autoload-dev to avoid naming conflicts in…
bob2021 Jul 25, 2025
0dbd0b9
Add account registration API.
bob2021 Jul 25, 2025
46648c8
Do not merge schemas unless all properties have the same names and ty…
bob2021 Jul 28, 2025
3773b6b
Update all schemas (except global-trade which is throwing an error).
bob2021 Jul 28, 2025
73208b7
Fix multipart/form-data requests failing.
bob2021 Jul 30, 2025
d6ee7f1
Fix bad image upload schema.
bob2021 Jul 30, 2025
58bea0f
Delete old DTO files.
bob2021 Aug 1, 2025
74b6b3c
Add ship-dg-hazmat schema.
bob2021 Aug 11, 2025
982695e
Add new APIs to connector class.
bob2021 Aug 11, 2025
f28ed4e
Update README.md.
bob2021 Aug 12, 2025
7c7fa1f
Fix ship-dg-hazmat doesn't match actual response.
bob2021 Aug 12, 2025
06d2f7c
Fix ship-dg-hazmat doesn't match actual response.
bob2021 Aug 12, 2025
3222718
Do not require DangerousGoodsContainer.packingType.
bob2021 Aug 12, 2025
fec7fee
Do not require HazardousCommodityDescription.packingType.reportableQu…
bob2021 Aug 12, 2025
7b087ec
Do not require HazardousCommodityDescription.packingGroup
bob2021 Aug 12, 2025
73094a3
Update highsidelabs/saloon-sdk-generator package.
bob2021 Aug 26, 2025
67f2df0
Do not require ResponsiblePartyParty.contact/address.
bob2021 Aug 27, 2025
7f22598
Do not require any fields for PartyAddress or PartyContact.
bob2021 Aug 28, 2025
f41c9d2
Allow locale to be set.
bob2021 Sep 2, 2025
a805d09
Add missing alertType property to Ship Alert3P.
bob2021 Sep 2, 2025
4c6eaf9
Do not remove trailing slash from paths.
bob2021 Sep 3, 2025
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
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ $json = $response->json();
$dto = $response->dto();
```

It is recommended to use named parameters with DTOs, as the order of parameters could change when the SDK is updated.

To figure out which DTO(s) need(s) to be passed to a particular endpoint method, use your editor to inspect the method's arguments:

![](img/dto-hint.png)
Expand Down
10 changes: 5 additions & 5 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@
"autoload": {
"psr-4": {
"ShipStream\\FedEx\\": "src/"
},
"files": [
"src/Generator/constants.php"
]
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"files": [
"src/Generator/constants.php"
]
},
"scripts": {
"lint": [
Expand Down
20 changes: 20 additions & 0 deletions resources/apis.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
{
"account-registration": {
"name" : "Account Registration",
"versions": [
{
"version": "1",
"url": "https://developer.fedex.com/wirc/json/api_groups/AccountRegistrationAPI/AccountRegistration-Resource.json"
}
]
},
"authorization": {
"name": "Authorization",
"versions": [
Expand Down Expand Up @@ -122,6 +131,17 @@
}
]
},
"ship-dg-hazmat": {
"name": "Ship DG Hazmat",
"versions": [
{
"version": "1",
"url": [
"https://developer.fedex.com/wirc/json/api_groups/ShipDGHazmatAPI/ShipDGHazmatAPI-Resource.json"
]
}
]
},
"track": {
"name": "Track",
"versions": [
Expand Down
171 changes: 170 additions & 1 deletion resources/metadata/modifications.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,44 @@
{
"account-registration": {
"1": [
{
"comment": "Remove broken example references from 400 response in address validation endpoint",
"action": "delete",
"path": "paths./registration/v2/address/keysgeneration.post.responses.400.content.application/json.examples"
},
{
"comment": "Remove broken example references from 400 response in PIN validation endpoint",
"action": "delete",
"path": "paths./registration/v2/pin/keysgeneration.post.responses.400.content.application/json.examples"
},
{
"comment": "Remove broken example references from 400 response in invoice validation endpoint",
"action": "delete",
"path": "paths./registration/v2/invoice/keysgeneration.post.responses.400.content.application/json.examples"
},
{
"comment": "Remove broken example references from 400 response in PIN generation endpoint",
"action": "delete",
"path": "paths./registration/v2/customerkeys/pingeneration.post.responses.400.content.application/json.examples"
},
{
"comment": "Set correct type of ErrorParameter key",
"action": "merge",
"path": "components.schemas.ErrorParameter.properties.key",
"value": {
"type": "string"
}
},
{
"comment": "Set correct type of ErrorParameter value",
"action": "merge",
"path": "components.schemas.ErrorParameter.properties.value",
"value": {
"type": "string"
}
}
]
},
"address-validation": {
"1": [
{
Expand Down Expand Up @@ -36,6 +76,77 @@
"value": {
"$ref": "#/components/schemas/Alert_3P"
}
}, {
"comment": "Add missing alertType property to Alert_3P",
"action": "merge",
"path": "components.schemas.Alert_3P.properties",
"value": {
"alertType": {
"type": "string",
"description": "Specifies the api alert type.",
"example": "NOTE",
"enum": [
"NOTE",
"WARNING"
]
}
}
}, {
" comment": "Remove required fields from PartyAddress",
"action": "delete",
"path": "components.schemas.PartyAddress.required"
}, {
"comment": "Remove required fields from PartyContact",
"action": "delete",
"path": "components.schemas.PartyContact.required"
}
]
},
"ship-dg-hazmat": {
"1": [
{
"comment": "The type of Surcharge.amount is float, not Money",
"action": "replace",
"path": "components.schemas.Surcharge.properties.amount",
"value": {
"description": "Specifies the Surcharge Amount.",
"type": "number",
"format": "double"
}
}, {
"comment": "The type of the BinaryBarcode.value is string, not array of strings",
"action": "replace",
"path": "components.schemas.BinaryBarcode.properties.value",
"value": {
"type": "string",
"format": "byte",
"description": "The data content of this instance.<br> Example: \"value\"",
"example": "value"
}
}, {
"comment": "DangerousGoodsContainer.packingType is not actually required.",
"action": "delete",
"path": "components.schemas.DangerousGoodsContainer.required"
}, {
"comment": "HazardousCommodityDescription.reportableQuantity and packingGroup are not actually required.",
"action": "delete",
"path": "components.schemas.HazardousCommodityDescription.required"
}, {
"comment": "ResponsiblePartyParty address and contact are not actually required.",
"action": "delete",
"path": "components.schemas.ResponsiblePartyParty.required"
}, {
"comment": "Remove required fields from PartyAddress",
"action": "delete",
"path": "components.schemas.PartyAddress.required"
}, {
"comment": "Remove required fields from PartyAddress",
"action": "delete",
"path": "components.schemas.PartyAddress.required"
}, {
"comment": "Remove required fields from PartyContact",
"action": "delete",
"path": "components.schemas.PartyContact.required"
}
]
},
Expand All @@ -60,5 +171,63 @@
]
}
]
},
"trade-documents-upload": {
"1": [
{
"comment": "Define a container for FullSchema-ImageUploadServiceInputVO.properties.document. Move rules property up one level. See https://stackoverflow.com/questions/78593938/restful-fedex-trade-document-upload-api-cant-upload-signature-or-letterhead-i",
"action": "merge",
"path": "components.schemas",
"value": {
"DocumentContainer": {
"required": [
"document",
"rules"
],
"type": "object",
"properties": {
"document": {
"$ref": "#/components/schemas/Document"
},
"rules": {
"$ref": "#/components/schemas/Document_rules"
}
},
"description": "A container for the document and rules."
}
}
},
{
"comment": "Wrap FullSchema-ImageUploadServiceInputVO.properties.document in DocumentContainer. Define document before attachment else error 1001 is thrown.",
"action": "replace",
"path": "components.schemas.FullSchema-ImageUploadServiceInputVO.properties",
"value": {
"document": {
"$ref": "#/components/schemas/DocumentContainer"
},
"attachment": {
"type": "string",
"description": "Input the actual image file to be uploaded.",
"format": "file"
}
}
},
{
"comment": "Delete moved `FullSchema-ImageUploadServiceInputVO.properties.rules` property.",
"action": "delete",
"path": "components.schemas.Document.properties.rules"
},
{
"comment": "Delete moved `FullSchema-ImageUploadServiceInputVO.properties.rules` from required properties.",
"action": "replace",
"path": "components.schemas.Document.required",
"value": [
"contentType",
"meta",
"name",
"referenceId"
]
}
]
}
}
}
Loading
Loading