# Protocol

A Protocol defines the method to use when dispatching Notifications via a channel.

> **Package : spaceone.api.notification.v1**

\ <br>

## Protocol

**Protocol Methods:**

| Method                                                                                                                                 | Request                                                                                                                                                       | Response                                                                                                                          |
| -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| [**create**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#create)                | [CreateProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#createprotocolrequest)             | [ProtocolInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolinfo)   |
| [**update**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#update)                | [UpdateProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#updateprotocolrequest)             | [ProtocolInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolinfo)   |
| [**update\_plugin**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#update_plugin) | [UpdateProtocolPluginRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#updateprotocolpluginrequest) | [ProtocolInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolinfo)   |
| [**enable**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#enable)                | [ProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolrequest)                         | [ProtocolInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolinfo)   |
| [**disable**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#disable)              | [ProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolrequest)                         | [ProtocolInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolinfo)   |
| [**delete**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#delete)                | [ProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolrequest)                         | [Empty](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#empty)                 |
| [**get**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#get)                      | [ProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolrequest)                         | [ProtocolInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolinfo)   |
| [**list**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#list)                    | [ProtocolQuery](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolquery)                             | [ProtocolsInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolsinfo) |
| [**stat**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#stat)                    | [ProtocolStatQuery](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolstatquery)                     | [Struct](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#struct)               |

<br>

### create

Creates a new Protocol. When creating a protocol, you must specify the plugins provided from the repository, and you must also set the credentials to be set in the plugin if necessary.

> **POST** /notification/v1/protocol/create

{{< tabs " create " >}}

{{< tab "Request Example" >}}

[CreateProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#createprotocolrequest)

* **name** (string) `Required`

  *The name of Protocol. It can have a maximum of 255 characters.*
* **plugin\_info** (PluginRequest) `Required`

  *Describe a Plugin information for protocol that include was used plugin, specific version, schema etc.*
* **tags** (Struct)

  *The tags for protocol.*

{{< highlight json >}} { "name": "Email", "plugin\_info": { "plugin\_id": "plugin-email-noti-protocol", "version": "1.0.1", "options": {}, "secret\_id": "secret-123546789012", "metadata": { "data": { "schema": { "properties": { "email": { "pattern": "^\[\W]*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4}\[\W]*,{1}\[\W]*)*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4})\[\W]\*$", "examples": \[ "<user1@test.com>, <user2@test.com>" ], "minLength": 10.0, "description": "Email address to receive notifications", "type": "string", "title": "Email Address" } }, "required": \[ "email" ], "type": "object" } }, "data\_type": "PLAIN\_TEXT" }, "upgrade\_mode": "AUTO" }, "tags": {} } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[ProtocolInfo](#PROTOCOLINFO)

* **protocol\_id** (string) `Required`

  The ID of Protocol.
* **name** (string) `Required`

  The name of Protocol.
* **state** (ProtocolState) `Required`

  The state of Protocol. ENABLED or DISABLED only.
* **protocol\_type** (ProtocolType) `Required`

  desc : The type of Protocol. INTERNAL or EXTERNAL only.
* **resource\_type** (string) `Required`

  desc : Resource type for Protocol. Currently only identity.Project or identity.User can be set.
* **capability** (Struct) `Required`

  desc : The capability information for the Protocol. It included supported schema for the Protocol.
* **plugin\_info** (PluginInfo) `Required`

  the plugin information set in Protocol.
* **tags** (Struct) `Required`

  The tags for protocol.
* **domain\_id** (string) `Required`

  The ID of domain to which the Protocol belongs.
* **created\_at** (string) `Required`

  Protocol creation time.

{{< highlight json >}} { "protocol\_id": "protocol-123546789012", "name": "Email", "state": "ENABLED", "protocol\_type": "EXTERNAL", "capability": { "supported\_schema": \[ "email\_smtp" ] }, "plugin\_info": { "plugin\_id": "plugin-email-noti-protocol", "version": "1.0.1", "options": {}, "secret\_id": "secret-123546789012", "metadata": { "data": { "schema": { "properties": { "email": { "pattern": "^\[\W]*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4}\[\W]*,{1}\[\W]*)*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4})\[\W]\*$", "examples": \[ "<user1@test.com>, <user2@test.com>" ], "minLength": 10.0, "description": "Email address to receive notifications", "type": "string", "title": "Email Address" } }, "required": \[ "email" ], "type": "object" } }, "data\_type": "PLAIN\_TEXT" }, "upgrade\_mode": "AUTO" }, "tags": {}, "domain\_id": "domain-123546789012", "created\_at": "2022-01-01T07:55:57.043Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### update

Updates a specific Protocol. The method `update` can update the name and tags only. If you want to update the plugin version or options, you can use `update_plugin` method.

> **POST** /notification/v1/protocol/update

{{< tabs " update " >}}

{{< tab "Request Example" >}}

[UpdateProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#updateprotocolrequest)

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*
* **name** (string)

  *The Name of Protocol. It can have a maximum of 255 characters.*
* **tags** (Struct)

  *The tags for protocol. When updating, existing tag information is deleted all and will be updated with new.*

{{< highlight json >}} { "protocol\_id": "protocol-123456789012", "name": "Email-test", "tags": { "type": "test" } } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[ProtocolInfo](#PROTOCOLINFO)

* **protocol\_id** (string) `Required`

  The ID of Protocol.
* **name** (string) `Required`

  The name of Protocol.
* **state** (ProtocolState) `Required`

  The state of Protocol. ENABLED or DISABLED only.
* **protocol\_type** (ProtocolType) `Required`

  desc : The type of Protocol. INTERNAL or EXTERNAL only.
* **resource\_type** (string) `Required`

  desc : Resource type for Protocol. Currently only identity.Project or identity.User can be set.
* **capability** (Struct) `Required`

  desc : The capability information for the Protocol. It included supported schema for the Protocol.
* **plugin\_info** (PluginInfo) `Required`

  the plugin information set in Protocol.
* **tags** (Struct) `Required`

  The tags for protocol.
* **domain\_id** (string) `Required`

  The ID of domain to which the Protocol belongs.
* **created\_at** (string) `Required`

  Protocol creation time.

{{< highlight json >}} { "protocol\_id": "protocol-123546789012", "name": "Email", "state": "ENABLED", "protocol\_type": "EXTERNAL", "capability": { "supported\_schema": \[ "email\_smtp" ] }, "plugin\_info": { "plugin\_id": "plugin-email-noti-protocol", "version": "1.0.1", "options": {}, "secret\_id": "secret-123546789012", "metadata": { "data": { "schema": { "properties": { "email": { "pattern": "^\[\W]*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4}\[\W]*,{1}\[\W]*)*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4})\[\W]\*$", "examples": \[ "<user1@test.com>, <user2@test.com>" ], "minLength": 10.0, "description": "Email address to receive notifications", "type": "string", "title": "Email Address" } }, "required": \[ "email" ], "type": "object" } }, "data\_type": "PLAIN\_TEXT" }, "upgrade\_mode": "AUTO" }, "tags": {}, "domain\_id": "domain-123546789012", "created\_at": "2022-01-01T07:55:57.043Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### update\_plugin

Updates a plugin for a Protocol. It is usually used when redeploying a plugin to a new version.

> **POST** /notification/v1/protocol/update-plugin

{{< tabs " update\_plugin " >}}

{{< tab "Request Example" >}}

[UpdateProtocolPluginRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#updateprotocolpluginrequest)

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*
* **domain\_id** (string) `Required`

  *The ID of domain to which the Protocol belongs.*
* **version** (string)

  *The version of plugin you want to update. Version means the tags of plugin container image in repository that specific market place.*
* **options** (Struct)

  *The Options that contains information about using plugin.*

{{< highlight json >}} { "protocol\_id": "protocol-123456789012", "version": "1.0.2", "options": {} } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[ProtocolInfo](#PROTOCOLINFO)

* **protocol\_id** (string) `Required`

  The ID of Protocol.
* **name** (string) `Required`

  The name of Protocol.
* **state** (ProtocolState) `Required`

  The state of Protocol. ENABLED or DISABLED only.
* **protocol\_type** (ProtocolType) `Required`

  desc : The type of Protocol. INTERNAL or EXTERNAL only.
* **resource\_type** (string) `Required`

  desc : Resource type for Protocol. Currently only identity.Project or identity.User can be set.
* **capability** (Struct) `Required`

  desc : The capability information for the Protocol. It included supported schema for the Protocol.
* **plugin\_info** (PluginInfo) `Required`

  the plugin information set in Protocol.
* **tags** (Struct) `Required`

  The tags for protocol.
* **domain\_id** (string) `Required`

  The ID of domain to which the Protocol belongs.
* **created\_at** (string) `Required`

  Protocol creation time.

{{< highlight json >}} { "protocol\_id": "protocol-123546789012", "name": "Email", "state": "ENABLED", "protocol\_type": "EXTERNAL", "capability": { "supported\_schema": \[ "email\_smtp" ] }, "plugin\_info": { "plugin\_id": "plugin-email-noti-protocol", "version": "1.0.1", "options": {}, "secret\_id": "secret-123546789012", "metadata": { "data": { "schema": { "properties": { "email": { "pattern": "^\[\W]*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4}\[\W]*,{1}\[\W]*)*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4})\[\W]\*$", "examples": \[ "<user1@test.com>, <user2@test.com>" ], "minLength": 10.0, "description": "Email address to receive notifications", "type": "string", "title": "Email Address" } }, "required": \[ "email" ], "type": "object" } }, "data\_type": "PLAIN\_TEXT" }, "upgrade\_mode": "AUTO" }, "tags": {}, "domain\_id": "domain-123546789012", "created\_at": "2022-01-01T07:55:57.043Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### enable

Enables a specific Protocol. If the Protocol is enabled, the Protocol can be used and the Notification can be dispatched.

> **POST** /notification/v1/protocol/enable

{{< tabs " enable " >}}

{{< tab "Request Example" >}}

[ProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolrequest)

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*

{{< highlight json >}} { "protocol\_id": "protocol-123456789012" } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[ProtocolInfo](#PROTOCOLINFO)

* **protocol\_id** (string) `Required`

  The ID of Protocol.
* **name** (string) `Required`

  The name of Protocol.
* **state** (ProtocolState) `Required`

  The state of Protocol. ENABLED or DISABLED only.
* **protocol\_type** (ProtocolType) `Required`

  desc : The type of Protocol. INTERNAL or EXTERNAL only.
* **resource\_type** (string) `Required`

  desc : Resource type for Protocol. Currently only identity.Project or identity.User can be set.
* **capability** (Struct) `Required`

  desc : The capability information for the Protocol. It included supported schema for the Protocol.
* **plugin\_info** (PluginInfo) `Required`

  the plugin information set in Protocol.
* **tags** (Struct) `Required`

  The tags for protocol.
* **domain\_id** (string) `Required`

  The ID of domain to which the Protocol belongs.
* **created\_at** (string) `Required`

  Protocol creation time.

{{< highlight json >}} { "protocol\_id": "protocol-123546789012", "name": "Email", "state": "ENABLED", "protocol\_type": "EXTERNAL", "capability": { "supported\_schema": \[ "email\_smtp" ] }, "plugin\_info": { "plugin\_id": "plugin-email-noti-protocol", "version": "1.0.1", "options": {}, "secret\_id": "secret-123546789012", "metadata": { "data": { "schema": { "properties": { "email": { "pattern": "^\[\W]*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4}\[\W]*,{1}\[\W]*)*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4})\[\W]\*$", "examples": \[ "<user1@test.com>, <user2@test.com>" ], "minLength": 10.0, "description": "Email address to receive notifications", "type": "string", "title": "Email Address" } }, "required": \[ "email" ], "type": "object" } }, "data\_type": "PLAIN\_TEXT" }, "upgrade\_mode": "AUTO" }, "tags": {}, "domain\_id": "domain-123546789012", "created\_at": "2022-01-01T07:55:57.043Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### disable

Disables a specific Protocol. If a Protocol is disabled, the Notification will not be dispatched, even if it is created.

> **POST** /notification/v1/protocol/disable

{{< tabs " disable " >}}

{{< tab "Request Example" >}}

[ProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolrequest)

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*

{{< highlight json >}} { "protocol\_id": "protocol-123456789012" } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[ProtocolInfo](#PROTOCOLINFO)

* **protocol\_id** (string) `Required`

  The ID of Protocol.
* **name** (string) `Required`

  The name of Protocol.
* **state** (ProtocolState) `Required`

  The state of Protocol. ENABLED or DISABLED only.
* **protocol\_type** (ProtocolType) `Required`

  desc : The type of Protocol. INTERNAL or EXTERNAL only.
* **resource\_type** (string) `Required`

  desc : Resource type for Protocol. Currently only identity.Project or identity.User can be set.
* **capability** (Struct) `Required`

  desc : The capability information for the Protocol. It included supported schema for the Protocol.
* **plugin\_info** (PluginInfo) `Required`

  the plugin information set in Protocol.
* **tags** (Struct) `Required`

  The tags for protocol.
* **domain\_id** (string) `Required`

  The ID of domain to which the Protocol belongs.
* **created\_at** (string) `Required`

  Protocol creation time.

{{< highlight json >}} { "protocol\_id": "protocol-123546789012", "name": "Email", "state": "ENABLED", "protocol\_type": "EXTERNAL", "capability": { "supported\_schema": \[ "email\_smtp" ] }, "plugin\_info": { "plugin\_id": "plugin-email-noti-protocol", "version": "1.0.1", "options": {}, "secret\_id": "secret-123546789012", "metadata": { "data": { "schema": { "properties": { "email": { "pattern": "^\[\W]*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4}\[\W]*,{1}\[\W]*)*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4})\[\W]\*$", "examples": \[ "<user1@test.com>, <user2@test.com>" ], "minLength": 10.0, "description": "Email address to receive notifications", "type": "string", "title": "Email Address" } }, "required": \[ "email" ], "type": "object" } }, "data\_type": "PLAIN\_TEXT" }, "upgrade\_mode": "AUTO" }, "tags": {}, "domain\_id": "domain-123546789012", "created\_at": "2022-01-01T07:55:57.043Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### delete

Deletes a specific Protocol. If there exists a channel using the Protocol, it cannot be deleted.

> **POST** /notification/v1/protocol/delete

{{< tabs " delete " >}}

{{< tab "Request Example" >}}

[ProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolrequest)

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*

{{< highlight json >}} { "protocol\_id": "protocol-123456789012" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### get

Gets a specific Protocol. Prints detailed information about the Protocol.

> **POST** /notification/v1/protocol/get

{{< tabs " get " >}}

{{< tab "Request Example" >}}

[ProtocolRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolrequest)

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*

{{< highlight json >}} { "protocol\_id": "protocol-123456789012" } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[ProtocolInfo](#PROTOCOLINFO)

* **protocol\_id** (string) `Required`

  The ID of Protocol.
* **name** (string) `Required`

  The name of Protocol.
* **state** (ProtocolState) `Required`

  The state of Protocol. ENABLED or DISABLED only.
* **protocol\_type** (ProtocolType) `Required`

  desc : The type of Protocol. INTERNAL or EXTERNAL only.
* **resource\_type** (string) `Required`

  desc : Resource type for Protocol. Currently only identity.Project or identity.User can be set.
* **capability** (Struct) `Required`

  desc : The capability information for the Protocol. It included supported schema for the Protocol.
* **plugin\_info** (PluginInfo) `Required`

  the plugin information set in Protocol.
* **tags** (Struct) `Required`

  The tags for protocol.
* **domain\_id** (string) `Required`

  The ID of domain to which the Protocol belongs.
* **created\_at** (string) `Required`

  Protocol creation time.

{{< highlight json >}} { "protocol\_id": "protocol-123546789012", "name": "Email", "state": "ENABLED", "protocol\_type": "EXTERNAL", "capability": { "supported\_schema": \[ "email\_smtp" ] }, "plugin\_info": { "plugin\_id": "plugin-email-noti-protocol", "version": "1.0.1", "options": {}, "secret\_id": "secret-123546789012", "metadata": { "data": { "schema": { "properties": { "email": { "pattern": "^\[\W]*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4}\[\W]*,{1}\[\W]*)*(\[\w+\\-.%]+@\[\w\\-.]+\\.\[A-Za-z]{2,4})\[\W]\*$", "examples": \[ "<user1@test.com>, <user2@test.com>" ], "minLength": 10.0, "description": "Email address to receive notifications", "type": "string", "title": "Email Address" } }, "required": \[ "email" ], "type": "object" } }, "data\_type": "PLAIN\_TEXT" }, "upgrade\_mode": "AUTO" }, "tags": {}, "domain\_id": "domain-123546789012", "created\_at": "2022-01-01T07:55:57.043Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### list

Gets a list of Protocols. You can use a query to get a filtered list of Protocols.

> **POST** /notification/v1/protocol/list

{{< tabs " list " >}}

{{< tab "Request Example" >}}

[ProtocolQuery](https://github.com/cloudforet-io/api-doc/blob/master/content/en/notification/v1/Protocol/README.md#protocolquery)

* **query** (Query)

  *Query format provided by SpaceONE. Please check the link for more information.*
* **protocol\_id** (string)

  *The ID of Protocol.*
* **name** (string)

  *The name of Protocol.*
* **state** (ProtocolState)

  *The state of Protocol. ENABLED or DISABLED only.*
* **protocol\_type** (ProtocolType)

  *The type of Protocol. INTERNAL or EXTERNAL only.*

{{< highlight json >}} { "query": {} } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[ProtocolsInfo](#PROTOCOLSINFO)

* **results** (ProtocolInfo) `Repeated` `Required`

  List of queried protocols.
* **total\_count** (int32) `Required`

  Total counts of queried Protocols.

{{< highlight json >}} { "results":\[ { "protocol\_id":"protocol-123456789012", "name":"Email", "state":"ENABLED", "protocol\_type":"EXTERNAL", "capability":{ "supported\_schema":\[ "email\_smtp" ] }, "plugin\_info":{ "plugin\_id":"plugin-email-noti-protocol", "version":"1.0.1", "options":{

```
           },
           "secret_id":"secret-123456789012",
           "metadata":{
              "data_type":"PLAIN_TEXT",
              "data":{
                 "schema":{
                    "properties":{
                       "email":{
                          "pattern":"^[\\W]*([\\w+\\-.%]+@[\\w\\-.]+\\.[A-Za-z]{2,4}[\\W]*,{1}[\\W]*)*([\\w+\\-.%]+@[\\w\\-.]+\\.[A-Za-z]{2,4})[\\W]*$",
                          "examples":[
                             "user1@test.com, user2@test.com"
                          ],
                          "minLength":10.0,
                          "description":"Email address to receive notifications",
                          "type":"string",
                          "title":"Email Address"
                       }
                    },
                    "required":[
                       "email"
                    ],
                    "type":"object"
                 }
              }
           },
           "upgrade_mode":"AUTO"
        },
        "tags":{

        },
        "domain_id":"domain-123456789012",
        "created_at":"2022-01-01T07:55:57.043Z"
     }
  ],
  "total_count":1
```

} {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### stat

> **POST** /notification/v1/protocol/stat

\ <br>

## Message

### CreateProtocolRequest

* **name** (string) `Required`

  *The name of Protocol. It can have a maximum of 255 characters.*
* **plugin\_info** (PluginRequest) `Required`

  *Describe a Plugin information for protocol that include was used plugin, specific version, schema etc.*
* **tags** (Struct)

  *The tags for protocol.*

  <br>

### PluginInfo

* **plugin\_id** (string) `Required`

  *The ID of plugin set in the Protocol.*
* **version** (string) `Required`

  *The version of plugin.*
* **options** (Struct) `Required`

  *The Options that contains information about using plugin.*
* **metadata** (Struct) `Required`

  *The metadata of plugin. It includes schema for the data that must be set for the Channel when creating the Channel using a Protocol. The schema follows the JSON Schema format.*
* **upgrade\_mode** (UpgradeMode) `Required`

  *Auto upgrade for plugin. If the upgrade\_mode is AUTO, check the latest plugin version when running the plugin, and if a new version is existed, replace the plugin and then run it.*
* **secret\_id** (string)

  *The ID of the Secret containing encrypted data to be used in the plugin.*

  <br>

### PluginRequest

* **plugin\_id** (string) `Required`

  *The ID of plugin.*
* **version** (string) `Required`

  *The version of plugin.*
* **options** (Struct)

  *The Options that contains information about using plugin.*
* **secret\_data** (Struct)

  *The data for using plugin if necessary. This data is encrypted and stored in the Secret service.*
* **schema** (string)

  *The name of schema. When the secret\_data is stored in the Secret service, it can be set with schema if the schema is existed. The schema is provided through the Repository service.*
* **upgrade\_mode** (UpgradeMode)

  *Auto upgrade feature for plugin. If the upgrade mode is AUTO, check the latest plugin version when running the plugin, and if a new version is existed, replace the plugin and then run it.*

  <br>

### ProtocolInfo

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*
* **name** (string) `Required`

  *The name of Protocol.*
* **state** (ProtocolState) `Required`

  *The state of Protocol. ENABLED or DISABLED only.*
* **protocol\_type** (ProtocolType) `Required`

  *desc : The type of Protocol. INTERNAL or EXTERNAL only.*
* **resource\_type** (string) `Required`

  *desc : Resource type for Protocol. Currently only identity.Project or identity.User can be set.*
* **capability** (Struct) `Required`

  *desc : The capability information for the Protocol. It included supported schema for the Protocol.*
* **plugin\_info** (PluginInfo) `Required`

  *the plugin information set in Protocol.*
* **tags** (Struct) `Required`

  *The tags for protocol.*
* **domain\_id** (string) `Required`

  *The ID of domain to which the Protocol belongs.*
* **created\_at** (string) `Required`

  *Protocol creation time.*

  <br>

### ProtocolQuery

* **query** (Query)

  *Query format provided by SpaceONE. Please check the link for more information.*
* **protocol\_id** (string)

  *The ID of Protocol.*
* **name** (string)

  *The name of Protocol.*
* **state** (ProtocolState)

  *The state of Protocol. ENABLED or DISABLED only.*
* **protocol\_type** (ProtocolType)

  *The type of Protocol. INTERNAL or EXTERNAL only.*

  <br>

### ProtocolRequest

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*

  <br>

### ProtocolStatQuery

* **query** (StatisticsQuery) `Required`

  *Statistics Query format provided by SpaceONE. Please check the link for more information.*

  <br>

### ProtocolsInfo

* **results** (ProtocolInfo) `Repeated` `Required`

  *List of queried protocols.*
* **total\_count** (int32) `Required`

  *Total counts of queried Protocols.*

  <br>

### UpdateProtocolPluginRequest

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*
* **domain\_id** (string) `Required`

  *The ID of domain to which the Protocol belongs.*
* **version** (string)

  *The version of plugin you want to update. Version means the tags of plugin container image in repository that specific market place.*
* **options** (Struct)

  *The Options that contains information about using plugin.*

  <br>

### UpdateProtocolRequest

* **protocol\_id** (string) `Required`

  *The ID of Protocol.*
* **name** (string)

  *The Name of Protocol. It can have a maximum of 255 characters.*
* **tags** (Struct)

  *The tags for protocol. When updating, existing tag information is deleted all and will be updated with new.*

  <br>
