{
  "title": "06-charge-scope",
  "steps": [
    {
      "key": "create-definition-division",
      "method": "POST",
      "path": "/api/divisions",
      "credential": "author",
      "request": {
        "meta": {
          "request_id": "req-definition-division-{{namespace}}",
          "idempotency_key": "idem-definition-division-{{namespace}}"
        },
        "data": {
          "type": "division",
          "attributes": {
            "division_code": "{{division_code}}",
            "state": "active"
          }
        }
      },
      "expect": {
        "status": 201
      },
      "extract": {
        "division_id": "data.id"
      }
    },
    {
      "key": "validate-definition-pass-1",
      "method": "POST",
      "path": "/api/divisions/{{division_id}}/shipping-method-definition/validate",
      "credential": "author",
      "expect": {
        "status": 200
      },
      "file": "definition-1.json",
      "request": {
        "meta": {
          "request_id": "req-validate-definition-pass-1-{{namespace}}",
          "idempotency_key": "idem-validate-definition-pass-1-{{namespace}}"
        }
      }
    },
    {
      "key": "plan-definition-pass-1",
      "method": "POST",
      "path": "/api/divisions/{{division_id}}/shipping-method-definition/plan",
      "credential": "author",
      "expect": {
        "status": 200,
        "values": {
          "data.attributes.succeeded": true
        }
      },
      "file": "definition-1.json",
      "request": {
        "meta": {
          "request_id": "req-plan-definition-pass-1-{{namespace}}",
          "idempotency_key": "idem-plan-definition-pass-1-{{namespace}}"
        }
      }
    },
    {
      "key": "apply-definition-pass-1",
      "method": "POST",
      "path": "/api/divisions/{{division_id}}/shipping-method-definition/apply",
      "credential": "author",
      "expect": {
        "status": 200,
        "values": {
          "data.attributes.succeeded": true
        }
      },
      "file": "definition-1.json",
      "request": {
        "meta": {
          "request_id": "req-apply-definition-pass-1-{{namespace}}",
          "idempotency_key": "idem-apply-definition-pass-1-{{namespace}}"
        }
      }
    },
    {
      "key": "export-definition-pass-1",
      "method": "GET",
      "path": "/api/divisions/{{division_id}}/shipping-method-definition/export",
      "credential": "read",
      "request": null,
      "expect": {
        "status": 200
      }
    },
    {
      "key": "issue-runtime_1",
      "method": "POST",
      "path": "/api/access-tokens",
      "credential": "author",
      "request": {
        "data": {
          "type": "access-token",
          "attributes": {
            "token_type": "sk",
            "name": "Disposable walkthrough token",
            "abilities": [
              "*"
            ],
            "division_id": "{{division_id}}",
            "rate_limit_per_minute": 600
          }
        }
      },
      "extract": {
        "runtime_1": "data.attributes.plain_text_token"
      },
      "expect": {
        "status": 201
      }
    },
    {
      "key": "evaluate-control",
      "method": "POST",
      "path": "/api/rating/evaluate",
      "credential": "runtime_1",
      "expect": {
        "status": 200,
        "values": {
          "data.attributes.shipping_options.0.total_price.amount": "17.00",
          "data.attributes.shipping_options.0.total_price.currency_code": "EUR",
          "data.attributes.shipping_options.length": 1,
          "data.attributes.shipping_options.0.price_components.0.code": "package-vs-shipment-shipment-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.0.calculation_basis.artifact_row_code": "package-vs-shipment-shipment-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.1.code": "package-vs-shipment-package-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.1.calculation_basis.artifact_row_code": "package-vs-shipment-package-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.2.code": "package-vs-shipment-base-rate-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.2.calculation_basis.artifact_row_code": "package-vs-shipment-base-rate-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.2.calculation_basis.offer_codes": []
        },
        "components": [
          [
            [
              "shipment_fee",
              "shipment",
              null,
              "3.00",
              null
            ],
            [
              "package_fee",
              "package",
              "pkg_1",
              "1.50",
              null
            ],
            [
              "base_rate",
              "shipment",
              null,
              "12.50",
              null
            ]
          ]
        ]
      },
      "file": "evaluate-control.json"
    },
    {
      "key": "evaluate-three-packages",
      "method": "POST",
      "path": "/api/rating/evaluate",
      "credential": "runtime_1",
      "expect": {
        "status": 200,
        "values": {
          "data.attributes.shipping_options.0.total_price.amount": "20.00",
          "data.attributes.shipping_options.0.total_price.currency_code": "EUR",
          "data.attributes.shipping_options.length": 1,
          "data.attributes.shipping_options.0.price_components.0.code": "package-vs-shipment-shipment-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.0.calculation_basis.artifact_row_code": "package-vs-shipment-shipment-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.1.code": "package-vs-shipment-package-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.1.calculation_basis.artifact_row_code": "package-vs-shipment-package-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.2.code": "package-vs-shipment-package-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.2.calculation_basis.artifact_row_code": "package-vs-shipment-package-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.3.code": "package-vs-shipment-package-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.3.calculation_basis.artifact_row_code": "package-vs-shipment-package-fee-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.4.code": "package-vs-shipment-base-rate-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.4.calculation_basis.artifact_row_code": "package-vs-shipment-base-rate-definition-package-vs-shipment-fixture",
          "data.attributes.shipping_options.0.price_components.4.calculation_basis.offer_codes": []
        },
        "components": [
          [
            [
              "shipment_fee",
              "shipment",
              null,
              "3.00",
              null
            ],
            [
              "package_fee",
              "package",
              "pkg_1",
              "1.50",
              null
            ],
            [
              "package_fee",
              "package",
              "pkg_2",
              "1.50",
              null
            ],
            [
              "package_fee",
              "package",
              "pkg_3",
              "1.50",
              null
            ],
            [
              "base_rate",
              "shipment",
              null,
              "12.50",
              null
            ]
          ]
        ]
      },
      "file": "evaluate-three-packages.json"
    }
  ],
  "initial_state": {
    "division_code": "definition-docs-{{namespace}}"
  }
}
