@shipengine/connect-carrier-api 4.4.0 → 4.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/app/metadata/account-connection-specification.d.ts +14 -0
- package/lib/app/metadata/account-connection-specification.js +23 -0
- package/lib/app/metadata/account-connection-specification.js.map +1 -0
- package/lib/app/metadata/carrier.d.ts +3 -0
- package/lib/app/metadata/carrier.js +3 -5
- package/lib/app/metadata/carrier.js.map +1 -1
- package/lib/app/metadata/connection-names-configuration.d.ts +13 -0
- package/lib/app/metadata/connection-names-configuration.js +19 -0
- package/lib/app/metadata/connection-names-configuration.js.map +1 -0
- package/lib/app/metadata/index.d.ts +2 -0
- package/lib/app/metadata/index.js +2 -0
- package/lib/app/metadata/index.js.map +1 -1
- package/lib/requests/base-request.d.ts +3 -0
- package/lib/requests/base-request.js +2 -0
- package/lib/requests/base-request.js.map +1 -1
- package/package.json +1 -1
- package/spec.json +6 -1
- package/src/app/metadata/account-connection-specification.ts +19 -0
- package/src/app/metadata/carrier.ts +8 -5
- package/src/app/metadata/connection-names-configuration.ts +19 -0
- package/src/app/metadata/index.ts +2 -0
- package/src/requests/base-request.ts +3 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
import { ConnectionNames } from './connection-names-configuration';
|
|
3
|
+
export declare class AccountConnectionSpecification {
|
|
4
|
+
/** @description A Connection Name is an optional feature that an integration may provide. A
|
|
5
|
+
* common use of connections is to provide the ability to connect to a sandbox or production
|
|
6
|
+
* endpoint. This collection must be a unique set of strings representing a list of connections
|
|
7
|
+
* that a user may choose to use. When present {@link DefaultConnectionName} must also be
|
|
8
|
+
* populated.*/
|
|
9
|
+
ConnectionNames?: ConnectionNames[];
|
|
10
|
+
/** @description The default connection name to use if a connection name is not selected. This
|
|
11
|
+
* value must match a value in {@link ConnectionNames}*/
|
|
12
|
+
DefaultConnectionName?: ConnectionNames;
|
|
13
|
+
}
|
|
14
|
+
export declare const AccountConnectionSpecificationSchema: Joi.ObjectSchema<any>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AccountConnectionSpecificationSchema = exports.AccountConnectionSpecification = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const joi_1 = tslib_1.__importDefault(require("joi"));
|
|
6
|
+
const connection_names_configuration_1 = require("./connection-names-configuration");
|
|
7
|
+
class AccountConnectionSpecification {
|
|
8
|
+
/** @description A Connection Name is an optional feature that an integration may provide. A
|
|
9
|
+
* common use of connections is to provide the ability to connect to a sandbox or production
|
|
10
|
+
* endpoint. This collection must be a unique set of strings representing a list of connections
|
|
11
|
+
* that a user may choose to use. When present {@link DefaultConnectionName} must also be
|
|
12
|
+
* populated.*/
|
|
13
|
+
ConnectionNames;
|
|
14
|
+
/** @description The default connection name to use if a connection name is not selected. This
|
|
15
|
+
* value must match a value in {@link ConnectionNames}*/
|
|
16
|
+
DefaultConnectionName;
|
|
17
|
+
}
|
|
18
|
+
exports.AccountConnectionSpecification = AccountConnectionSpecification;
|
|
19
|
+
exports.AccountConnectionSpecificationSchema = joi_1.default.object({
|
|
20
|
+
ConnectionNames: joi_1.default.array().items(connection_names_configuration_1.ConnectionNamesSchema).optional().unique(),
|
|
21
|
+
DefaultConnectionName: connection_names_configuration_1.ConnectionNamesSchema.required().optional(),
|
|
22
|
+
}).and('ConnectionNames', 'DefaultConnectionName'); // and is "all or nothing"; if one is present the other must be.
|
|
23
|
+
//# sourceMappingURL=account-connection-specification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-connection-specification.js","sourceRoot":"","sources":["../../../src/app/metadata/account-connection-specification.ts"],"names":[],"mappings":";;;;AAAA,sDAAsB;AACtB,qFAA0F;AAE1F,MAAa,8BAA8B;IACzC;;;;mBAIe;IACf,eAAe,CAAqB;IACpC;4DACwD;IACxD,qBAAqB,CAAmB;CACzC;AAVD,wEAUC;AAEY,QAAA,oCAAoC,GAAG,aAAG,CAAC,MAAM,CAAC;IAC7D,eAAe,EAAE,aAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,sDAAqB,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;IAC7E,qBAAqB,EAAE,sDAAqB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC,CAAC,gEAAgE"}
|
|
@@ -11,6 +11,7 @@ import Joi from 'joi';
|
|
|
11
11
|
import { NativeRatingConfiguration } from './native-rating-configuration';
|
|
12
12
|
import { Zone } from './zone';
|
|
13
13
|
import { PackageRatingGroup } from './package-rating-group';
|
|
14
|
+
import { AccountConnectionSpecification } from './account-connection-specification';
|
|
14
15
|
/** @description Basic structure for each carrier */
|
|
15
16
|
export interface Carrier {
|
|
16
17
|
/** @description Defines UI Modals for connecting and updating settings */
|
|
@@ -58,5 +59,7 @@ export interface Carrier {
|
|
|
58
59
|
Zones?: Zone[];
|
|
59
60
|
/** @description List of package rating groups for the carrier */
|
|
60
61
|
PackageRatingGroups?: PackageRatingGroup[];
|
|
62
|
+
/** @description Specifies account connection information */
|
|
63
|
+
AccountConnection?: AccountConnectionSpecification;
|
|
61
64
|
}
|
|
62
65
|
export declare const CarrierSchema: Joi.ObjectSchema<any>;
|
|
@@ -17,6 +17,7 @@ const file_exists_1 = require("./custom-validators/file-exists");
|
|
|
17
17
|
const zone_1 = require("./zone");
|
|
18
18
|
const connect_runtime_1 = require("@shipengine/connect-runtime");
|
|
19
19
|
const package_rating_group_1 = require("./package-rating-group");
|
|
20
|
+
const account_connection_specification_1 = require("./account-connection-specification");
|
|
20
21
|
exports.CarrierSchema = joi_1.default.object({
|
|
21
22
|
AccountModals: account_modals_1.AccountModalsSchema.required(),
|
|
22
23
|
PackageTypes: joi_1.default.array().optional().items(package_type_1.PackageTypeSchema).unique('Id'),
|
|
@@ -53,12 +54,9 @@ exports.CarrierSchema = joi_1.default.object({
|
|
|
53
54
|
.message('Images.Logo must be a svg file.'),
|
|
54
55
|
}).required(),
|
|
55
56
|
NativeRating: native_rating_configuration_1.NativeRatingConfigurationSchema.optional(),
|
|
56
|
-
DocumentTemplate: joi_1.default.string()
|
|
57
|
-
.optional()
|
|
58
|
-
.custom(file_exists_1.fileExists, 'template exists')
|
|
59
|
-
.pattern(new RegExp('^.*.carrier$'))
|
|
60
|
-
.message('Template file must have .carrier extension.'),
|
|
57
|
+
DocumentTemplate: joi_1.default.string().optional().custom(file_exists_1.fileExists, 'template exists'),
|
|
61
58
|
Zones: joi_1.default.array().optional().items(zone_1.ZoneSchema).unique('ApiCode'),
|
|
62
59
|
PackageRatingGroups: joi_1.default.array().optional().items(package_rating_group_1.PackageRatingGroupSchema).unique('Id'),
|
|
60
|
+
AccountConnection: account_connection_specification_1.AccountConnectionSpecificationSchema.optional(),
|
|
63
61
|
}).with('DocumentTemplate', 'ApiCode');
|
|
64
62
|
//# sourceMappingURL=carrier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carrier.js","sourceRoot":"","sources":["../../../src/app/metadata/carrier.ts"],"names":[],"mappings":";;;;AAAA,qDAAsE;AACtE,iDAAgE;AAChE,yDAA4E;AAC5E,uDAA6F;AAC7F,+DAAqF;AACrF,6DAAwF;AACxF,mDAA2E;AAC3E,+CAAqE;AACrE,2DAA2F;AAC3F,sDAAsB;AACtB,+EAGuC;AACvC,iEAA6D;AAC7D,iCAA0C;AAE1C,iEAAqF;AACrF,iEAAsF;
|
|
1
|
+
{"version":3,"file":"carrier.js","sourceRoot":"","sources":["../../../src/app/metadata/carrier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
export type ConnectionNames = 'sandbox' | 'production' | string;
|
|
3
|
+
export declare class ConnectionNamesConfiguration {
|
|
4
|
+
/** @description A unique list of connection names that the integration supports. */
|
|
5
|
+
connection_names: {
|
|
6
|
+
[key in ConnectionNames]: any;
|
|
7
|
+
};
|
|
8
|
+
/** @description The connection name that will be used when none is selected. */
|
|
9
|
+
default_connection_name: ConnectionNames;
|
|
10
|
+
}
|
|
11
|
+
export declare const ConnectionNamesSchema: Joi.AlternativesSchema;
|
|
12
|
+
export declare const MapOfObjectsSchema: Joi.ObjectSchema<any>;
|
|
13
|
+
export declare const ConnectionNamesConfigurationSchema: Joi.ObjectSchema<any>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConnectionNamesConfigurationSchema = exports.MapOfObjectsSchema = exports.ConnectionNamesSchema = exports.ConnectionNamesConfiguration = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const joi_1 = tslib_1.__importDefault(require("joi"));
|
|
6
|
+
class ConnectionNamesConfiguration {
|
|
7
|
+
/** @description A unique list of connection names that the integration supports. */
|
|
8
|
+
connection_names;
|
|
9
|
+
/** @description The connection name that will be used when none is selected. */
|
|
10
|
+
default_connection_name;
|
|
11
|
+
}
|
|
12
|
+
exports.ConnectionNamesConfiguration = ConnectionNamesConfiguration;
|
|
13
|
+
exports.ConnectionNamesSchema = joi_1.default.alternatives().try('sandbox', 'production');
|
|
14
|
+
exports.MapOfObjectsSchema = joi_1.default.object().pattern(exports.ConnectionNamesSchema, joi_1.default.object());
|
|
15
|
+
exports.ConnectionNamesConfigurationSchema = joi_1.default.object({
|
|
16
|
+
connection_names: exports.MapOfObjectsSchema.required(),
|
|
17
|
+
default_connection_name: exports.ConnectionNamesSchema.required(),
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=connection-names-configuration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-names-configuration.js","sourceRoot":"","sources":["../../../src/app/metadata/connection-names-configuration.ts"],"names":[],"mappings":";;;;AAAA,sDAAsB;AAItB,MAAa,4BAA4B;IACvC,oFAAoF;IACpF,gBAAgB,CAEd;IACF,gFAAgF;IAChF,uBAAuB,CAAmB;CAC3C;AAPD,oEAOC;AAEY,QAAA,qBAAqB,GAAG,aAAG,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACxE,QAAA,kBAAkB,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,6BAAqB,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/E,QAAA,kCAAkC,GAAG,aAAG,CAAC,MAAM,CAAC;IAC3D,gBAAgB,EAAE,0BAAkB,CAAC,QAAQ,EAAE;IAC/C,uBAAuB,EAAE,6BAAqB,CAAC,QAAQ,EAAE;CAC1D,CAAC,CAAC"}
|
|
@@ -26,4 +26,6 @@ tslib_1.__exportStar(require("./shipping-option"), exports);
|
|
|
26
26
|
tslib_1.__exportStar(require("./shipping-provider-connector"), exports);
|
|
27
27
|
tslib_1.__exportStar(require("./shipping-service"), exports);
|
|
28
28
|
tslib_1.__exportStar(require("./zone"), exports);
|
|
29
|
+
tslib_1.__exportStar(require("./connection-names-configuration"), exports);
|
|
30
|
+
tslib_1.__exportStar(require("./account-connection-specification"), exports);
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/metadata/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,4DAAkC;AAClC,+DAAqC;AACrC,oDAA0B;AAC1B,iEAAuC;AACvC,+DAAqC;AACrC,8DAAoC;AACpC,gEAAsC;AACtC,8DAAoC;AACpC,kDAAwB;AACxB,qDAA2B;AAC3B,0DAAgC;AAChC,wDAA8B;AAC9B,qDAA2B;AAC3B,wEAA8C;AAC9C,yDAA+B;AAC/B,sDAA4B;AAC5B,0DAAgC;AAChC,0DAAgC;AAChC,wEAA8C;AAC9C,gEAAsC;AACtC,4DAAkC;AAClC,wEAA8C;AAC9C,6DAAmC;AACnC,iDAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/app/metadata/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,4DAAkC;AAClC,+DAAqC;AACrC,oDAA0B;AAC1B,iEAAuC;AACvC,+DAAqC;AACrC,8DAAoC;AACpC,gEAAsC;AACtC,8DAAoC;AACpC,kDAAwB;AACxB,qDAA2B;AAC3B,0DAAgC;AAChC,wDAA8B;AAC9B,qDAA2B;AAC3B,wEAA8C;AAC9C,yDAA+B;AAC/B,sDAA4B;AAC5B,0DAAgC;AAChC,0DAAgC;AAChC,wEAA8C;AAC9C,gEAAsC;AACtC,4DAAkC;AAClC,wEAA8C;AAC9C,6DAAmC;AACnC,iDAAuB;AACvB,2EAAiD;AACjD,6EAAmD"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ConnectionNames } from '../app/metadata/connection-names-configuration';
|
|
1
2
|
import { Authorization } from '../models';
|
|
2
3
|
export declare class BaseRequest {
|
|
3
4
|
transaction_id: string;
|
|
@@ -5,4 +6,6 @@ export declare class BaseRequest {
|
|
|
5
6
|
metadata?: {
|
|
6
7
|
[key: string]: any;
|
|
7
8
|
};
|
|
9
|
+
/** @description The name of the connection used, if this app has {@link ConnectionNamesConfiguration} defined*/
|
|
10
|
+
connection_name?: ConnectionNames;
|
|
8
11
|
}
|
|
@@ -5,6 +5,8 @@ class BaseRequest {
|
|
|
5
5
|
transaction_id;
|
|
6
6
|
authorization;
|
|
7
7
|
metadata;
|
|
8
|
+
/** @description The name of the connection used, if this app has {@link ConnectionNamesConfiguration} defined*/
|
|
9
|
+
connection_name;
|
|
8
10
|
}
|
|
9
11
|
exports.BaseRequest = BaseRequest;
|
|
10
12
|
//# sourceMappingURL=base-request.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-request.js","sourceRoot":"","sources":["../../src/requests/base-request.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"base-request.js","sourceRoot":"","sources":["../../src/requests/base-request.ts"],"names":[],"mappings":";;;AAGA,MAAa,WAAW;IACtB,cAAc,CAAU;IACxB,aAAa,CAAiB;IAC9B,QAAQ,CAA0B;IAClC,gHAAgH;IAChH,eAAe,CAAmB;CACnC;AAND,kCAMC"}
|
package/package.json
CHANGED
package/spec.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Shipping API",
|
|
5
5
|
"description": "This API specification describes the canonical ShipEngine Shipping API connector module.",
|
|
6
|
-
"version": "1.19.
|
|
6
|
+
"version": "1.19.1"
|
|
7
7
|
},
|
|
8
8
|
"paths": {
|
|
9
9
|
"/Register": {
|
|
@@ -853,6 +853,11 @@
|
|
|
853
853
|
"type": "object",
|
|
854
854
|
"additionalProperties": { },
|
|
855
855
|
"nullable": true
|
|
856
|
+
},
|
|
857
|
+
"connection_name": {
|
|
858
|
+
"type": "string",
|
|
859
|
+
"description": "The name of the connection to use, if this app has connection names defined",
|
|
860
|
+
"nullable": true
|
|
856
861
|
}
|
|
857
862
|
},
|
|
858
863
|
"additionalProperties": false
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
import { ConnectionNames, ConnectionNamesSchema } from './connection-names-configuration';
|
|
3
|
+
|
|
4
|
+
export class AccountConnectionSpecification {
|
|
5
|
+
/** @description A Connection Name is an optional feature that an integration may provide. A
|
|
6
|
+
* common use of connections is to provide the ability to connect to a sandbox or production
|
|
7
|
+
* endpoint. This collection must be a unique set of strings representing a list of connections
|
|
8
|
+
* that a user may choose to use. When present {@link DefaultConnectionName} must also be
|
|
9
|
+
* populated.*/
|
|
10
|
+
ConnectionNames?: ConnectionNames[];
|
|
11
|
+
/** @description The default connection name to use if a connection name is not selected. This
|
|
12
|
+
* value must match a value in {@link ConnectionNames}*/
|
|
13
|
+
DefaultConnectionName?: ConnectionNames;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const AccountConnectionSpecificationSchema = Joi.object({
|
|
17
|
+
ConnectionNames: Joi.array().items(ConnectionNamesSchema).optional().unique(),
|
|
18
|
+
DefaultConnectionName: ConnectionNamesSchema.required().optional(),
|
|
19
|
+
}).and('ConnectionNames', 'DefaultConnectionName'); // and is "all or nothing"; if one is present the other must be.
|
|
@@ -17,6 +17,10 @@ import { Zone, ZoneSchema } from './zone';
|
|
|
17
17
|
|
|
18
18
|
import { ApiCodeRegex, ApiCodeValidationMessage } from '@shipengine/connect-runtime';
|
|
19
19
|
import { PackageRatingGroup, PackageRatingGroupSchema } from './package-rating-group';
|
|
20
|
+
import {
|
|
21
|
+
AccountConnectionSpecification,
|
|
22
|
+
AccountConnectionSpecificationSchema,
|
|
23
|
+
} from './account-connection-specification';
|
|
20
24
|
|
|
21
25
|
/** @description Basic structure for each carrier */
|
|
22
26
|
export interface Carrier {
|
|
@@ -65,6 +69,8 @@ export interface Carrier {
|
|
|
65
69
|
Zones?: Zone[];
|
|
66
70
|
/** @description List of package rating groups for the carrier */
|
|
67
71
|
PackageRatingGroups?: PackageRatingGroup[];
|
|
72
|
+
/** @description Specifies account connection information */
|
|
73
|
+
AccountConnection?: AccountConnectionSpecification;
|
|
68
74
|
}
|
|
69
75
|
|
|
70
76
|
export const CarrierSchema = Joi.object({
|
|
@@ -107,11 +113,8 @@ export const CarrierSchema = Joi.object({
|
|
|
107
113
|
.message('Images.Logo must be a svg file.'),
|
|
108
114
|
}).required(),
|
|
109
115
|
NativeRating: NativeRatingConfigurationSchema.optional(),
|
|
110
|
-
DocumentTemplate: Joi.string()
|
|
111
|
-
.optional()
|
|
112
|
-
.custom(fileExists, 'template exists')
|
|
113
|
-
.pattern(new RegExp('^.*.carrier$'))
|
|
114
|
-
.message('Template file must have .carrier extension.'),
|
|
116
|
+
DocumentTemplate: Joi.string().optional().custom(fileExists, 'template exists'),
|
|
115
117
|
Zones: Joi.array().optional().items(ZoneSchema).unique('ApiCode'),
|
|
116
118
|
PackageRatingGroups: Joi.array().optional().items(PackageRatingGroupSchema).unique('Id'),
|
|
119
|
+
AccountConnection: AccountConnectionSpecificationSchema.optional(),
|
|
117
120
|
}).with('DocumentTemplate', 'ApiCode');
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Joi from 'joi';
|
|
2
|
+
|
|
3
|
+
export type ConnectionNames = 'sandbox' | 'production' | string;
|
|
4
|
+
|
|
5
|
+
export class ConnectionNamesConfiguration {
|
|
6
|
+
/** @description A unique list of connection names that the integration supports. */
|
|
7
|
+
connection_names!: {
|
|
8
|
+
[key in ConnectionNames]: any;
|
|
9
|
+
};
|
|
10
|
+
/** @description The connection name that will be used when none is selected. */
|
|
11
|
+
default_connection_name!: ConnectionNames;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const ConnectionNamesSchema = Joi.alternatives().try('sandbox', 'production');
|
|
15
|
+
export const MapOfObjectsSchema = Joi.object().pattern(ConnectionNamesSchema, Joi.object());
|
|
16
|
+
export const ConnectionNamesConfigurationSchema = Joi.object({
|
|
17
|
+
connection_names: MapOfObjectsSchema.required(),
|
|
18
|
+
default_connection_name: ConnectionNamesSchema.required(),
|
|
19
|
+
});
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { ConnectionNames } from '../app/metadata/connection-names-configuration';
|
|
1
2
|
import { Authorization } from '../models';
|
|
2
3
|
|
|
3
4
|
export class BaseRequest {
|
|
4
5
|
transaction_id!: string;
|
|
5
6
|
authorization?: Authorization;
|
|
6
7
|
metadata?: { [key: string]: any };
|
|
8
|
+
/** @description The name of the connection used, if this app has {@link ConnectionNamesConfiguration} defined*/
|
|
9
|
+
connection_name?: ConnectionNames;
|
|
7
10
|
}
|