# `Twilio.Sip.Domains`

API calls: `create`, `delete`, `list`, `retrieve`, `update`.

# `create`

```elixir
@spec create(map() | keyword(), keyword()) ::
  {:ok, Twilio.Schemas.SipDomain.t()} | {:error, Infusion.Runtime.Error.t()}
```

Create a new Domain

`POST /2010-04-01/Accounts/{AccountSid}/SIP/Domains.json`

`{AccountSid}` in the path is the `:account_sid` setting; pass `account_sid: "..."` as an option to use another.

## Parameters

  * `byoc_trunk_sid` - The SID of the BYOC Trunk(Bring Your Own Carrier) resource that the Sip Domain will be associated with.
  * `domain_name` (required) - The unique address you reserve on Twilio to which you route your SIP traffic. Domain names can contain letters, digits, and "-" and must end with `sip.twilio.com`.
  * `emergency_caller_sid` - Whether an emergency caller sid is configured for the domain. If present, this phone number will be used as the callback for the emergency call.
  * `emergency_calling_enabled` - Whether emergency calling is enabled for the domain. If enabled, allows emergency calls on the domain from phone numbers with validated addresses.
  * `friendly_name` - A descriptive string that you created to describe the resource. It can be up to 64 characters long.
  * `secure` - Whether secure SIP is enabled for the domain. If enabled, TLS will be enforced and SRTP will be negotiated on all incoming calls to this sip domain.
  * `sip_registration` - Whether to allow SIP Endpoints to register with the domain to receive calls. Can be `true` or `false`. `true` allows SIP Endpoints to register with the domain to receive calls, `false` does not.
  * `voice_fallback_method` - The HTTP method we should use to call `voice_fallback_url`. Can be: `GET` or `POST`.
  * `voice_fallback_url` - The URL that we should call when an error occurs while retrieving or executing the TwiML from `voice_url`.
  * `voice_method` - The HTTP method we should use to call `voice_url`. Can be: `GET` or `POST`.
  * `voice_status_callback_method` - The HTTP method we should use to call `voice_status_callback_url`. Can be: `GET` or `POST`.
  * `voice_status_callback_url` - The URL that we should call to pass status parameters (such as call ended) to your application.
  * `voice_url` - The URL we should when the domain receives a call.

# `create!`

```elixir
@spec create!(map() | keyword(), keyword()) :: Twilio.Schemas.SipDomain.t()
```

Like `create/2`, but returns the result or raises `Infusion.Runtime.Error`.

# `delete`

```elixir
@spec delete(String.t(), keyword()) ::
  {:ok, nil} | {:error, Infusion.Runtime.Error.t()}
```

Delete an instance of a Domain

`DELETE /2010-04-01/Accounts/{AccountSid}/SIP/Domains/{Sid}.json`

## Path parameters

  * `sid` (required) - The Twilio-provided string that uniquely identifies the SipDomain resource to delete.

`{AccountSid}` in the path is the `:account_sid` setting; pass `account_sid: "..."` as an option to use another.

# `delete!`

```elixir
@spec delete!(String.t(), keyword()) :: nil
```

Like `delete/2`, but returns the result or raises `Infusion.Runtime.Error`.

# `list`

```elixir
@spec list(map() | keyword(), keyword()) ::
  {:ok, Twilio.Schemas.SipDomainsListResponse.t()}
  | {:error, Infusion.Runtime.Error.t()}
```

Retrieve a list of domains belonging to the account used to make the request

`GET /2010-04-01/Accounts/{AccountSid}/SIP/Domains.json`

`{AccountSid}` in the path is the `:account_sid` setting; pass `account_sid: "..."` as an option to use another.

## Parameters

  * `page_size` - How many resources to return in each list page. The default is 50, and the maximum is 1000.
  * `page` - The page index. This value is simply for client state.
  * `page_token` - The page token. This is provided by the API.

To read every item across all pages, use `list_all`.

# `list!`

```elixir
@spec list!(map() | keyword(), keyword()) :: Twilio.Schemas.SipDomainsListResponse.t()
```

Like `list/2`, but returns the result or raises `Infusion.Runtime.Error`.

# `list_all`

```elixir
@spec list_all(map() | keyword(), keyword()) ::
  {:ok, Enumerable.t()} | {:error, Infusion.Runtime.Error.t()}
```

Like `list/2`, but returns every item, from every page: a lazy stream of `Twilio.Schemas.SipDomain.t()` that fetches pages as it is read.

The first page is fetched right away, so its errors are returned; a later page that fails raises `Infusion.Runtime.Error`. Stopping early (`Enum.take/2`) fetches no more pages.

# `list_all!`

```elixir
@spec list_all!(map() | keyword(), keyword()) :: Enumerable.t()
```

Like `list_all/2`, but returns the stream or raises `Infusion.Runtime.Error`.

# `retrieve`

```elixir
@spec retrieve(String.t(), keyword()) ::
  {:ok, Twilio.Schemas.SipDomain.t()} | {:error, Infusion.Runtime.Error.t()}
```

Fetch an instance of a Domain

`GET /2010-04-01/Accounts/{AccountSid}/SIP/Domains/{Sid}.json`

## Path parameters

  * `sid` (required) - The Twilio-provided string that uniquely identifies the SipDomain resource to fetch.

`{AccountSid}` in the path is the `:account_sid` setting; pass `account_sid: "..."` as an option to use another.

# `retrieve!`

```elixir
@spec retrieve!(String.t(), keyword()) :: Twilio.Schemas.SipDomain.t()
```

Like `retrieve/2`, but returns the result or raises `Infusion.Runtime.Error`.

# `update`

```elixir
@spec update(String.t(), map() | keyword(), keyword()) ::
  {:ok, Twilio.Schemas.SipDomain.t()} | {:error, Infusion.Runtime.Error.t()}
```

Update the attributes of a domain

`POST /2010-04-01/Accounts/{AccountSid}/SIP/Domains/{Sid}.json`

## Path parameters

  * `sid` (required) - The Twilio-provided string that uniquely identifies the SipDomain resource to update.

`{AccountSid}` in the path is the `:account_sid` setting; pass `account_sid: "..."` as an option to use another.

## Parameters

  * `byoc_trunk_sid` - The SID of the BYOC Trunk(Bring Your Own Carrier) resource that the Sip Domain will be associated with.
  * `domain_name` - The unique address you reserve on Twilio to which you route your SIP traffic. Domain names can contain letters, digits, and "-" and must end with `sip.twilio.com`.
  * `emergency_caller_sid` - Whether an emergency caller sid is configured for the domain. If present, this phone number will be used as the callback for the emergency call.
  * `emergency_calling_enabled` - Whether emergency calling is enabled for the domain. If enabled, allows emergency calls on the domain from phone numbers with validated addresses.
  * `friendly_name` - A descriptive string that you created to describe the resource. It can be up to 64 characters long.
  * `secure` - Whether secure SIP is enabled for the domain. If enabled, TLS will be enforced and SRTP will be negotiated on all incoming calls to this sip domain.
  * `sip_registration` - Whether to allow SIP Endpoints to register with the domain to receive calls. Can be `true` or `false`. `true` allows SIP Endpoints to register with the domain to receive calls, `false` does not.
  * `voice_fallback_method` - The HTTP method we should use to call `voice_fallback_url`. Can be: `GET` or `POST`.
  * `voice_fallback_url` - The URL that we should call when an error occurs while retrieving or executing the TwiML requested by `voice_url`.
  * `voice_method` - The HTTP method we should use to call `voice_url`
  * `voice_status_callback_method` - The HTTP method we should use to call `voice_status_callback_url`. Can be: `GET` or `POST`.
  * `voice_status_callback_url` - The URL that we should call to pass status parameters (such as call ended) to your application.
  * `voice_url` - The URL we should call when the domain receives a call.

# `update!`

```elixir
@spec update!(String.t(), map() | keyword(), keyword()) ::
  Twilio.Schemas.SipDomain.t()
```

Like `update/3`, but returns the result or raises `Infusion.Runtime.Error`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
