StrikeTracker KnowledgeBase

Reference


 

Overview

Reference resources are those for which the only changes occur due to expansions in capacity or capabilities brought about by Highwinds' growth. They are useful for interpreting the output of other operations but should only change infrequently. Reference resources are independent of account or platform so they exist in the /api/ root level and can be read by any authenticated StrikeTracker user.

 

Pops

The pops resource returns the current full list of CDN pops. Be aware that the full list of pops may not be currently leveraged by your account depending on your provisioned Highwinds products.

curl -H "Authorization: Bearer [\[authenticate to get Bearer token\]]" \
"https://striketracker.highwinds.com/api/pops"

Yields:

{
  "list": [
    {
      "id": 2,
      "code": "DC1",
      "name": "Ashburn",
      "group": "US East",
      "region": "us"
    },
    {
      "id": 3,
      "code": "AT1",
      "name": "Atlanta",
      "group": "US East",
      "region": "us"
    },
    {
      "id": 8,
      "code": "AM4",
      "name": "Amsterdam",
      "group": "Europe",
      "region": "us"
    },
    {
      "id": 10,
      "code": "DA1",
      "name": "Dallas",
      "group": "US Central",
      "region": "us"
    },
    {
      "id": 22,
      "code": "NY2",
      "name": "New York",
      "group": "US East",
      "region": "us"
    },
    {
      "id": 32,
      "code": "LA2",
      "name": "Los Angeles",
      "group": "US West",
      "region": "us"
    },
    {
      "id": 42,
      "code": "SE1",
      "name": "Seattle",
      "group": "US West",
      "region": "us"
    },
    {
      "id": 52,
      "code": "SP3",
      "name": "Sao Paulo",
      "group": "South America",
      "region": "sa"
    },
    {
      "id": 53,
      "code": "SJ2",
      "name": "San Jose",
      "group": "US West",
      "region": "us"
    },
    {
      "id": 63,
      "code": "CH3",
      "name": "Chicago",
      "group": "US Central",
      "region": "us"
    },
    {
      "id": 73,
      "code": "LO3",
      "name": "London",
      "group": "Europe",
      "region": "us"
    },
    {
      "id": 82,
      "code": "MI1",
      "name": "Miami",
      "group": "US East",
      "region": "us"
    },
    {
      "id": 83,
      "code": "TK1",
      "name": "Tokyo",
      "group": "Asia",
      "region": "as"
    },
    {
      "id": 93,
      "code": "SK1",
      "name": "Stockholm",
      "group": "Europe",
      "region": "us"
    },
    {
      "id": 103,
      "code": "MA1",
      "name": "Madrid",
      "group": "Europe",
      "region": "us"
    },
    {
      "id": 113,
      "code": "FR7",
      "name": "Frankfurt",
      "group": "Europe",
      "region": "us"
    },
    {
      "id": 133,
      "code": "SL1",
      "name": "Seoul",
      "group": "Asia",
      "region": "as"
    },
    {
      "id": 143,
      "code": "SY1",
      "name": "Sydney",
      "group": "Oceania",
      "region": "oc"
    },
    {
      "id": 153,
      "code": "SI1",
      "name": "Singapore",
      "group": "Asia",
      "region": "as"
    },
    {
      "id": 154,
      "code": "PA1",
      "name": "Paris",
      "group": "Europe",
      "region": "us"
    },
    {
      "id": 155,
      "code": "RU1",
      "name": "Russia",
      "group": "Europe",
      "region": "us"
    },
    {
      "id": 156,
      "code": "MN1",
      "name": "Manila",
      "group": "Asia",
      "region": "as"
    }
  ]
}
 

Docs

The docs resources contain information that is useful at runtime for interpreting responses in API based workflows. Currently this consists solely of the /docs/errors resource

curl -H "Authorization: Bearer [\[authenticate to get Bearer token\]]" \
"https://striketracker.highwinds.com/api/docs"

Yields:


{
  "list": {
    "0": {
      "category": "CODE_FATAL_ERROR",
      "description": "An unhandled fatal error has occurred"
    },
    "1": {
      "category": "CODE_GENERAL_ERROR",
      "description": "Generic error"
    },
    "2": {
      "category": "CODE_GENERAL_MISSING_PARAMETER",
      "description": "A required parameter is missing from a request"
    },
    "3": {
      "category": "CODE_GENERAL_INVALID_HASH_CODE",
      "description": "A hash code given is not of a valid format"
    },
    "4": {
      "category": "CODE_GENERAL_ACCOUNT_CONTEXT_NOT_FOUND",
      "description": "The account request in the account context was not found"
    },
    "5": {
      "category": "CODE_GENERAL_INVALID_JSON",
      "description": "The request data is not valid JSON"
    },
    "6": {
      "category": "CODE_GENERAL_FEATURE_DISABLED",
      "description": "This feature is temporarily disabled"
    },
    "100": {
      "category": "CODE_ANALYTICS_INVALID_GROUPBY",
      "description": "The groupBy parameter on an analytics request is missing or invalid"
    },
    "101": {
      "category": "CODE_ANALYTICS_INVALID_GRANULARITY",
      "description": "An invalid granularity parameter was provided for an analytics request"
    },
    "102": {
      "category": "CODE_ANALYTICS_INVALID_FILTER",
      "description": "A required filter is missing or a filter contains a bad value"
    },
    "103": {
      "category": "CODE_ANALYTICS_INVALID_DATE_RANGE",
      "description": "The date range provided for an analytics request is not valid"
    },
    "104": {
      "category": "CODE_ANALYTICS_END_DATE_TOO_FAR",
      "description": "The end date provided is too far in the future (past the end of the current month)"
    },
    "200": {
      "category": "CODE_AUTH_INVALID_GRANT_TYPE",
      "description": "The grant_type parameter for authentication is missing or an invalid value"
    },
    "201": {
      "category": "CODE_AUTH_INVALID_ACCOUNT_CONTEXT",
      "description": "The specified account context is invalid (account is suspended or deleted)"
    },
    "203": {
      "category": "CODE_AUTH_NOT_AUTHENTICATED",
      "description": "Resource requires authentication but user is not authenticated"
    },
    "300": {
      "category": "CODE_ACL_INSUFFICIENT_PERMISSIONS",
      "description": "The authenticated user does not have permissions to perform the requested action"
    },
    "301": {
      "category": "CODE_ACL_USER_SUSPENDED",
      "description": "The authenticated user is suspended"
    },
    "302": {
      "category": "CODE_ACL_ACCOUNT_SUSPENDED",
      "description": "The authenticated user is suspended"
    },
    "303": {
      "category": "CODE_ACL_USER_NO_ACCOUNT",
      "description": "The authenticated user does not have an associated account"
    },
    "400": {
      "category": "CODE_VALIDATION_FAILED",
      "description": "A resource has failed validation"
    },
    "401": {
      "category": "CODE_VALIDATION_DUPLICATE_ORIGIN",
      "description": "A duplicate origin exists with the same hostname, port, and path"
    },
    "404": {
      "category": "CODE_VALIDATION_RECORD_NOT_FOUND",
      "description": "The requested resource was not found"
    },
    "405": {
      "category": "CODE_VALIDATION_ENDPOINT_NOT_FOUND",
      "description": "The requested endpoint was not found, please check your url"
    },
    "409": {
      "category": "CODE_VALIDATION_CONFLICT",
      "description": "This resource already exists"
    },
    "503": {
      "category": "CODE_INFRASTRUCTURE_DATABASE_UNAVAILABLE",
      "description": "Unable to reach the database. Please try again later."
    },
    "504": {
      "category": "CODE_INFRASTRUCTURE_CDN_UNAVAILABLE",
      "description": "Unable to send configuration to the CDN. Please try again later."
    }
  }
}

 

Version

This resource is a placeholder for the current Highwinds API version number, which will be useful to distinguish the interface when troubleshooting any issues in the future.

curl -H "Authorization: Bearer [\[authenticate to get Bearer token\]]" \
"https://striketracker.highwinds.com/api/version"
 

BillingRegions

The billingRegions resource allows you to group your pop usage by region to understand the differing rates you can expect on your upcoming usage charges

curl -H "Authorization: Bearer [\[authenticate to get Bearer token\]]" \
"https://striketracker.highwinds.com/api/billingRegions"

Yields:

{
  "list": [
    {
      "id": 1,
      "code": "us",
      "name": "North America/Europe"
    },
    {
      "id": 2,
      "code": "sa",
      "name": "South America"
    },
    {
      "id": 3,
      "code": "as",
      "name": "Asia"
    },
    {
      "id": 4,
      "code": "oc",
      "name": "Oceania"
    }
  ]
}

 

Configuration

The configuration resource lists all of the available configurations and is invaluable for retrieving descriptions of currently configured resources or learning about other available configuration types.

curl -H "Authorization: Bearer [\[authenticate to get Bearer token\]]
"https://striketracker.highwinds.com/api/configuration"

Yields:

{
  "CONTENT_PROTECTION": {
    "authACL": {
      "description": "IP address restrictions allow you to configure your CDN container to grant or deny a specific IP addreses or range of IP addresses from accessing content cached in a directory in your CDN container.\n",
      "groupable": "AND",
      "friendlyName": "IP Address Restrictions",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "accessCode": {
          "description": "Access directive allows you to specify the type of access you want to grant to the IP address(es) specified in the policy.\n",
          "required": true,
          "friendlyName": "Access Directive",
          "type": "enum[allow|deny]",
          "default": null
        },
        "ipList": {
          "description": "This is a list of IP addresses considered for this policy.\n",
          "required": true,
          "friendlyName": "IP Address(es)",
          "type": "list<IP>",
          "delimiter": ",",
          "default": null
        },
        "protocol": {
          "description": "This allows you to specify the delivery protocols this policy applies to.\n",
          "required": false,
          "friendlyName": "Protocol",
          "type": "enum[http|https]",
          "default": null
        },
        "clientIPSrc": {
          "description": "This allows you to specify where the CDN should obtain the client IP address used for this policy. If you select the header option, you must provide the name of the header in the IP Address header field.\n",
          "required": false,
          "friendlyName": "Client IP Source",
          "type": "enum[socket|header]",
          "default": "socket"
        },
        "header": {
          "description": "This allows you to specify the name of a HTTP request header which will contain the client IP address to use for this policy.\n",
          "required": false,
          "friendlyName": "IP Address Header",
          "type": "string",
          "default": null
        }
      }
    },
    "authGeo": {
      "description": "Geographic restrictions allow you to restrict content to end users in specific locations.  The IP address of incoming requests is checked against a current list of IP allocations to countries and to states within the US. If an end user’s IP address is not found in the list, they are allowed access to the content by default. The feature has both an Include  and an Exclude list which are used to target the allowed audience.\n",
      "groupable": "AND",
      "friendlyName": "Geographic Restrictions",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "code": {
          "description": "This is the geographic region you are targeting for this policy.\n",
          "required": true,
          "friendlyName": "Region Type",
          "type": "enum[countryCode|region|city|postalCode|continentCode|timeZone|dmaCode|areaCode]",
          "default": null
        },
        "values": {
          "description": "These are the region codes you are targeting for this policy.  The values that can be supplied within this field are  those that are supported by the MaxMind® GeoIP database. \n",
          "required": true,
          "friendlyName": "Region Codes",
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        }
      }
    },
    "authHttpBasic": {
      "description": "HTTP basic authentication policies allow you to control access to your content by requiring the  end user to enter a valid username and password before gaining access to content.\n",
      "groupable": null,
      "friendlyName": "Basic Authentication",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "bindingPoint": {
          "description": "This is a URL to a resource on the authentication server responsible for authentication of users.\n",
          "required": true,
          "friendlyName": "Binding Point URL",
          "type": "string",
          "default": null
        },
        "realm": {
          "description": "This is the authentication realm given back to the user on requests which do not contain the authentication credentials. Browsers typically display this value to the user when the login credentials are requested.\n",
          "required": true,
          "friendlyName": "Authentication Realm",
          "type": "string",
          "default": null
        },
        "ttl": {
          "description": "This is the number of seconds the authentication session will be cached by the browsers. After this time, browsers will be asked to present the user credentials again for re-authentication.\n",
          "required": true,
          "friendlyName": "Time to Live (TTL)",
          "type": "uint32",
          "default": null
        }
      }
    },
    "authReferer": {
      "description": "HTTP Referrer restriction policies allow you to limit access to your published CDN URLs based on the HTTP Referrer header submitted by the browser.  This restriction policy prevents your content from being easily distributed on unauthorized websites (also known as hot  linking or deep linking). Once this policy is applied to your CDN container, websites that are not listed in this policy will be denied access to the content cached at this location.\n",
      "groupable": null,
      "friendlyName": "Referrer Restrictions",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "referer": {
          "description": "This is a list of domains authorized to access content from this path in the container.  You may use wildcards to specify multiple websites hosted on the same domain.\n",
          "required": true,
          "friendlyName": "Authorized Domains",
          "type": "list<GLOB>",
          "delimiter": "|",
          "default": null
        }
      }
    },
    "authUrlSign": {
      "description": "URL Signing policies allow you to restrict access to your content by configuring a \"shared secret\" with Highwinds. This “shared secret” is used to apply an MD5 hashing algorithm on the URL to validate the signature supplied on the request.  Since the \"shared secret\" is only known by the publisher and Highwinds, URL signatures cannot be generated by unauthorized users.\n",
      "groupable": "OR",
      "friendlyName": "URL Signing",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "tokenField": {
          "description": "This is the name of the query string parameter that will be used by the publisher to specify the signature for the URL.\n",
          "required": true,
          "friendlyName": "URL Signature Parameter",
          "type": "string",
          "default": null
        },
        "ignoreFieldsAfterToken": {
          "description": "Select this option if you want Highwinds to exclude query string parameters specified after the passphrase  in the validation process.\n",
          "required": false,
          "friendlyName": "Exclude query string parameters after the passphrase parameter",
          "type": "bool",
          "default": false
        },
        "passPhraseField": {
          "description": "This is the name of the query string parameter that contains the value of the secret.  This query string parameter is only used during the generation and validation of a URL signature and should not be present in the published URL.\n",
          "required": true,
          "friendlyName": "Passphrase Parameter Name",
          "type": "string",
          "default": null
        },
        "passPhrase": {
          "description": "The shared secret used during the signing process.  This value should only be known by Highwinds and systems authorized  to sign your content.\n",
          "required": true,
          "friendlyName": "Passphrase",
          "type": "PASSWORD",
          "default": null
        },
        "expiresField": {
          "description": "This is the name of the query string parameter that contains the Epoch time after which the URL is considered invalid.\n",
          "required": false,
          "friendlyName": "Expiration Parameter",
          "type": "string",
          "default": null
        },
        "ipAddressField": {
          "description": "This is a query string parameter that contains an IPv4 address to which the published URL will be restricted.\n",
          "required": false,
          "friendlyName": "Client IP Address Parameter",
          "type": "string",
          "default": null
        },
        "uriLengthField": {
          "description": "This is a query string parameter used to limit the number of characters in the path that should be considered when  validating the URL signature.  This feature allows you re-use the same signature on all assets stored in the same cache path.  Setting this value to 0 will strip off the filename in the URL (leaving the trailing slash) when  calculating the checksum.\n",
          "required": false,
          "friendlyName": "Path Length Parameter",
          "type": "string",
          "default": null
        },
        "userAgentField": {
          "description": "This is a query string parameter used to restrict the published URL to a specific user agent. Publishers can use this feature during the signing process to ensure that only a specific user agent can access the published content.  You do not need to specify the user agent on the published URL, Highwinds will use the HTTP User-Agent header value during signature validation.\n",
          "required": false,
          "friendlyName": "User Agent Parameter",
          "type": "string",
          "default": null
        },
        "pathFilter": {
          "description": "Path Filter is used to determine if this type should be applied or not based on Expression Provide.  The value can be Include List or Exclude List. It cannot have a mix of Include and Exclude List.\n",
          "required": false,
          "friendlyName": "Path Filter",
          "type": "list<GLOB>",
          "delimiter": ",",
          "default": "*"
        }
      }
    }
  },
  "DELIVERY": {
    "bandWidthLimit": {
      "description": "The pattern based bandwidth throttling policy allows you to limit the transfer rate of assets to end users based on a set of rules matching the request's HTTP User-Agent and/or the path.  Each rule must be expressed in the  following format: <User-Agent Pattern>:<path pattern 1, path pattern 2>.  For example, the  pattern:  \"Mozilla*:*.mp3,*dir*.exe|*IE*:*.jpg,*.zip|*ios 6*:* \" will match all MP3 files and EXE files containing the substring “dir” that are requested by a User-Agent containing the substring \"Mozilla,” all JPG and ZIP files requested  by a User-Agent containing the substring \"IE,” and all requests made by User-Agents containing the substring \"ios 6.”\n",
      "groupable": null,
      "friendlyName": "Pattern based Bandwidth Throttling",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "rule": {
          "description": "These are pattern match rules to use for applying rate limiting on requests.\n",
          "required": true,
          "friendlyName": "Pattern Match Rules",
          "type": "list<string>",
          "delimiter": "|",
          "default": null
        },
        "values": {
          "description": "These are the intial bytes (ri) and the sustained rate (rs) query string parameters to use for this rule.  Example: ri=100,rs=1000\n",
          "required": true,
          "friendlyName": "RI and RS Values",
          "type": "string",
          "default": null
        }
      }
    },
    "bandWidthRateLimitUnits": {
      "description": "The Bandwidth Throttling Units policy allows you to override the default units used by the CDN when processing the bandwidth throttling policies.\n",
      "groupable": null,
      "friendlyName": "Bandwidth Throttling Units",
      "allowedScope": "DIR",
      "defaultPolicy": {
        "initial": "byte",
        "sustained": "kilobit"
      },
      "keys": {
        "initial": {
          "description": "These are the units used in the Initial Bytes Units (ri) parameter on published URLs.\n",
          "required": false,
          "friendlyName": "Intial Bytes Units (ri)",
          "type": "enum[byte|kilobyte]",
          "default": "byte"
        },
        "sustained": {
          "description": "These are the units used in the Sustained Rate Units (ri) parameter on published URLs.\n",
          "required": false,
          "friendlyName": "Sustained Rate Units (rs)",
          "type": "enum[kilobit|kilobyte]",
          "default": "kilobit"
        }
      }
    },
    "compression": {
      "description": "The compression policy allows you to provide a list of file extensions you want the CDN caching servers to automatically compress before delivering content to end users.  This policy is typically used when your origin server does not support compression or you are unable to configure your origin to compress your files.  If your origin is configured to already compress files, you should consider adding the Compressed Origin Pull policy to your host, which will enable the CDN caching server to request compressed (gzip) version of your assets.  The compressed origin pull  policy can be found in the Origin Pull policies list.  Please note that our caching servers schedule the compression of files, and typically you do not see the compressed delivery until the file has been requested several times.  Typically, this list is comprised of text files like javascript, html and CSS files.  You should not include file extensions that match media files (images, videos, or audio files) or any other file format that includes a built in compression algorithm.  Attempting to further compress these types of files usually results in a larger file being delivered to end users.\n",
      "groupable": null,
      "friendlyName": "Compression Policy",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "gzip": {
          "description": "The list of file extensions you want the caching servers to use to identify the content you want compressed before delivering it to end users\n",
          "required": true,
          "friendlyName": "File Extensions",
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        }
      }
    },
    "contentDispositionByHeader": {
      "description": "\n",
      "groupable": "OR",
      "friendlyName": "Content Disposition By Header",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "headerFieldName": {
          "description": "The name of the Http header field used to get the value to match the pattern specified in the HeaderValueMatch setting",
          "required": true,
          "friendlyName": null,
          "type": "string",
          "default": null
        },
        "headerValueMatch": {
          "description": "A list of glob patterns to enable the Content-Disposition header if any of them matches the value in the header field  specified in the HeaderFieldName setting.",
          "required": true,
          "friendlyName": null,
          "type": "list<GLOB>",
          "delimiter": ",",
          "default": null
        },
        "defaultType": {
          "description": "The default Content-Disposition type when the header is enabled\n",
          "required": false,
          "friendlyName": null,
          "type": "enum[attachement|inline]",
          "default": "attachment"
        },
        "overrideOriginHeader": {
          "description": "This allow the CDN-generated Content-Disposition header to override the one preserved from the origin  using the OriginPullPolicy/HttpHeaders or Origin/OriginCacheHeaders settings.",
          "required": false,
          "friendlyName": null,
          "type": "bool",
          "default": true
        },
        "pathFilter": {
          "description": "Path Filter is used to determine if this type should be applied or not based on Expression Provide.  The value can be Include List or Exclude List. It cannot have a mix of Include and Exclude List.\n",
          "required": false,
          "friendlyName": "Path Filter",
          "type": "list<GLOB>",
          "delimiter": ",",
          "default": "*"
        }
      }
    },
    "contentDispositionByURL": {
      "description": "\n",
      "groupable": null,
      "friendlyName": "Content Disposition By URL",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "dispositionNameQSParam": {
          "description": "This is the name of the query string parameter which contains the name of the file to specify in the Conetnt-Disposition HTTP response header.  This setting is typically used by customers to configure a \"friendly name\" for URLs that have obfuscated file names.  This setting controls the \"filename\" directive that is part of the Content-Disposition HTTP header.\n",
          "required": true,
          "friendlyName": "Content Disposition File Name Query String Parameter",
          "type": "string",
          "default": null
        },
        "dispositionTypeQSParam": {
          "description": "This is the name of the query string parameter which contains the disposition type to use in the Content-Disposition HTTP header.  Typically, this value is set to \"attachment,” but you may supply a custom string using this setting.\n",
          "required": true,
          "friendlyName": "Content Disposition Type Query String Parameter",
          "type": "string",
          "default": null
        },
        "dispositionOverrideQSParam": {
          "description": "This setting allows you to completely override the Content-Disposition HTTP header that the CDN caching servers use on a response.\n",
          "required": false,
          "friendlyName": "Content Disposition Header Override",
          "type": "string",
          "default": null
        },
        "overrideOriginHeader": {
          "description": "\n",
          "required": false,
          "friendlyName": null,
          "type": "bool",
          "default": true
        }
      }
    },
    "customMimeType": {
      "description": "The custom mime type policy allows you to map file extensions to specific mime types for the CDN caching servers to use when delivering assets.  The mime types you map using this policy may also be limited to specific response codes to  address scenarios in which the mime type changes based on the response code.\n",
      "groupable": "OR",
      "friendlyName": "Custom Mime Types",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "code": {
          "description": "A comma separated list of status codes that apply to this policy\n",
          "required": false,
          "friendlyName": "HTTP Response Codes",
          "type": "list<string>",
          "delimiter": ",",
          "default": 200206
        },
        "extensionMap": {
          "description": "This is a comma separated list of file extension and mime type pairs that describe the mime type mapping for the CDN caching servers.  The file extension and mime type values should be delimited by a colon (:). For example, to map files ending with jpg to the image/jpeg mime type and files ending with png to image/png, set this value to: jpg:image/jpeg,png:image/png.\n",
          "required": true,
          "friendlyName": "File Extension Mapping",
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        }
      }
    },
    "httpMethods": {
      "description": "The HTTP methods policy allows you to selectively enable additional HTTP methods you want your CDN container to process.  A container automatically is set up to process HTTP GET and HEAD commands, so they should not be explicitly defined in this policy.  HTTP  methods included in this policy are proxied directly to your origin and not cached by the CDN.\n",
      "groupable": null,
      "friendlyName": "HTTP Methods",
      "allowedScope": "DIR",
      "defaultPolicy": {
        "passThru": "POST"
      },
      "keys": {
        "passThru": {
          "description": "This is a comma separated list of HTTP methods you want the CDN to proxy to your origin. A wildcard can be entered to include all methods (excluding HEAD and GET).\n",
          "required": true,
          "friendlyName": "HTTP Methods to Proxy",
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        }
      }
    },
    "queryStrParam": {
      "description": "The reserved query string parameters policy describes all the query string parameters the Highwinds CDN caching server reserves for special processing of your requests.\n",
      "groupable": null,
      "friendlyName": "Reserved Query String Parameters",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "dispositionName": {
          "description": "This is the name of the query string parameter which contains the name of the file to specify in the Conetnt-Disposition HTTP response header.  This setting is typically used by customers to configure a \"friendly name\" for URLs that have obfuscated file names.  This setting controls the \"filename\" directive that is part of the Content-Disposition HTTP header.\n",
          "required": false,
          "friendlyName": "Content Disposition File Name Query String Parameter",
          "type": "string",
          "default": null
        },
        "dispositionType": {
          "description": "This is the name of the query string parameter which contains the disposition type to use in the Content-Disposition HTTP header.  Typically, this value is set to \"attachment,” but you may supply a custom string using this setting.\n",
          "required": false,
          "friendlyName": "Content Disposition Type",
          "type": "string",
          "default": null
        },
        "dispositionOverride": {
          "description": "This setting allows you to completely override the Content-Disposition HTTP header that the CDN caching servers use on a response.\n",
          "required": false,
          "friendlyName": "Content Disposition Header Override",
          "type": "string",
          "default": null
        },
        "jumpToTimeStart": {
          "description": "This is the name of the query string parameter that indicates to the CDN the start time offset of the video returned.  This parameter is part of the jump-to-time feature that is initiated on a per request basis.\n",
          "required": false,
          "friendlyName": "Jump-to-Time Start Parameter",
          "type": "string",
          "default": "start"
        },
        "jumpToTimeEnd": {
          "description": "This is the name of the query string parameter that indicates to the CDN the end time offset of the video that should be returned.  This parameter is part of the jump-to-time feature that is initiated on a per request basis.\n",
          "required": false,
          "friendlyName": "Jump-to-Time End Parameter",
          "type": "string",
          "default": "end"
        },
        "jumpToByteInitialBytes": {
          "description": "This is the  name of the query string parameter that indicates to the CDN the initial bytes of a video that should be returned before sending the requested byte offset.  This parameter is part of the jump-to-byte feature that is initiated on a per request basis.\n",
          "required": false,
          "friendlyName": "Jump-to-Byte Initial Bytes Parameter",
          "type": "string",
          "default": "ib"
        },
        "jumpToByteStartOffset": {
          "description": "This is the name of the query string parameter that indicates to the CDN the specific offset into the video that is being requested. This parameter is part of the jump-to-byte feature that is initiated on a per request basis.\n",
          "required": false,
          "friendlyName": "Jump-to-Byte Offset Parameter",
          "type": "string",
          "default": "fs"
        },
        "rateLimitInitial": {
          "description": "This is the name of the query string parameter that indicates to the CDN an initial burst rate to use when delivering a file.  This parameter is part of the  bandwidth limiting feature that is initiated on a per request basis.\n",
          "required": false,
          "friendlyName": "Bandwith Throttling Initial Burst Parameter",
          "type": "string",
          "default": "ri"
        },
        "rateLimitSustained": {
          "description": "This is the name of the query string parameter that indicates to the CDN the sustained rate being requested for the delivery of a file.  This parameter is part of the bandwidth throttling feature that is initiated on a per request basis.\n",
          "required": false,
          "friendlyName": "Bandwith Throttling Sustained Rate Parameter",
          "type": "string",
          "default": "rs"
        }
      }
    },
    "redirectExceptions": {
      "description": "The redirect response codes policy allows you to specify the HTTP redirect status code the CDN caching server should use when the CDN issues a redirect.  Using this policy, you can assign different redirect codes to user agents requesting content. \n",
      "groupable": null,
      "friendlyName": "Redirect Response Codes",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "redirectAgentCode": {
          "description": "This is a comma separated list of user agents and redirect code pairs.  The user agent and redirect code values are separated by a colon (:), and you may use wildcards in the user agent field.  For example, to map assign a 307 status code to all Chrome browsers, you would specify: *chrome*:307.\n",
          "required": true,
          "friendlyName": "User Agent and Redirect Code Assignment",
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        }
      }
    },
    "redirectMappings": {
      "description": "The response code redirection policy allows you to map cache responses codes to an HTTP redirect response.  When this policy is applied to a host, the caching servers will redirect clients to the URL specified in this policy instead of delivering the response code you mapped in the policy.\n",
      "groupable": "OR",
      "friendlyName": "Response Code Redirection Policy",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "code": {
          "description": "The HTTP cache response code that applies to this policy.\n",
          "required": true,
          "friendlyName": "Response Code",
          "type": "uint32",
          "default": null
        },
        "redirectURL": {
          "description": "The URL that clients would be redirected to when applying this policy.\n",
          "required": true,
          "friendlyName": "Redirect URL",
          "type": "string",
          "default": null
        },
        "replacementToken": {
          "description": "A token that will be replaced by the caching server with the URL of the request that triggered the policy.  This token can be positioned anywhere in the redirect URL.\n",
          "required": false,
          "friendlyName": "Original URL Token",
          "type": "string",
          "default": null
        }
      }
    },
    "responseHeader": {
      "description": "The custom HTTP response headers policy allows you to specify a list of HTTP headers you want the CDN caching servers to include in the response to clients.\n",
      "groupable": null,
      "friendlyName": "Custom HTTP Response Headers",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "http": {
          "description": "A pipe delimited list of rules that instructs the CDN caching servers to include a content-disposition header. The rules included in this setting must be entered in the following format: Content-Disposition:<User Agent>:<file extension 1>, <file extension 2>.  For example, to send the Content-Disposition header for all Mozilla browsers on the delivery of mp3, exe, tar, zip, gz an rar files, you would enter the following in the field:  Content-Disposition:Mozilla*:mp3,exe,tar,zip,gz,rar\n",
          "required": false,
          "friendlyName": "Enable Content-Disposition by User Agent",
          "type": "string",
          "default": null
        },
        "enableETag": {
          "description": "This gives the ability to disable the ETag header on the response.\n",
          "required": false,
          "friendlyName": "Enable ETag",
          "type": "bool",
          "default": true
        }
      }
    },
    "staticHeader": {
      "description": "The static header injection policy allows you to insert headers into the CDN request and response processor.\n",
      "groupable": "LIST",
      "friendlyName": "Static Header Injection",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "http": {
          "description": "This is the static HTTP header you want inserted into the CDN response.\n",
          "required": false,
          "friendlyName": "HTTP Response Header",
          "type": "string",
          "default": null
        },
        "originPull": {
          "description": "This is the HTTP header you want inserted into the origin pull request.\n",
          "required": false,
          "friendlyName": "Origin Pull Request Header",
          "type": "string",
          "default": null
        }
      }
    }
  },
  "CACHING": {
    "cacheControl": {
      "description": "The browser caching policy allows you to control the browser caching behavior of your assets independently from the CDN cache.  For example, this policy allows you to set lower or higher TTLs for the browser than those of the CDN cache.\n",
      "groupable": "OR",
      "friendlyName": "Browser Caching Policy",
      "allowedScope": "DIR",
      "defaultPolicy": [
        {
          "statusCodeMatch": "2*,301,302,303,304,305,307",
          "synchronizeMaxAge": true
        },
        {
          "statusCodeMatch": "*",
          "synchronizeMaxAge": false
        }
      ],
      "keys": {
        "statusCodeMatch": {
          "description": "Comma separated status code glob pattern to indicate which status code(s) this policy applies to",
          "required": false,
          "friendlyName": "Status Code Match",
          "type": "list<GLOB>",
          "delimiter": ",",
          "default": null
        },
        "maxAge": {
          "description": "The client TTL controls the lifetime of the asset in the browser's cache.  The value entered here will be sent to the browser in the Cache-Control max-age directive for HTTP 1.1 clients and the Expires header for HTTP 1.0 clients.\n",
          "required": false,
          "friendlyName": "Client TTL (sec)",
          "type": "uint32",
          "default": -1
        },
        "mustRevalidate": {
          "description": "Selecting this option instructs the CDN caching servers to insert the must-revalidate directive on all HTTP responses sent to clients.\n",
          "required": false,
          "friendlyName": "Add must-revalidate directive to Cache-Control header",
          "type": "bool",
          "default": false
        },
        "synchronizeMaxAge": {
          "description": "Selecting this option allows the CDN to synchronize the Max-Age header it sends to clients with the  remaining TTL of the asset in the cache.  This allows assets to expire from the browser cache at the same time they expire from the CDN.\n",
          "required": false,
          "friendlyName": "Synchronize Client TTL with CDN",
          "type": "bool",
          "default": true
        },
        "override": {
          "description": "This allows you to specify a custom Cache-Control header to be used by the CDN on all HTTP responses  targeted by this policy.  Note: Do not include the header name (Cache-Control) in this field. Only the value of the header should be specified.\n",
          "required": false,
          "friendlyName": "Custom Cache-Control Header",
          "type": "string",
          "default": null
        }
      }
    },
    "cacheKeyModification": {
      "description": "The Cache Key Modification policy allows for manipulation of the way the cache uniquely stores assets.\n",
      "groupable": null,
      "friendlyName": "Cache Key Modification",
      "allowedScope": "PRODUCT",
      "defaultPolicy": {
        "normalizeKeyPathToLowerCase": false
      },
      "keys": {
        "normalizeKeyPathToLowerCase": {
          "description": "When set, purges and requests for a file will be case insensitive. This setting is useful if you have a case insensitive origin server and would like to avoid duplicating assets.\n",
          "required": true,
          "friendlyName": "Case Insensitive Cache",
          "type": "bool",
          "default": null
        }
      }
    },
    "dynamicContent": {
      "description": "The dynamic content caching policy allows you to specify a set of query string or HTTP header key/value pairs that should  create a unique cache entry for a given URL.  This policy is useful when your origin returns unique content for the same URL based on a set of query string parameters provided in the request.\n",
      "groupable": null,
      "friendlyName": "Dynamic Content Caching",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "requestComponent": {
          "description": "The key location allows you to specific where the key/value pair is location in the request.  The possible values are query and header.  Query indicates the location of the key/value pair is the query string and header indicates its location is an HTTP request header.  NOTE: In order to create a policy using a Key Location of header you must configure a custom script using the Script Engine.\n",
          "required": false,
          "friendlyName": "Key Location",
          "type": "enum[query|header]",
          "default": "query"
        },
        "queryParams": {
          "description": "A comma separated list of query string parameters you want to include in the cache key generation.  NOTE: This list is ignored when the Key Location is set to header.\n",
          "required": true,
          "friendlyName": "Key Names",
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        },
        "headerFields": {
          "description": "A comma separated list of HTTP request headers you want included in the cache key generation.  NOTE: This list is ignored when the  Key Location is set to query.\n",
          "required": false,
          "friendlyName": "HTTP Request Headers",
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        }
      }
    },
    "originPullCacheExtension": {
      "description": "The cache extension policy allows you to define cache revalidation exceptions on expired content.  This policy is applied by the CDN caching servers when they are are unable to revalidate an expired asset with your origin due  to network connectivity issues or unresponsiveness from your origin.\n",
      "groupable": null,
      "friendlyName": "Cache Extension Policy",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "expiredCacheExtension": {
          "description": "The default cache TTL value is used by the caching server when your origin does not supply a TTL using the standard HTTP Cache-Control or Expires headers.  When you do not provide a value in this field, the CDN caching software defaults to 86400 seconds (24 hours) for new files entering the cache.  For assets being refreshed in  the cache, the CDN caching server defaults to the last known TTL established by your origin or this policy.   In all cases your origin's TTL takes precedence over this value.\n",
          "required": true,
          "friendlyName": "Default Cache TTL (sec)",
          "type": "uint32",
          "default": null
        },
        "originUnreachableCacheExtension": {
          "description": "The origin unavailable max TTL value is used by the caching server when your origin is unresponsive or the CDN cannot establish a connection to your origin.  Under these conditions, the CDN can continue to serve expired assets from the cache. The value specified in this field establishes a maximum allowable TTL for your expired assets.  If  your origin connectivity or responsiveness is not corrected within your maximum allowable TTL, the CDN no longer serves your expired assets.\n",
          "required": false,
          "friendlyName": "Origin Unavailable Max TTL (sec)",
          "type": "uint32",
          "default": 86400
        }
      }
    },
    "originPullPolicy": {
      "description": "The CDN caching policy allows you to control how your origin's content is cached on the CDN.\n",
      "groupable": "OR",
      "friendlyName": "CDN Caching Policy",
      "allowedScope": "DIR",
      "defaultPolicy": [
        {
          "statusCodeMatch": "2*,301,302,303,304,305,307",
          "expirePolicy": "CACHE_CONTROL",
          "expireSeconds": 86400
        },
        {
          "statusCodeMatch": "*",
          "expirePolicy": "INGEST",
          "expireSeconds": 60
        }
      ],
      "keys": {
        "statusCodeMatch": {
          "description": "This is a pattern match expression for each status code this policy applies too.  For example, 2*, 3* applies this policy to all 200 and 300 level HTTP responses from your origin.\n",
          "required": false,
          "friendlyName": "Origin Status Code Match",
          "type": "list<GLOB>",
          "delimiter": ",",
          "default": null
        },
        "expirePolicy": {
          "description": "The cache expiration method allows you to define the process the CDN uses to establish the expiration time of content stored in the cache.  There are three types of cache expiration methods: Cache-Control Headers,  Relative to Ingest Time, and Relative to the Last Modified Time.\n",
          "required": true,
          "friendlyName": "Cache Expiration Method",
          "type": "enum[CACHE_CONTROL|INGEST|LAST_MODIFY|NEVER_EXPIRE]",
          "default": null
        },
        "expireSeconds": {
          "description": "This is the expiration time used for assets pulled from your origin.  When using Cache-Control headers expiration  methods, this value is used if your origin doesn't return a max-age directive in the Cache-Control HTTP header.\n",
          "required": true,
          "friendlyName": "Default TTL (sec)",
          "type": "uint32",
          "default": null
        },
        "honorNoStore": {
          "description": "This enables the processing of no-store HTTP Cache-Control directives on your container. By enabling this option, responses  from your origin containing the no-store directive are not cached.  Be aware that requests for non-cacheable assets are  always forwarded to your origin and may impose a high request and bandwidth load on your origin.\n",
          "required": false,
          "friendlyName": "Enable no-store Directive",
          "type": "bool",
          "default": false
        },
        "honorNoCache": {
          "description": "This enables the processing of no-cache HTTP Cache-Control directives on your container. By enabling this option, responses  from your origin containing the no-cache directive force the CDN to submit every subsequent request to  your origin for validation before serving the asset stored in the cache.\n",
          "required": false,
          "friendlyName": "Enable No-cache Directive",
          "type": "bool",
          "default": false
        },
        "honorMustRevalidate": {
          "description": "Honor must-revalidate or proxy-revalidate cache-control from origin.",
          "required": false,
          "friendlyName": "Enable Must-revalidate Directive",
          "type": "bool",
          "default": false
        },
        "noCacheBehavior": {
          "description": "Selecting spec behavior enables the validation of every request for assets returned by your origin with the no-cache directive. The legacy behavior reduces the request rate to your origin by sending a single validation request to your origin for all concurrent requests processed by the CDN.\n",
          "required": false,
          "friendlyName": "Validation Method for No-cache Directives",
          "type": "enum[legacy|spec]",
          "default": "legacy"
        },
        "maxAgeZeroToNoCache": {
          "description": "This enables the CDN to apply the no-cache behavior for assets delivered by your origin containing a max-age directive equal to zero.\n",
          "required": false,
          "friendlyName": "Apply No-cache Behavior for Zero TTL Assets",
          "type": "bool",
          "default": false
        },
        "mustRevalidateToNoCache": {
          "description": "This enables the CDN to apply the no-cache behavior for assets delivered by your origin containing the must-revalidate directive.\n",
          "required": false,
          "friendlyName": "Apply No-cache Behavior for Must-revalidate Assets",
          "type": "bool",
          "default": false
        },
        "bypassCacheIdentifier": {
          "description": "This allows you to define a custom directive that, when used by your origin in the Cache-Control response headers, forces the CDN to proxy the request to the end user without caching the result.\n",
          "required": false,
          "friendlyName": "Bypass-Cache Cache-Control Directive",
          "type": "string",
          "default": null
        },
        "forceBypassCache": {
          "description": "This forces the CDN to not cache any asset pulled from your origin that would otherwise be stored at this location in the cache.  Typically this policy is used to prevent 4XX and 5XX response codes from overwriting a file in the cache.\n",
          "required": false,
          "friendlyName": "Bypass cache on all assets stored at this scope",
          "type": "bool",
          "default": false
        },
        "httpHeaders": {
          "description": "This is the list of your origin’s HTTP headers that you want the CDN to cache and deliver to end users.\n",
          "required": false,
          "friendlyName": "HTTP Header Caching",
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        },
        "honorPrivate": {
          "description": "This enables the processing of private HTTP Cache-Control directives on your container. By enabling this option, responses  from your origin containing the private directive are not cached.  Be aware that requests for non-cacheable assets are  always forwarded to your origin and may impose a high request and bandwidth load on your origin.\n",
          "required": false,
          "friendlyName": "Enable private Directive",
          "type": "bool",
          "default": false
        },
        "honorSMaxAge": {
          "description": "This enables the processing of s-maxage HTTP Cache-Control directives on your container. By enabling this option, the s-maxage HTTP  Cache-Control directive in the responses from your origin will take precedent over the max-age directive.  If both max-age and s-maxage need to be preserved in the client response, the Cache-Control header must be added to the \"Http Header Caching\" setting. \n",
          "required": false,
          "friendlyName": "Enable s-maxage Directive",
          "type": "bool",
          "default": false
        }
      }
    }
  },
  "SERVICE": {
    "customer": {
      "description": "General Customer Config Definitions.\n\nWARNING: All of these must be defined at the same scope, or they may not take effect properly.\n",
      "groupable": null,
      "friendlyName": null,
      "allowedScope": "ROOT",
      "defaultPolicy": {
        "suspended": false
      },
      "keys": {
        "accessLogFields": {
          "description": "Comma delimited list of HTTP header fields to append to the standard fields in the access log. Each field must have the 'sc:' (server-to-client) or 'cs:' (client-to-server) prefix.\n\nNOTE: the colon (:) is required.",
          "required": false,
          "friendlyName": null,
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        },
        "opLogFields": {
          "description": "Comma delimited list of HTTP header fields to append to the standard fields in the origin pull log. Each field must have the 'sc:' (server-to-client) or 'cs:' (client-to-server) prefix.\n\nNOTE: the colon (:) is required.",
          "required": false,
          "friendlyName": null,
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        },
        "receiptLogFields": {
          "description": "Comma delimited list of HTTP header fields to append to the standard fields in the Receipt Access log. Each field must have the 'sc:' (server-to-client) or 'cs:' (client-to-server) prefix.\n\nNOTE: the colon (:) is required.\n",
          "required": false,
          "friendlyName": null,
          "type": "list<string>",
          "delimiter": ",",
          "default": null
        }
      }
    }
  },
  "ORIGIN_PULL": {
    "customHeader": {
      "description": "The X-Forwarded-For header policy allows you to override the name of the X-Forwarded-For header the CDN sends to your origin.\n",
      "groupable": null,
      "friendlyName": "Custom X-Forwarded-For Header",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "xForwardedForAuth": {
          "description": "This is the name of the X-Forwarded-For header you want the the CDN to use when making requests to your basic authorization server.\n",
          "required": false,
          "friendlyName": "Basic Authorization X-Forwarded-For",
          "type": "string",
          "default": null
        },
        "xForwardedForOrigin": {
          "description": "This is the name of the X-Forwarded-For header you want the CDN to use when making requests to your origin server.\n",
          "required": false,
          "friendlyName": "Origin Server X-Forwarded-For",
          "type": "string",
          "default": null
        }
      }
    },
    "gzipOriginPull": {
      "description": "The compressed origin pull policy allows you to enable the CDN caching servers to request compressed assets from your origin.  By enabling this policy, the CDN caching servers send your origin the  HTTP Accept-Encoding header with the gzip code (Accept-Encoding: gzip).\n",
      "groupable": null,
      "friendlyName": "Compressed Origin Pull",
      "allowedScope": "DIR",
      "defaultPolicy": {
        "enabled": false
      },
      "keys": {
        "enabled": {
          "description": "This enables support for compressed origin pull\n",
          "required": true,
          "friendlyName": "Enabled Compressed Origin Pull",
          "type": "bool",
          "default": null
        }
      }
    },
    "originPull": {
      "description": "The origin pull settings policy contains a list of settings that control the behavior of origin pull requests.\n",
      "groupable": null,
      "friendlyName": "Origin Pull Settings",
      "allowedScope": "DIR",
      "defaultPolicy": {
        "defaultBehavior": "dedup",
        "redirectAction": "follow",
        "transparentMode": false
      },
      "keys": {
        "redirectAction": {
          "description": "This value specifies how the CDN handles redirect response codes from your origin. The \"follow\" behavior instructs the CDN to follow redirect requests from your origin instead of caching the response.  The \"proxy\" behavior instructs  the CDN to cache and proxy redirect responses from your origin instead of following them. NOTE: The CDN will follow up to 5 redirect responses from your origin.\n",
          "required": false,
          "friendlyName": "Origin Redirect Behavior",
          "type": "enum[follow|proxy]",
          "default": "follow"
        }
      }
    }
  },
  "HOSTNAME_LIST": {
    "hostname": {
      "description": "A hostname policy allows you to specify an alternate domain name that you want to use to access content from your CDN container.\n",
      "groupable": "LIST",
      "friendlyName": "Hostname Policy",
      "allowedScope": "DIR",
      "defaultPolicy": null,
      "keys": {
        "domain": {
          "description": "This is the hostname you want to enable in this policy.  Note: You must configure your container's CNAME record with your DNS provider to enable this hostname to deliver content.\n",
          "required": true,
          "friendlyName": "Hostname",
          "type": "string",
          "default": null
        }
      }
    }
  }
}