> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://akamai.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://akamai.ferndocs.com/_mcp/server.

# Regex pattern tests

GET http://{hostname}/test-suite/v2/lang-patterns

Each schema demonstrates a language issue.

Reference: https://akamai.ferndocs.com/demo-apis/api/language/language/get-lang-patterns

## Request

### Query parameters

- `accountSwitchKey` (string, optional) — For customers who manage more than one account, this [runs the operation from another account](https://techdocs.akamai.com/developer/docs/manage-many-accounts-with-one-api-client). The Identity and Access Management API provides a [list of available account switch keys](https://techdocs.akamai.com/iam-api/reference/get-client-account-switch-keys).

## Response

### 200

Empty response.

- `lang-alternate-plural` (string, optional) — Lists the names of Anti-Malware software(s) that are active on the device. Tests all IP address(es) for liveness.
- `lang-capitalized-phrase` (string, optional) — This sentence features Noun Modification Concatenation Somnambulation.
- `lang-chris-farley` (string, optional) — The basic unit within a NetStorage instance is referred to as a "storage group." Unicode string data. Ex: 'Hello World'. Once this period expires, Akamai marks the token as "unrevoked" and it can be used again.
- `lang-clause-dash` (string, optional) — Indicates the type of event - aup or avc. The message downloads only if the condition fails -- data has a different `ETag` than the provided one. The range format is `min:max` — for example, `2:4`. The incoming client request's `Host` header – for example, `www.example.com`. Downstream caching refers to the caching instructions associated with objects sent with responses toward clients&mdash;browsers, mobile devices, or client proxies.
- `lang-clause-paren` (string, optional) — This sentence has a parenthetical clause (but you knew that). This test should catch multi-word phrases, but not simple definitions of a three-letter acronym (TLA). Let's add a sentence here to put some space after that last paren. (It should also catch sentence-style parentheticals.)
- `lang-clause-semicolon` (string, optional, nullable) — With `APPLY_ACS_QUERY_CONVERSION`, the key is reviewed and stripped down using settings defined for `queryStringConversionKeyOrder` and `queryStringConversionExclude`; a hash of the string is also applied and used for matching at request time. A text description of the error code; returns `null` on success when the `errorCode` is `400`. Consumers should not parse the `detail` member for information; extensions are more suitable and less error-prone ways to obtain such information. Comma-separated list of options to enable; `mapDetails` enables extra mapping-related information. The IDP manually overridden; otherwise `False`.
- `lang-common-abbrev` (string, optional) — A trailing pipe at the end of a bucket indicates that there is no _greater than the max_ bucket, i.e. in the above example if loss schema was `0|5|80|` then it would mean `0%`, `0%` to `5%`, and `5%` to `80%`. Used primarily when it may be changed, e.g. by an intermediary or cache. The Medicaid Recipient ID number, a.k.a. _Client Identification Number_. The Read-Write vs. Read-only setting for the account. This API returns a collection of reports containing the provisioned demand percentage vs actual demand percentage seen by GTM rounded off to nearest 5 min interval for each data center. The logged event of a user-performed action, for example, the creation of a test definition or test case, the removal of either, adding a note to a diff, etc. The Medicaid Recipient ID number, aka _Client Identification Number_.
- `lang-component-based` (string, optional) — Purge enables you to push new content to the edge network. It lets you have fine-grained control over what publishes. It allows you to get your work done.
- `lang-contractions` (string, optional) — You should not write like this, because there is no reason to. If you did not write conversationally, it is not good writing. You are not obliged to write like this, and you can not keep doing this. If you could not avoid it, or if there have not been any opportunities to avoid it, it is bad writing that is difficult to read. If you are not able to stop doing this, we are obliged to trigger an error. And we will trigger an error, even when it does not necessarily apply. If what is being expressed sounds turgid to customers, they are turned off. If you have not already been warned, you would not be surprised by these errors, and you will be well advised to rewrite a bit. But you do not need to fix the ones that were not a problem.
- `lang-duplicate-word` (string, optional) — This word is is duplicated. It is easy to to miss these. Call it a a problem.
- `lang-hyphenated-adverb` (string, optional) — This is an unnecessarily-hyphenated adverb that ends in _ly_.
- `lang-join-term` (string, optional) — The user name who activated the key collection version. The selected set of host names in this configuration version. Input the complete path and file name for this file as a string.
- `lang-kw-akamai-cc` (string, optional) — This is referred to as the "Id" in the Control Center interface. Maintaining properties manually within the Akamai Control Center interface limits you to that more consolidated approach. PAPI allows you to deploy rules more efficiently.
- `lang-kw-akamai-depr` (string, optional) — A list of up to 20 Luna Control Center usernames of those who serve as the event's coordinators. Indicates if the API client's permissions are tied to a Luna user's permissions. Specifies the different ways you can edit an API client, including changing its owner, access rights to Luna services or resources, or deleting it. Note that `ccuParams` are only applicable for CCU OPEN clients. This doesn't delete the OPEN identity or the credentials.
- `lang-kw-date-time` (datetime, optional) — The date and time when something happened.
- `lang-kw-endpoint` (string, optional) — Call GET on the `/foo/bar/{fubarId}` endpoint. Then modify the data and pass it in on a PUT call to the same endpoint.
- `lang-kw-ghost` (string, optional) — This refers incorrectly to a Ghost server. A common variant is GHost server, and perhaps a plain old ghost server. All of these case-insensitive variants are hinky, including GHOST.
- `lang-kw-iso-6801` (string, optional) — This refers incorrectly to ISO 6801.
- `lang-kw-js` (string, optional) — This refers incorrectly to Javascript. However, a `Content-Type` of `text/javascript;charset=UTF-8` is correct. Also lowercased javascript is incorrect.
- `lang-kw-multiple` (string, optional) — I went down to the store and bought milk, butter, and multiple eggs.
- `lang-kw-provision` (string, optional) — This sentence provisions something or other, but it's unclear what exactly is happening.
- `lang-kw-utilize` (string, optional) — This sentence utilizes a word that's entirely unnecessary.
- `lang-link-url-display` (string, optional) — This URL display link [https://www.google.com](https://www.google.com) triggers an error. So does this [www.google.com](https://www.google.com) hostname link. So does this [google.com](https://www.google.com) domain name link.
- `lang-musty` (string, optional) — You must avoid the imperative tone in sentences like this. Avoiding the imperative tone is required, or you fail ignominiously.
- `lang-passive-voice` (string, optional) — Passive voice may be used in this sentence.
- `lang-preposition-phrase` (string, optional) — Too many preposition phrases chained together in a sentence cause problems of the comprehension.
- `lang-sensitive-terms` (string, optional) — A value of `WHITELISTED` indicates you're waiting for approval from the China partner to enable your property `hostname` in China. This removes the property `hostname` from the whitelist without unmapping the edge hostname from it. Indicates if the device is blacklisted from the network. This object contains a whitelist or blacklist of domains and IP addresses to allow or block on your domain. Each string is encoded in master file format. RFC 1035 defines master file format for most record types. When you configure a `SECONDARY` zone, several Akamai nameservers known as zone transfer agents perform zone transfer requests to fetch the record data from the zone's configured master nameservers.
- `lang-slash-alternators` (string, optional) — This and/or that could be a problem. Or perhaps it is/may be a problem.
- `lang-spell-code` (string, optional) — This `isMispelld` word is in a camelCased literal.
- `lang-spell-text` (string, optional) — This is an ordinary mispelld word.
- `lang-split-term` (string, optional) — Identifies the `datacenterId` of which this datacenter is a clone. A datacenter clone is just like any other datacenter except that it inherits its `continent`, `country`, `stateOrProvince`, `city`, `latitude`, and `longitude` geographic attributes from the datacenter of which it is a clone.
- `lang-standards-body` (string, optional) — ISO-8601 timestamp indicating when the test definition was created. ISO3166 region code the edge IP maps to. Don't use non-routable RFC-1918 addresses. The value needs to be a valid RFC1123 hostname.
- `lang-tbd` (string, optional) — TBD.
- `lang-third-person-singular` (string, optional) — If a user were to modify his edge configuration's cache settings, her traffic would not spike.
- `lang-weak-relation` (string, optional) — The list of parameter objects associated with the method. The unique identifier for the contract associated with the stream.
- `lang-willies` (string, optional) — This sentence will trigger a test for unnecessary future tense.
- `openapi-multiline-block` (string, optional) — This paragraph is split onto more than one line. This separate paragraph is also split onto more than one line.
- `openapi-pipe-quote-desc` (string, optional) — This description is not pipe-quoted in YAML.

## Examples

**Response**

```json
{
  "lang-alternate-plural": "...",
  "lang-chris-farley": "...",
  "lang-clause-dash": "...",
  "lang-clause-paren": "...",
  "lang-clause-semicolon": "...",
  "lang-common-abbrev": "...",
  "lang-component-based": "...",
  "lang-contractions": "...",
  "lang-duplicate-word": "...",
  "lang-hyphenated-adverb": "...",
  "lang-join-term": "...",
  "lang-kw-akamai-cc": "...",
  "lang-kw-akamai-depr": "...",
  "lang-kw-endpoint": "...",
  "lang-kw-js": "...",
  "lang-kw-multiple": "...",
  "lang-kw-provision": "...",
  "lang-kw-utilize": "...",
  "lang-link-url-display": "...",
  "lang-musty": "...",
  "lang-passive-voice": "...",
  "lang-sensitive-terms": "...",
  "lang-slash-alternators": "...",
  "lang-spell-code": "...",
  "lang-spell-text": "...",
  "lang-split-term": "...",
  "lang-standards-body": "...",
  "lang-tbd": "...",
  "lang-third-person-singular": "...",
  "lang-weak-relation": "...",
  "lang-willies": "...",
  "openapi-multiline-block": "...",
  "openapi-pipe-quote-desc": "..."
}
```

**SDK Code**

```python
import requests

url = "http://{hostname}/test-suite/v2/lang-patterns"

response = requests.get(url)

print(response.json())
```

```javascript
const url = 'http://{hostname}/test-suite/v2/lang-patterns';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "http://{hostname}/test-suite/v2/lang-patterns"

	req, _ := http.NewRequest("GET", url, nil)

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("http://{hostname}/test-suite/v2/lang-patterns")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Get.new(url)

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("http://{hostname}/test-suite/v2/lang-patterns")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'http://{hostname}/test-suite/v2/lang-patterns');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("http://{hostname}/test-suite/v2/lang-patterns");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let request = NSMutableURLRequest(url: NSURL(string: "http://{hostname}/test-suite/v2/lang-patterns")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```