{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/sinch/main/json-schema/sinch-carrier-order-schema.json",
  "title": "CarrierOrder",
  "description": "Carrier order linked to country specific carriers that must be configured for this campaign.",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/sinch-us-shortcode-campaigns-api-openapi.yml#/components/schemas/CarrierOrder",
  "properties": {
    "carrierOrderId": {
      "description": "Carrier order ID",
      "type": "string"
    },
    "carrierId": {
      "description": "Carrier ID. Carrier IDs and names must be retrieved from /carriers endpoint.",
      "type": "string"
    },
    "carrierName": {
      "description": "Carrier name. Carrier IDs and names must be retrieved from /carriers endpoint.",
      "type": "string"
    },
    "status": {
      "$ref": "#/$defs/CarrierOrderStatus"
    },
    "notes": {
      "description": "Notes regarding carrier configuration.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/Note"
      }
    },
    "logs": {
      "description": "All transitions applied to this carrier order",
      "type": "array",
      "items": {
        "$ref": "#/$defs/CarrierOrderLog"
      }
    },
    "createdAt": {
      "description": "Carrier order creation date",
      "type": "string",
      "format": "date-time"
    },
    "updatedAt": {
      "description": "Carrier order update date",
      "type": "string",
      "format": "date-time"
    }
  },
  "type": "object",
  "$defs": {
    "CarrierOrderLog": {
      "description": "A transition applied to a carrier order",
      "properties": {
        "previousStatus": {
          "$ref": "#/$defs/CarrierOrderStatus"
        },
        "currentStatus": {
          "$ref": "#/$defs/CarrierOrderStatus"
        },
        "createdAt": {
          "description": "Log creation date",
          "type": "string",
          "format": "date-time"
        }
      },
      "type": "object"
    },
    "CarrierOrderStatus": {
      "description": "Carrier order status",
      "enum": [
        "PENDING",
        "SUBMITTED",
        "APPROVED",
        "REJECTED",
        "PROVISIONED_BY_CARRIER",
        "PROVISIONED_BY_SINCH",
        "CLIENT_CERTIFICATION_REQUESTED",
        "CARRIER_CERTIFICATION_REQUESTED",
        "CERTIFIED",
        "DEPROVISIONED",
        "CERTIFICATION_FAILURE",
        "CANCELLED"
      ],
      "x-enumDescriptions": {
        "PENDING": "Campaign has not been submitted yet to the carrier.",
        "SUBMITTED": "Campaign has been submitted to the carrier.",
        "APPROVED": "Campaign has been approved by carrier.",
        "REJECTED": "Campaign has not been approved by carrier.",
        "PROVISIONED_BY_CARRIER": "Short Code has been approved and configured on Sinch’s bind by this carrier.",
        "PROVISIONED_BY_SINCH": "Short Code has been set up on client’s account.",
        "CLIENT_CERTIFICATION_REQUESTED": "Campaign is ready to be tested by Sinch Team (to test opt-in and auto-responses such as HELP and STOP)",
        "CARRIER_CERTIFICATION_REQUESTED": "Campaign has passed Sinch testing and is pending certification/testing with the Carrier(not all carriers require this) where they will test opt-in and auto-responses for HELP and STOP.",
        "CERTIFIED": "Campaign has passed certification on this carrier and it is now LIVE! Ready for live traffic",
        "DEPROVISIONED": "Used when cancelling the connectivity part with this carrier.",
        "CERTIFICATION_FAILURE": "Testing failed. It can be due to keyword and auto-responses not set up as described in the campaign or the call to action is not live or not compliant.",
        "CANCELLED": "When the overall SC Campaign is not longer active with all carriers and the SC lease is cancelled."
      },
      "format": "enum",
      "type": "string"
    },
    "Note": {
      "description": "Notes used to contact customer and agents.",
      "properties": {
        "author": {
          "description": "Author. It can be either a customer or an agent.",
          "enum": [
            "CUSTOMER",
            "AGENT"
          ],
          "x-enumDescriptions": {
            "CUSTOMER": "Customer",
            "AGENT": "Agent"
          },
          "format": "enum",
          "type": "string"
        },
        "text": {
          "description": "Note text",
          "type": "string"
        },
        "createdAt": {
          "description": "Note creation date",
          "type": "string",
          "format": "date-time"
        }
      },
      "type": "object"
    }
  }
}