# DataSourceRule

A DataSourceRule is a resource filtering the raw data from the DataSource. The Cost resource is created after the raw data is filtered by the DataSourceRule.

> **Package : spaceone.api.cost\_analysis.v1**

\ <br>

## DataSourceRule

**DataSourceRule Methods:**

| Method                                                                                                                                      | Request                                                                                                                                                                        | Response                                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| [**create**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#create)              | [CreateDataSourceRuleRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#createdatasourcerulerequest)           | [DataSourceRuleInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourceruleinfo)   |
| [**update**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#update)              | [UpdateDataSourceRuleRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#updatedatasourcerulerequest)           | [DataSourceRuleInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourceruleinfo)   |
| [**change\_order**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#change_order) | [ChangeDataSourceRuleOrderRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#changedatasourceruleorderrequest) | [DataSourceRuleInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourceruleinfo)   |
| [**delete**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#delete)              | [DataSourceRuleRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourcerulerequest)                       | [Empty](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#empty)                             |
| [**get**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#get)                    | [DataSourceRuleRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourcerulerequest)                       | [DataSourceRuleInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourceruleinfo)   |
| [**list**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#list)                  | [DataSourceRuleQuery](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourcerulequery)                           | [DataSourceRulesInfo](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourcerulesinfo) |
| [**stat**](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#stat)                  | [DataSourceRuleStatQuery](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourcerulestatquery)                   | [Struct](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#struct)                           |

<br>

### create

Creates a new DataSourceRule. When creating the resource, this method can apply two types of conditions: mapping projects where the cost incurred to the Cost, and mapping cloud service accounts to the Cost. By adjusting the `condition_policy` parameter, the DataSourceRule can be applied when all conditions are met, applied when any of the conditions are met, or always applied regardless of whether the conditions are met.

> **POST** /cost-analysis/v1/data-source-rule/create

{{< tabs " create " >}}

{{< tab "Request Example" >}}

[CreateDataSourceRuleRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#createdatasourcerulerequest)

* **data\_source\_id** (string) `Required`
* **conditions\_policy** (ConditionsPolicy) `Required`
* **actions** (DataSourceRuleActions) `Required`
* **resource\_group** (ResourceGroup) `Required`
* **workspace\_id** (string) `Required`
* **name** (string)
* **conditions** (DataSourceRuleCondition) `Repeated`
* **options** (DataSourceRuleOptions)
* **tags** (Struct)

{{< highlight json >}} { "data\_source\_id": "ds-c96609f5afeb", "name": "match\_service\_account\_test", "conditions\_policy": "ALWAYS", "actions": { "match\_service\_account": {"source": "account", "target": "data.project\_id"} }, "options": {"stop\_processing": true}, "tags": {"b": "c", "a": "b"} } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[DataSourceRuleInfo](#DATASOURCERULEINFO)

* **data\_source\_rule\_id** (string) `Required`
* **name** (string) `Required`
* **rule\_type** (RuleType) `Required`
* **order** (int32) `Required`
* **conditions** (DataSourceRuleCondition) `Repeated` `Required`
* **conditions\_policy** (ConditionsPolicy) `Required`
* **actions** (DataSourceRuleActions) `Required`
* **options** (DataSourceRuleOptions) `Required`
* **tags** (Struct) `Required`
* **resource\_group** (ResourceGroup) `Required`
* **domain\_id** (string) `Required`
* **workspace\_id** (string) `Required`
* **data\_source\_id** (string) `Required`
* **created\_at** (string) `Required`

{{< highlight json >}} { "data\_source\_rule\_id": "rule-c8055231e212", "name": "match\_service\_account\_test", "order": 2, "conditions\_policy": "ALWAYS", "actions": { "match\_service\_account": { "source": "account", "target": "data.project\_id" } }, "options": { "stop\_processing": true }, "tags": { "a": "b", "b": "c" }, "data\_source\_id": "ds-c96609f5afeb", "domain\_id": "domain-58010aa2e451", "created\_at": "2022-07-19T10:13:28.335Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### update

Updates a specific DataSourceRule. You can make changes in DataSourceRule settings, including filtering conditions. If the parameter `is_default` is `true`, only `Admin` type User can use this method.

> **POST** /cost-analysis/v1/data-source-rule/update

{{< tabs " update " >}}

{{< tab "Request Example" >}}

[UpdateDataSourceRuleRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#updatedatasourcerulerequest)

* **data\_source\_rule\_id** (string) `Required`
* **name** (string)
* **conditions** (DataSourceRuleCondition) `Repeated`
* **conditions\_policy** (ConditionsPolicy)
* **actions** (DataSourceRuleActions)
* **options** (DataSourceRuleOptions)
* **tags** (Struct)

{{< highlight json >}} { "data\_source\_rule\_id": "rule-c8055231e212", "name": "match\_service\_account\_test", "conditions\_policy": "ALWAYS", "actions": { "match\_service\_account": { "source": "account", "target": "data.project\_id" } }, "options": { "stop\_processing": true }, "tags": {"b": "c", "a": "b"} } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[DataSourceRuleInfo](#DATASOURCERULEINFO)

* **data\_source\_rule\_id** (string) `Required`
* **name** (string) `Required`
* **rule\_type** (RuleType) `Required`
* **order** (int32) `Required`
* **conditions** (DataSourceRuleCondition) `Repeated` `Required`
* **conditions\_policy** (ConditionsPolicy) `Required`
* **actions** (DataSourceRuleActions) `Required`
* **options** (DataSourceRuleOptions) `Required`
* **tags** (Struct) `Required`
* **resource\_group** (ResourceGroup) `Required`
* **domain\_id** (string) `Required`
* **workspace\_id** (string) `Required`
* **data\_source\_id** (string) `Required`
* **created\_at** (string) `Required`

{{< highlight json >}} { "data\_source\_rule\_id": "rule-c8055231e212", "name": "match\_service\_account\_test", "order": 2, "conditions\_policy": "ALWAYS", "actions": { "match\_service\_account": { "source": "account", "target": "data.project\_id" } }, "options": { "stop\_processing": true }, "tags": { "a": "b", "b": "c" }, "data\_source\_id": "ds-c96609f5afeb", "domain\_id": "domain-58010aa2e451", "created\_at": "2022-07-19T10:13:28.335Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### change\_order

Changes the priority order of the DataSourceRules to apply. If there are multiple DataSourceRules applied in a specific service account, the priority order of the resources is requried. This method changes the priority order to apply DataSourceRules.

> **POST** /cost-analysis/v1/data-source-rule/change-order

{{< tabs " change\_order " >}}

{{< tab "Request Example" >}}

[ChangeDataSourceRuleOrderRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#changedatasourceruleorderrequest)

* **data\_source\_rule\_id** (string) `Required`
* **order** (int32) `Required`

{{< highlight json >}} { "data\_source\_rule\_id": "rule-c8055231e212", "order": 2 } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[DataSourceRuleInfo](#DATASOURCERULEINFO)

* **data\_source\_rule\_id** (string) `Required`
* **name** (string) `Required`
* **rule\_type** (RuleType) `Required`
* **order** (int32) `Required`
* **conditions** (DataSourceRuleCondition) `Repeated` `Required`
* **conditions\_policy** (ConditionsPolicy) `Required`
* **actions** (DataSourceRuleActions) `Required`
* **options** (DataSourceRuleOptions) `Required`
* **tags** (Struct) `Required`
* **resource\_group** (ResourceGroup) `Required`
* **domain\_id** (string) `Required`
* **workspace\_id** (string) `Required`
* **data\_source\_id** (string) `Required`
* **created\_at** (string) `Required`

{{< highlight json >}} { "data\_source\_rule\_id": "rule-c8055231e212", "name": "match\_service\_account\_test", "order": 2, "conditions\_policy": "ALWAYS", "actions": { "match\_service\_account": { "source": "account", "target": "data.project\_id" } }, "options": { "stop\_processing": true }, "tags": { "a": "b", "b": "c" }, "data\_source\_id": "ds-c96609f5afeb", "domain\_id": "domain-58010aa2e451", "created\_at": "2022-07-19T10:13:28.335Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### delete

Deletes a specific DataSourceRule. You must specify the `data_source_rule_id` of the DataSourceRule to delete. If the parameter `is_default` is `true`, only `Admin` type User can use this method.

> **POST** /cost-analysis/v1/data-source-rule/delete

{{< tabs " delete " >}}

{{< tab "Request Example" >}}

[DataSourceRuleRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourcerulerequest)

* **data\_source\_rule\_id** (string) `Required`

{{< highlight json >}} { "data\_source\_rule\_id": "rule-22fab02f6b51" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### get

Gets a specific DataSourceRule. Prints detailed information about the DataSourceRule, including `conditions_policy` and conditions applied to DataSources.

> **POST** /cost-analysis/v1/data-source-rule/get

{{< tabs " get " >}}

{{< tab "Request Example" >}}

[DataSourceRuleRequest](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourcerulerequest)

* **data\_source\_rule\_id** (string) `Required`

{{< highlight json >}} { "data\_source\_rule\_id": "rule-22fab02f6b51" } {{< /highlight >}} {{< /tab >}}

{{< tab "Response Example" >}}

[DataSourceRuleInfo](#DATASOURCERULEINFO)

* **data\_source\_rule\_id** (string) `Required`
* **name** (string) `Required`
* **rule\_type** (RuleType) `Required`
* **order** (int32) `Required`
* **conditions** (DataSourceRuleCondition) `Repeated` `Required`
* **conditions\_policy** (ConditionsPolicy) `Required`
* **actions** (DataSourceRuleActions) `Required`
* **options** (DataSourceRuleOptions) `Required`
* **tags** (Struct) `Required`
* **resource\_group** (ResourceGroup) `Required`
* **domain\_id** (string) `Required`
* **workspace\_id** (string) `Required`
* **data\_source\_id** (string) `Required`
* **created\_at** (string) `Required`

{{< highlight json >}} { "data\_source\_rule\_id": "rule-c8055231e212", "name": "match\_service\_account\_test", "order": 2, "conditions\_policy": "ALWAYS", "actions": { "match\_service\_account": { "source": "account", "target": "data.project\_id" } }, "options": { "stop\_processing": true }, "tags": { "a": "b", "b": "c" }, "data\_source\_id": "ds-c96609f5afeb", "domain\_id": "domain-58010aa2e451", "created\_at": "2022-07-19T10:13:28.335Z" } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### list

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

> **POST** /cost-analysis/v1/data-source-rule/list

{{< tabs " list " >}}

{{< tab "Request Example" >}}

[DataSourceRuleQuery](https://github.com/cloudforet-io/api-doc/blob/master/content/en/cost_analysis/v1/DataSourceRule/README.md#datasourcerulequery)

* **query** (Query)
* **data\_source\_rule\_id** (string)
* **name** (string)
* **rule\_type** (RuleType)
* **workspace\_id** (string)
* **data\_source\_id** (string)

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

{{< tab "Response Example" >}}

[DataSourceRulesInfo](#DATASOURCERULESINFO)

* **results** (DataSourceRuleInfo) `Repeated` `Required`
* **total\_count** (int32) `Required`

{{< highlight json >}} { "results": \[ { "data\_source\_rule\_id": "rule-22fab02f6b51", "name": "match\_service\_account", "order": 1, "conditions\_policy": "ALWAYS", "actions": { "match\_service\_account": { "source": "account", "target": "data.project\_id" } }, "options": { "stop\_processing": true }, "tags": {}, "data\_source\_id": "ds-c96609f5afeb", "domain\_id": "domain-58010aa2e451", "created\_at": "2022-05-25T16:01:51.858Z" }, { "data\_source\_rule\_id": "rule-188d366e9817", "name": "match\_service\_account", "order": 1, "conditions\_policy": "ALWAYS", "actions": { "match\_service\_account": { "source": "account", "target": "data.account\_id" } }, "options": { "stop\_processing": true }, "tags": {}, "data\_source\_id": "ds-fcba92ca73b1", "domain\_id": "domain-58010aa2e451", "created\_at": "2022-06-03T16:00:54.099Z" } ], "total\_count": 2 } {{< /highlight >}} {{< /tab >}}

{{< /tabs >}}

<br>

### stat

> **POST** /cost-analysis/v1/data-source-rule/stat

\ <br>

## Message

### ChangeDataSourceRuleOrderRequest

* **data\_source\_rule\_id** (string) `Required`
* **order** (int32) `Required`

  <br>

### CreateDataSourceRuleRequest

* **data\_source\_id** (string) `Required`
* **conditions\_policy** (ConditionsPolicy) `Required`
* **actions** (DataSourceRuleActions) `Required`
* **resource\_group** (ResourceGroup) `Required`
* **workspace\_id** (string) `Required`
* **name** (string)
* **conditions** (DataSourceRuleCondition) `Repeated`
* **options** (DataSourceRuleOptions)
* **tags** (Struct)

  <br>

### DataSourceRuleActions

* **match\_service\_account** (MatchRule) `Required`
* **match\_project** (MatchRule) `Required`
* **change\_project** (string) `Required`
* **match\_workspace** (MatchRule) `Required`
* **add\_additional\_info** (Struct) `Required`

  <br>

### DataSourceRuleCondition

* **key** (string) `Required`
* **value** (string) `Required`
* **operator** (string) `Required`

  <br>

### DataSourceRuleInfo

* **data\_source\_rule\_id** (string) `Required`
* **name** (string) `Required`
* **rule\_type** (RuleType) `Required`
* **order** (int32) `Required`
* **conditions** (DataSourceRuleCondition) `Repeated` `Required`
* **conditions\_policy** (ConditionsPolicy) `Required`
* **actions** (DataSourceRuleActions) `Required`
* **options** (DataSourceRuleOptions) `Required`
* **tags** (Struct) `Required`
* **resource\_group** (ResourceGroup) `Required`
* **domain\_id** (string) `Required`
* **workspace\_id** (string) `Required`
* **data\_source\_id** (string) `Required`
* **created\_at** (string) `Required`

  <br>

### DataSourceRuleOptions

* **stop\_processing** (bool) `Required`

  <br>

### DataSourceRuleQuery

* **query** (Query)
* **data\_source\_rule\_id** (string)
* **name** (string)
* **rule\_type** (RuleType)
* **workspace\_id** (string)
* **data\_source\_id** (string)

  <br>

### DataSourceRuleRequest

* **data\_source\_rule\_id** (string) `Required`

  <br>

### DataSourceRuleStatQuery

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

  <br>

### DataSourceRulesInfo

* **results** (DataSourceRuleInfo) `Repeated` `Required`
* **total\_count** (int32) `Required`

  <br>

### MatchRule

* **source** (string) `Required`
* **target** (string) `Required`
* **all\_workspaces** (bool) `Required`

  <br>

### UpdateDataSourceRuleRequest

* **data\_source\_rule\_id** (string) `Required`
* **name** (string)
* **conditions** (DataSourceRuleCondition) `Repeated`
* **conditions\_policy** (ConditionsPolicy)
* **actions** (DataSourceRuleActions)
* **options** (DataSourceRuleOptions)
* **tags** (Struct)

  <br>
