# Create cXML Script
POST https://%7BYour_Space_Name%7D.signalwire.com/api/fabric/resources/cxml_scripts
Content-Type: application/json
Creates a cXML Script
#### Permissions
The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Voice_, _Messaging_, _Fax_, or _Video_.
[Learn more about API scopes](/docs/platform/your-signalwire-api-space).
Reference: https://signalwire.com/docs/apis/fabric/cxml-scripts/create-cxml-script
## OpenAPI Specification
```yaml
openapi: 3.1.0
info:
title: fabric
version: 1.0.0
paths:
/resources/cxml_scripts:
post:
operationId: create-cxml-script
summary: Create cXML Script
description: >-
Creates a cXML Script
#### Permissions
The API token used to authenticate must have the following scope(s)
enabled to make a successful request: _Voice_, _Messaging_, _Fax_, or
_Video_.
[Learn more about API scopes](/docs/platform/your-signalwire-api-space).
tags:
- subpackage_cxmlScripts
parameters:
- name: Authorization
in: header
description: >-
SignalWire Basic Authentication using Project ID and API Token.
The client sends HTTP requests with the Authorization header
containing
the word Basic followed by a space and a base64-encoded string of
project_id:token.
The project ID will be used as the username and the API token as the
password.
Example:
```
Authorization: Basic base64(project_id:token)
```
required: true
schema:
type: string
responses:
'200':
description: The request has succeeded.
content:
application/json:
schema:
$ref: '#/components/schemas/CXMLScriptResponse'
'401':
description: Access is unauthorized.
content:
application/json:
schema:
$ref: '#/components/schemas/Types.StatusCodes.StatusCode401'
'404':
description: The server cannot find the requested resource.
content:
application/json:
schema:
$ref: '#/components/schemas/Types.StatusCodes.StatusCode404'
'422':
description: The request contains invalid parameters. See errors for details.
content:
application/json:
schema:
$ref: '#/components/schemas/CXMLScriptCreateStatusCode422'
'500':
description: An internal server error occurred.
content:
application/json:
schema:
$ref: '#/components/schemas/Types.StatusCodes.StatusCode500'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CXMLScriptCreateRequest'
servers:
- url: https://%7BYour_Space_Name%7D.signalwire.com/api/fabric
components:
schemas:
CxmlScriptCreateRequestStatusCallbackMethod0:
type: string
enum:
- GET
title: CxmlScriptCreateRequestStatusCallbackMethod0
CxmlScriptCreateRequestStatusCallbackMethod1:
type: string
enum:
- POST
title: CxmlScriptCreateRequestStatusCallbackMethod1
CxmlScriptCreateRequestStatusCallbackMethod:
oneOf:
- $ref: '#/components/schemas/CxmlScriptCreateRequestStatusCallbackMethod0'
- $ref: '#/components/schemas/CxmlScriptCreateRequestStatusCallbackMethod1'
description: HTTP method to use for status callbacks
title: CxmlScriptCreateRequestStatusCallbackMethod
CXMLScriptCreateRequest:
type: object
properties:
display_name:
type: string
description: Display name of the cXML Script
contents:
type: string
description: The cXML script contents
status_callback_url:
type: string
format: uri
description: URL to send status callbacks to
status_callback_method:
$ref: '#/components/schemas/CxmlScriptCreateRequestStatusCallbackMethod'
description: HTTP method to use for status callbacks
required:
- display_name
- contents
title: CXMLScriptCreateRequest
uuid:
type: string
format: uuid
description: Universal Unique Identifier.
title: uuid
CxmlScriptResponseType:
type: string
enum:
- cxml_script
description: Type of the Fabric Resource
title: CxmlScriptResponseType
CxmlScriptScriptType:
type: string
enum:
- calling
- messaging
description: The script type the cXML Script is used for
title: CxmlScriptScriptType
CxmlScriptStatusCallbackMethod0:
type: string
enum:
- GET
title: CxmlScriptStatusCallbackMethod0
CxmlScriptStatusCallbackMethod1:
type: string
enum:
- POST
title: CxmlScriptStatusCallbackMethod1
CxmlScriptStatusCallbackMethod:
oneOf:
- $ref: '#/components/schemas/CxmlScriptStatusCallbackMethod0'
- $ref: '#/components/schemas/CxmlScriptStatusCallbackMethod1'
description: HTTP method for status callback URL
title: CxmlScriptStatusCallbackMethod
CXMLScript:
type: object
properties:
id:
$ref: '#/components/schemas/uuid'
description: Unique ID of a cXML Script.
contents:
type: string
description: The cXML script contents
request_count:
type: integer
description: The amout of times the cXML script has been requested
last_accessed_at:
type:
- string
- 'null'
format: date-time
description: The date and time when the cXML script was last accessed
request_url:
type: string
format: uri
description: The URL where the cXML script can be accessed
script_type:
$ref: '#/components/schemas/CxmlScriptScriptType'
description: The script type the cXML Script is used for
display_name:
type: string
description: Display name of the cXML Script Fabric Resource
status_callback_url:
type:
- string
- 'null'
format: uri
description: The url that will send status updates for the cXML Script
status_callback_method:
$ref: '#/components/schemas/CxmlScriptStatusCallbackMethod'
description: HTTP method for status callback URL
required:
- id
- contents
- request_count
- last_accessed_at
- request_url
- script_type
- display_name
title: CXMLScript
CXMLScriptResponse:
type: object
properties:
id:
$ref: '#/components/schemas/uuid'
description: Unique ID of the cXML Script.
project_id:
$ref: '#/components/schemas/uuid'
description: Unique ID of the Project.
name:
type: string
description: Display name of the cXML Script Fabric Resource
type:
$ref: '#/components/schemas/CxmlScriptResponseType'
description: Type of the Fabric Resource
created_at:
type: string
format: date-time
description: Date and time when the resource was created.
updated_at:
type: string
format: date-time
description: Date and time when the resource was updated.
cxml_script:
$ref: '#/components/schemas/CXMLScript'
description: cXML Script data.
required:
- id
- project_id
- name
- type
- created_at
- updated_at
- cxml_script
title: CXMLScriptResponse
TypesStatusCodesStatusCode401Error:
type: string
enum:
- Unauthorized
title: TypesStatusCodesStatusCode401Error
Types.StatusCodes.StatusCode401:
type: object
properties:
error:
$ref: '#/components/schemas/TypesStatusCodesStatusCode401Error'
required:
- error
description: Access is unauthorized.
title: Types.StatusCodes.StatusCode401
TypesStatusCodesStatusCode404Error:
type: string
enum:
- Not Found
title: TypesStatusCodesStatusCode404Error
Types.StatusCodes.StatusCode404:
type: object
properties:
error:
$ref: '#/components/schemas/TypesStatusCodesStatusCode404Error'
required:
- error
description: The server cannot find the requested resource.
title: Types.StatusCodes.StatusCode404
Types.StatusCodes.RestApiErrorItem:
type: object
properties:
type:
type: string
description: The category of error.
code:
type: string
description: A specific error code.
message:
type: string
description: A description of what caused the error.
attribute:
type:
- string
- 'null'
description: The request parameter that caused the error, if applicable.
url:
type: string
description: A link to documentation about this error.
required:
- type
- code
- message
- url
description: Details about a specific error.
title: Types.StatusCodes.RestApiErrorItem
CXMLScriptCreateStatusCode422:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Types.StatusCodes.RestApiErrorItem'
description: List of validation errors.
required:
- errors
description: The request contains invalid parameters. See errors for details.
title: CXMLScriptCreateStatusCode422
TypesStatusCodesStatusCode500Error:
type: string
enum:
- Internal Server Error
title: TypesStatusCodesStatusCode500Error
Types.StatusCodes.StatusCode500:
type: object
properties:
error:
$ref: '#/components/schemas/TypesStatusCodesStatusCode500Error'
required:
- error
description: An internal server error occurred.
title: Types.StatusCodes.StatusCode500
securitySchemes:
SignalWireBasicAuth:
type: http
scheme: basic
description: >-
SignalWire Basic Authentication using Project ID and API Token.
The client sends HTTP requests with the Authorization header containing
the word Basic followed by a space and a base64-encoded string of
project_id:token.
The project ID will be used as the username and the API token as the
password.
Example:
```
Authorization: Basic base64(project_id:token)
```
```
## SDK Code Examples
```python
import requests
url = "https://{your_space_name}.signalwire.com/api/fabric/resources/cxml_scripts"
payload = {
"display_name": "Reception Script",
"contents": "Hello World"
}
headers = {
"Authorization": "Basic :",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
```
```javascript
const url = 'https://{your_space_name}.signalwire.com/api/fabric/resources/cxml_scripts';
const options = {
method: 'POST',
headers: {
Authorization: 'Basic :',
'Content-Type': 'application/json'
},
body: '{"display_name":"Reception Script","contents":"Hello World"}'
};
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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{your_space_name}.signalwire.com/api/fabric/resources/cxml_scripts"
payload := strings.NewReader("{\n \"display_name\": \"Reception Script\",\n \"contents\": \"Hello World\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Basic :")
req.Header.Add("Content-Type", "application/json")
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("https://{your_space_name}.signalwire.com/api/fabric/resources/cxml_scripts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic :'
request["Content-Type"] = 'application/json'
request.body = "{\n \"display_name\": \"Reception Script\",\n \"contents\": \"Hello World\"\n}"
response = http.request(request)
puts response.read_body
```
```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse response = Unirest.post("https://{your_space_name}.signalwire.com/api/fabric/resources/cxml_scripts")
.header("Authorization", "Basic :")
.header("Content-Type", "application/json")
.body("{\n \"display_name\": \"Reception Script\",\n \"contents\": \"Hello World\"\n}")
.asString();
```
```php
request('POST', 'https://{your_space_name}.signalwire.com/api/fabric/resources/cxml_scripts', [
'body' => '{
"display_name": "Reception Script",
"contents": "Hello World"
}',
'headers' => [
'Authorization' => 'Basic :',
'Content-Type' => 'application/json',
],
]);
echo $response->getBody();
```
```csharp
using RestSharp;
var client = new RestClient("https://{your_space_name}.signalwire.com/api/fabric/resources/cxml_scripts");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic :");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"display_name\": \"Reception Script\",\n \"contents\": \"Hello World\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```
```swift
import Foundation
let headers = [
"Authorization": "Basic :",
"Content-Type": "application/json"
]
let parameters = [
"display_name": "Reception Script",
"contents": "Hello World"
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "https://{your_space_name}.signalwire.com/api/fabric/resources/cxml_scripts")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
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()
```