{
  "$schema": "https://joinfaded.com/asp/v0.1/schemas/service.schema.json",
  "protocol": "ASP",
  "protocol_name": "Agentic Service Protocol",
  "asp_version": "0.1",
  "status": "published",
  "id": "https://joinfaded.com/asp",
  "issuer": "https://joinfaded.com",
  "organization": {
    "name": "JoinFaded",
    "url": "https://joinfaded.com",
    "description": "Canonical JoinFaded ASP policy and service description."
  },
  "document": {
    "version": "2026-10-05.1",
    "effective_from": "2026-10-05T00:00:00Z",
    "expires_at": "2027-10-05T00:00:00Z",
    "language": "en"
  },
  "discovery": {
    "canonical": "https://joinfaded.com/.well-known/agentic-service",
    "human_documentation": "https://joinfaded.com/asp/",
    "llm_documentation": "https://joinfaded.com/llms.txt"
  },
  "context_model": {
    "standard_dimensions": [
      "geo",
      "channel",
      "customer",
      "business",
      "product",
      "transaction",
      "service"
    ],
    "custom_dimensions_allowed": true,
    "examples": {
      "geo.market": [
        "AMER",
        "EMEA",
        "APAC"
      ],
      "channel.purchase": [
        "ecommerce",
        "gallery"
      ],
      "customer.segment": [
        "consumer",
        "trade"
      ],
      "business.line": [
        "consumer_art",
        "trade_art"
      ],
      "product.category": [
        "open_edition_print",
        "limited_edition_print",
        "framed_print",
        "commissioned_work"
      ]
    }
  },
  "policy_resolution": {
    "match": "all_conditions",
    "apply_matching_rules": "priority_ascending",
    "conflict_behavior": "higher_priority_wins",
    "note": "Resolve all matching rules in ascending priority order. Higher-priority rules override lower-priority values."
  },
  "policies": [
    {
      "id": "joinfaded.returns",
      "type": "merchant.return",
      "href": "https://joinfaded.com/asp/v0.1/policies/returns.json"
    },
    {
      "id": "joinfaded.order-cancellation",
      "type": "merchant.order-cancellation",
      "href": "https://joinfaded.com/asp/v0.1/policies/cancel-order.json"
    },
    {
      "id": "joinfaded.package-tracking",
      "type": "merchant.package-tracking",
      "href": "https://joinfaded.com/asp/v0.1/policies/track-package.json"
    }
  ],
  "capabilities": [
    {
      "id": "order.cancel.check",
      "intent": "merchant.order.cancel.check",
      "description": "Check whether a JoinFaded order is currently eligible for cancellation.",
      "governed_by": [
        "joinfaded.order-cancellation"
      ],
      "side_effect": "none",
      "confirmation": {
        "required": false
      },
      "authentication": {
        "type": "customer_verification",
        "fields": [
          "order_number",
          "billing_postal_code"
        ]
      },
      "input_schema": {
        "type": "object",
        "required": [
          "order_number",
          "billing_postal_code"
        ],
        "properties": {
          "order_number": {
            "type": "string"
          },
          "billing_postal_code": {
            "type": "string"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "required": [
          "eligible",
          "reason"
        ],
        "properties": {
          "eligible": {
            "type": "boolean"
          },
          "reason": {
            "type": "string"
          },
          "cancel_by": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "bindings": [
        {
          "type": "https",
          "method": "POST",
          "endpoint": "https://joinfaded.com/api/asp/v1/orders/cancel/check",
          "status": "mock"
        }
      ]
    },
    {
      "id": "order.cancel",
      "intent": "merchant.order.cancel",
      "description": "Cancel an eligible JoinFaded order.",
      "governed_by": [
        "joinfaded.order-cancellation"
      ],
      "side_effect": "consequential",
      "confirmation": {
        "required": true,
        "timing": "immediately_before_execution"
      },
      "authentication": {
        "type": "customer_verification",
        "fields": [
          "order_number",
          "billing_postal_code"
        ]
      },
      "input_schema": {
        "type": "object",
        "required": [
          "order_number",
          "billing_postal_code",
          "reason"
        ],
        "properties": {
          "order_number": {
            "type": "string"
          },
          "billing_postal_code": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "required": [
          "cancellation_id",
          "status"
        ],
        "properties": {
          "cancellation_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "refund_amount": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "bindings": [
        {
          "type": "https",
          "method": "POST",
          "endpoint": "https://joinfaded.com/api/asp/v1/orders/cancel",
          "status": "mock"
        }
      ]
    },
    {
      "id": "return.check",
      "intent": "merchant.return.check",
      "description": "Determine return eligibility for an order item.",
      "governed_by": [
        "joinfaded.returns"
      ],
      "side_effect": "none",
      "confirmation": {
        "required": false
      },
      "authentication": {
        "type": "customer_verification",
        "fields": [
          "order_number",
          "destination_postal_code"
        ]
      },
      "input_schema": {
        "type": "object",
        "required": [
          "order_number",
          "item_id",
          "destination_postal_code",
          "return_reason"
        ],
        "properties": {
          "order_number": {
            "type": "string"
          },
          "item_id": {
            "type": "string"
          },
          "destination_postal_code": {
            "type": "string"
          },
          "return_reason": {
            "type": "string"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "required": [
          "eligible",
          "policy_rule_ids"
        ],
        "properties": {
          "eligible": {
            "type": "boolean"
          },
          "policy_rule_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "return_by": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "return_methods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "bindings": [
        {
          "type": "https",
          "method": "POST",
          "endpoint": "https://joinfaded.com/api/asp/v1/returns/check",
          "status": "mock"
        }
      ]
    },
    {
      "id": "return.initiate",
      "intent": "merchant.return.initiate",
      "description": "Create a merchandise return authorization for an eligible item.",
      "governed_by": [
        "joinfaded.returns"
      ],
      "side_effect": "reversible",
      "confirmation": {
        "required": true,
        "timing": "immediately_before_execution"
      },
      "authentication": {
        "type": "customer_verification",
        "fields": [
          "order_number",
          "destination_postal_code"
        ]
      },
      "input_schema": {
        "type": "object",
        "required": [
          "order_number",
          "item_id",
          "destination_postal_code",
          "return_reason"
        ],
        "properties": {
          "order_number": {
            "type": "string"
          },
          "item_id": {
            "type": "string"
          },
          "destination_postal_code": {
            "type": "string"
          },
          "return_reason": {
            "type": "string"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "required": [
          "return_authorization",
          "status"
        ],
        "properties": {
          "return_authorization": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "shipping_label_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "refund_estimate": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "bindings": [
        {
          "type": "mcp",
          "endpoint": "https://joinfaded.com/mcp",
          "tool": "initiate_return",
          "status": "mock"
        },
        {
          "type": "https",
          "method": "POST",
          "endpoint": "https://joinfaded.com/api/asp/v1/returns",
          "status": "mock"
        }
      ]
    },
    {
      "id": "package.track",
      "intent": "merchant.package.track",
      "description": "Retrieve the current delivery status of a JoinFaded shipment.",
      "governed_by": [
        "joinfaded.package-tracking"
      ],
      "side_effect": "none",
      "confirmation": {
        "required": false
      },
      "authentication": {
        "type": "customer_verification",
        "fields": [
          "order_number",
          "destination_postal_code"
        ]
      },
      "input_schema": {
        "type": "object",
        "required": [
          "order_number",
          "destination_postal_code"
        ],
        "properties": {
          "order_number": {
            "type": "string"
          },
          "destination_postal_code": {
            "type": "string"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "required": [
          "shipment_status"
        ],
        "properties": {
          "shipment_status": {
            "type": "string"
          },
          "carrier": {
            "type": [
              "string",
              "null"
            ]
          },
          "tracking_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "estimated_delivery_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "latest_event": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "bindings": [
        {
          "type": "mcp",
          "endpoint": "https://joinfaded.com/mcp",
          "tool": "track_package",
          "status": "mock"
        },
        {
          "type": "https",
          "method": "POST",
          "endpoint": "https://joinfaded.com/api/asp/v1/packages/track",
          "status": "mock"
        }
      ]
    }
  ],
  "execution": {
    "status": "mock",
    "available": false,
    "notice": "All advertised HTTPS and MCP bindings are unavailable and return HTTP 501 with executed: false. Do not claim a cancellation, return, refund or tracking action succeeded."
  }
}
