# Assign a Resource to a SIP endpoint
POST https://%7BYour_Space_Name%7D.signalwire.com/api/fabric/resources/sip_endpoints/resources/{id}/sip_endpoints
Content-Type: application/json
This endpoint assigns a specific resource to a SIP endpoint, allowing inbound calls to be handled by the resource.
Currently only supports `calling` as a handler and automatically defaults to it.
#### 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/sip-endpoints/assign-resource-sip-endpoint
## OpenAPI Specification
```yaml
openapi: 3.1.0
info:
title: fabric
version: 1.0.0
paths:
/resources/sip_endpoints/resources/{id}/sip_endpoints:
post:
operationId: assign-resource-sip-endpoint
summary: Assign a Resource to a SIP endpoint
description: >-
This endpoint assigns a specific resource to a SIP endpoint, allowing
inbound calls to be handled by the resource.
Currently only supports `calling` as a handler and automatically
defaults to it.
#### 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_sipEndpoints
parameters:
- name: id
in: path
description: The unique identifier of the Resource.
required: true
schema:
$ref: '#/components/schemas/uuid'
- 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/ResourceSipEndpointResponse'
'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/ResourceSubSipEndpointCreateStatusCode422'
'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/ResourceSipEndpointAssignRequest'
servers:
- url: https://%7BYour_Space_Name%7D.signalwire.com/api/fabric
components:
schemas:
uuid:
type: string
format: uuid
description: Universal Unique Identifier.
title: uuid
ResourceSipEndpointAssignRequest:
type: object
properties:
sip_endpoint_id:
$ref: '#/components/schemas/uuid'
description: The unique identifier of the SIP endpoint.
required:
- sip_endpoint_id
title: ResourceSipEndpointAssignRequest
ResourceSipEndpointResponseType:
type: string
enum:
- call
description: The Resource type
title: ResourceSipEndpointResponseType
AudioChannel:
type: object
properties:
audio:
type: string
description: Audio Channel of Fabric Address
required:
- audio
title: AudioChannel
MessagingChannel:
type: object
properties:
messaging:
type: string
description: Messaging Channel of Fabric Address
required:
- messaging
title: MessagingChannel
VideoChannel:
type: object
properties:
video:
type: string
description: Video Channel of Fabric Address
required:
- video
title: VideoChannel
AddressChannel:
oneOf:
- $ref: '#/components/schemas/AudioChannel'
- $ref: '#/components/schemas/MessagingChannel'
- $ref: '#/components/schemas/VideoChannel'
title: AddressChannel
ResourceSipEndpointResponse:
type: object
properties:
id:
$ref: '#/components/schemas/uuid'
description: The unique identifier of the SIP endpoint.
name:
type: string
description: The name for the SIP endpoint.
type:
$ref: '#/components/schemas/ResourceSipEndpointResponseType'
description: The Resource type
cover_url:
type:
- string
- 'null'
format: uri
description: The cover URL for the SIP endpoint.
preview_url:
type:
- string
- 'null'
format: uri
description: The preview URL for the SIP endpoint.
channels:
$ref: '#/components/schemas/AddressChannel'
description: >-
An object containing the resource addresses with the specified
comunication channels
required:
- id
- name
- type
- cover_url
- preview_url
- channels
title: ResourceSipEndpointResponse
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
ResourceSubSipEndpointCreateStatusCode422:
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: ResourceSubSipEndpointCreateStatusCode422
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/sip_endpoints/resources/id/sip_endpoints"
payload = { "sip_endpoint_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" }
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/sip_endpoints/resources/id/sip_endpoints';
const options = {
method: 'POST',
headers: {
Authorization: 'Basic :',
'Content-Type': 'application/json'
},
body: '{"sip_endpoint_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}'
};
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/sip_endpoints/resources/id/sip_endpoints"
payload := strings.NewReader("{\n \"sip_endpoint_id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\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/sip_endpoints/resources/id/sip_endpoints")
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 \"sip_endpoint_id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\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/sip_endpoints/resources/id/sip_endpoints")
.header("Authorization", "Basic :")
.header("Content-Type", "application/json")
.body("{\n \"sip_endpoint_id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n}")
.asString();
```
```php
request('POST', 'https://{your_space_name}.signalwire.com/api/fabric/resources/sip_endpoints/resources/id/sip_endpoints', [
'body' => '{
"sip_endpoint_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}',
'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/sip_endpoints/resources/id/sip_endpoints");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic :");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"sip_endpoint_id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```
```swift
import Foundation
let headers = [
"Authorization": "Basic :",
"Content-Type": "application/json"
]
let parameters = ["sip_endpoint_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"] 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/sip_endpoints/resources/id/sip_endpoints")! 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()
```