{
	"info": {
		"_postman_id": "0ede09ab-ce03-483d-aaba-e23befa9f22e",
		"name": "Rate Shop (Dsco)",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
		"_exporter_id": "37791397"
	},
	"item": [
		{
			"name": "Rate Shop Order",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				},
				{
					"listen": "prerequest",
					"script": {
						"exec": [
							"const baseUrl = pm.environment.get('base_url');",
							"const clientId = pm.environment.get('client_id');",
							"const expiresAt = pm.environment.get('expires_at');",
							"const clientSecret = pm.environment.get('client_secret');",
							"const currentTime = Math.floor(Date.now() / 1000);",
							"const postRequest = {",
							"    url: `${ baseUrl }/api/v3/oauth2/token`,",
							"    method: 'POST',",
							"    timeout: 5000,",
							"    header: {",
							"        'Content-Type': 'application/x-www-form-urlencoded'",
							"    },",
							"    body: {",
							"        mode: 'urlencoded',",
							"        urlencoded: [",
							"            { key: 'grant_type', value: 'client_credentials' },",
							"            { key: 'client_id', value: clientId },",
							"            { key: 'client_secret', value: clientSecret }",
							"        ]",
							"    }",
							"};",
							"if (expiresAt && expiresAt <= currentTime) {",
							"    pm.sendRequest(postRequest, function (err, res) {",
							"        if (err) {",
							"            console.error(err);",
							"            return;",
							"        }",
							"        const { access_token, expires_in } = res.json();",
							"        const expiresAt = parseInt(expires_in) + Math.floor(Date.now() / 1000);",
							"        pm.environment.set('access_token', access_token);",
							"        pm.environment.set('expires_at', expiresAt);",
							"    });",
							"}",
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				}
			],
			"request": {
				"auth": {
					"type": "bearer",
					"bearer": [
						{
							"key": "token",
							"value": "{{access_token}}",
							"type": "string"
						}
					]
				},
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json"
					},
					{
						"key": "Accept",
						"value": "application/json"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"poNumber\": \"{{poNumber}}\"\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "{{base_url}}/api/v3/rateshop",
					"host": [
						"{{base_url}}"
					],
					"path": [
						"api",
						"v3",
						"rateshop"
					]
				}
			},
			"response": []
		},
		{
			"name": "Rate Shop Order (carrier pick-up date today)",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				},
				{
					"listen": "prerequest",
					"script": {
						"exec": [
							"const baseUrl = pm.environment.get('base_url');",
							"const clientId = pm.environment.get('client_id');",
							"const expiresAt = pm.environment.get('expires_at');",
							"const clientSecret = pm.environment.get('client_secret');",
							"const currentTime = Math.floor(Date.now() / 1000);",
							"const postRequest = {",
							"    url: `${ baseUrl }/api/v3/oauth2/token`,",
							"    method: 'POST',",
							"    timeout: 5000,",
							"    header: {",
							"        'Content-Type': 'application/x-www-form-urlencoded'",
							"    },",
							"    body: {",
							"        mode: 'urlencoded',",
							"        urlencoded: [",
							"            { key: 'grant_type', value: 'client_credentials' },",
							"            { key: 'client_id', value: clientId },",
							"            { key: 'client_secret', value: clientSecret }",
							"        ]",
							"    }",
							"};",
							"if (expiresAt && expiresAt <= currentTime) {",
							"    pm.sendRequest(postRequest, function (err, res) {",
							"        if (err) {",
							"            console.error(err);",
							"            return;",
							"        }",
							"        const { access_token, expires_in } = res.json();",
							"        const expiresAt = parseInt(expires_in) + Math.floor(Date.now() / 1000);",
							"        pm.environment.set('access_token', access_token);",
							"        pm.environment.set('expires_at', expiresAt);",
							"    });",
							"}",
							"const date = new Date().toISOString().split('T')[0];",
							"pm.collectionVariables.set(\"dateToday\", date);",
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				}
			],
			"request": {
				"auth": {
					"type": "bearer",
					"bearer": [
						{
							"key": "token",
							"value": "{{access_token}}",
							"type": "string"
						}
					]
				},
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json"
					},
					{
						"key": "Accept",
						"value": "application/json"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"carrierPickupDate\": \"{{dateToday}}\",\n    \"poNumber\": \"{{poNumber}}\"\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "{{base_url}}/api/v3/rateshop",
					"host": [
						"{{base_url}}"
					],
					"path": [
						"api",
						"v3",
						"rateshop"
					]
				}
			},
			"response": []
		},
		{
			"name": "Rate Shop Order (custom carrier pick-up date)",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				},
				{
					"listen": "prerequest",
					"script": {
						"exec": [
							"const baseUrl = pm.environment.get('base_url');",
							"const clientId = pm.environment.get('client_id');",
							"const expiresAt = pm.environment.get('expires_at');",
							"const clientSecret = pm.environment.get('client_secret');",
							"const currentTime = Math.floor(Date.now() / 1000);",
							"const postRequest = {",
							"    url: `${ baseUrl }/api/v3/oauth2/token`,",
							"    method: 'POST',",
							"    timeout: 5000,",
							"    header: {",
							"        'Content-Type': 'application/x-www-form-urlencoded'",
							"    },",
							"    body: {",
							"        mode: 'urlencoded',",
							"        urlencoded: [",
							"            { key: 'grant_type', value: 'client_credentials' },",
							"            { key: 'client_id', value: clientId },",
							"            { key: 'client_secret', value: clientSecret }",
							"        ]",
							"    }",
							"};",
							"if (expiresAt && expiresAt <= currentTime) {",
							"    pm.sendRequest(postRequest, function (err, res) {",
							"        if (err) {",
							"            console.error(err);",
							"            return;",
							"        }",
							"        const { access_token, expires_in } = res.json();",
							"        const expiresAt = parseInt(expires_in) + Math.floor(Date.now() / 1000);",
							"        pm.environment.set('access_token', access_token);",
							"        pm.environment.set('expires_at', expiresAt);",
							"    });",
							"}",
							"const date = new Date().toISOString().split('T')[0];",
							"pm.collectionVariables.set(\"dateToday\", date);",
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				}
			],
			"request": {
				"auth": {
					"type": "bearer",
					"bearer": [
						{
							"key": "token",
							"value": "{{access_token}}",
							"type": "string"
						}
					]
				},
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json"
					},
					{
						"key": "Accept",
						"value": "application/json"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"carrierPickupDate\": \"{{carrierPickupDate}}\",\n    \"poNumber\": \"{{poNumber}}\"\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "{{base_url}}/api/v3/rateshop",
					"host": [
						"{{base_url}}"
					],
					"path": [
						"api",
						"v3",
						"rateshop"
					]
				}
			},
			"response": []
		},
		{
			"name": "Rate Shop Order (override to signature-required ship method using service level and signatureRequired flag)",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				},
				{
					"listen": "prerequest",
					"script": {
						"exec": [
							"const baseUrl = pm.environment.get('base_url');",
							"const clientId = pm.environment.get('client_id');",
							"const expiresAt = pm.environment.get('expires_at');",
							"const clientSecret = pm.environment.get('client_secret');",
							"const currentTime = Math.floor(Date.now() / 1000);",
							"const postRequest = {",
							"    url: `${ baseUrl }/api/v3/oauth2/token`,",
							"    method: 'POST',",
							"    timeout: 5000,",
							"    header: {",
							"        'Content-Type': 'application/x-www-form-urlencoded'",
							"    },",
							"    body: {",
							"        mode: 'urlencoded',",
							"        urlencoded: [",
							"            { key: 'grant_type', value: 'client_credentials' },",
							"            { key: 'client_id', value: clientId },",
							"            { key: 'client_secret', value: clientSecret }",
							"        ]",
							"    }",
							"};",
							"if (expiresAt && expiresAt <= currentTime) {",
							"    pm.sendRequest(postRequest, function (err, res) {",
							"        if (err) {",
							"            console.error(err);",
							"            return;",
							"        }",
							"        const { access_token, expires_in } = res.json();",
							"        const expiresAt = parseInt(expires_in) + Math.floor(Date.now() / 1000);",
							"        pm.environment.set('access_token', access_token);",
							"        pm.environment.set('expires_at', expiresAt);",
							"    });",
							"}",
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				}
			],
			"request": {
				"auth": {
					"type": "bearer",
					"bearer": [
						{
							"key": "token",
							"value": "{{access_token}}",
							"type": "string"
						}
					]
				},
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json"
					},
					{
						"key": "Accept",
						"value": "application/json"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"originalShipMethod\": \"UPCG\",\n    \"signatureRequired\": true,\n    \"poNumber\": \"{{poNumber}}\"\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "{{base_url}}/api/v3/rateshop",
					"host": [
						"{{base_url}}"
					],
					"path": [
						"api",
						"v3",
						"rateshop"
					]
				}
			},
			"response": []
		},
		{
			"name": "Rate Shop Order (override to signature-required ship method using service level only)",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				},
				{
					"listen": "prerequest",
					"script": {
						"exec": [
							"const baseUrl = pm.environment.get('base_url');",
							"const clientId = pm.environment.get('client_id');",
							"const expiresAt = pm.environment.get('expires_at');",
							"const clientSecret = pm.environment.get('client_secret');",
							"const currentTime = Math.floor(Date.now() / 1000);",
							"const postRequest = {",
							"    url: `${ baseUrl }/api/v3/oauth2/token`,",
							"    method: 'POST',",
							"    timeout: 5000,",
							"    header: {",
							"        'Content-Type': 'application/x-www-form-urlencoded'",
							"    },",
							"    body: {",
							"        mode: 'urlencoded',",
							"        urlencoded: [",
							"            { key: 'grant_type', value: 'client_credentials' },",
							"            { key: 'client_id', value: clientId },",
							"            { key: 'client_secret', value: clientSecret }",
							"        ]",
							"    }",
							"};",
							"if (expiresAt && expiresAt <= currentTime) {",
							"    pm.sendRequest(postRequest, function (err, res) {",
							"        if (err) {",
							"            console.error(err);",
							"            return;",
							"        }",
							"        const { access_token, expires_in } = res.json();",
							"        const expiresAt = parseInt(expires_in) + Math.floor(Date.now() / 1000);",
							"        pm.environment.set('access_token', access_token);",
							"        pm.environment.set('expires_at', expiresAt);",
							"    });",
							"}",
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				}
			],
			"request": {
				"auth": {
					"type": "bearer",
					"bearer": [
						{
							"key": "token",
							"value": "{{access_token}}",
							"type": "string"
						}
					]
				},
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json"
					},
					{
						"key": "Accept",
						"value": "application/json"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"originalShipMethod\": \"U2AQ\",\n    \"poNumber\": \"{{poNumber}}\"\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "{{base_url}}/api/v3/rateshop",
					"host": [
						"{{base_url}}"
					],
					"path": [
						"api",
						"v3",
						"rateshop"
					]
				}
			},
			"response": []
		},
		{
			"name": "Rate Shop Order (all parameters)",
			"event": [
				{
					"listen": "test",
					"script": {
						"exec": [
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				},
				{
					"listen": "prerequest",
					"script": {
						"exec": [
							"const baseUrl = pm.environment.get('base_url');",
							"const clientId = pm.environment.get('client_id');",
							"const expiresAt = pm.environment.get('expires_at');",
							"const clientSecret = pm.environment.get('client_secret');",
							"const currentTime = Math.floor(Date.now() / 1000);",
							"const postRequest = {",
							"    url: `${ baseUrl }/api/v3/oauth2/token`,",
							"    method: 'POST',",
							"    timeout: 5000,",
							"    header: {",
							"        'Content-Type': 'application/x-www-form-urlencoded'",
							"    },",
							"    body: {",
							"        mode: 'urlencoded',",
							"        urlencoded: [",
							"            { key: 'grant_type', value: 'client_credentials' },",
							"            { key: 'client_id', value: clientId },",
							"            { key: 'client_secret', value: clientSecret }",
							"        ]",
							"    }",
							"};",
							"if (expiresAt && expiresAt <= currentTime) {",
							"    pm.sendRequest(postRequest, function (err, res) {",
							"        if (err) {",
							"            console.error(err);",
							"            return;",
							"        }",
							"        const { access_token, expires_in } = res.json();",
							"        const expiresAt = parseInt(expires_in) + Math.floor(Date.now() / 1000);",
							"        pm.environment.set('access_token', access_token);",
							"        pm.environment.set('expires_at', expiresAt);",
							"    });",
							"}",
							""
						],
						"type": "text/javascript",
						"packages": {},
						"requests": {}
					}
				}
			],
			"request": {
				"auth": {
					"type": "bearer",
					"bearer": [
						{
							"key": "token",
							"value": "{{access_token}}",
							"type": "string"
						}
					]
				},
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json"
					},
					{
						"key": "Accept",
						"value": "application/json"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"originalShipMethod\": \"UPCG\",\n    \"shipMethods\": [\"FECG\", \"UPCG\"],\n    \"signatureRequired\": true,\n    \"carrierPickupDate\": \"{{carrierPickupDate}}\",\n    \"promiseDate\": \"{{promiseDate}}\",\n    \"warehouseCode\": \"{{warehouseCode}}\",\n    \"poNumber\": \"{{poNumber}}\"\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "{{base_url}}/api/v3/rateshop",
					"host": [
						"{{base_url}}"
					],
					"path": [
						"api",
						"v3",
						"rateshop"
					]
				}
			},
			"response": []
		}
	],
	"auth": {
		"type": "oauth2",
		"oauth2": [
			{
				"key": "refreshRequestParams",
				"value": [],
				"type": "any"
			},
			{
				"key": "tokenRequestParams",
				"value": [],
				"type": "any"
			},
			{
				"key": "authRequestParams",
				"value": [],
				"type": "any"
			},
			{
				"key": "challengeAlgorithm",
				"value": "S256",
				"type": "string"
			},
			{
				"key": "grant_type",
				"value": "client_credentials",
				"type": "string"
			},
			{
				"key": "clientSecret",
				"value": "{{client_secret}}",
				"type": "string"
			},
			{
				"key": "clientId",
				"value": "{{client_id}}",
				"type": "string"
			},
			{
				"key": "addTokenTo",
				"value": "header",
				"type": "string"
			},
			{
				"key": "client_authentication",
				"value": "body",
				"type": "string"
			},
			{
				"key": "accessTokenUrl",
				"value": "{{base_url}}/api/v3/oauth2/token",
				"type": "string"
			}
		]
	},
	"event": [
		{
			"listen": "prerequest",
			"script": {
				"type": "text/javascript",
				"exec": [
					""
				]
			}
		},
		{
			"listen": "test",
			"script": {
				"type": "text/javascript",
				"exec": [
					""
				]
			}
		}
	]
}