# Create Spam Report

Use this endpoint to create a spam report for an unwanted SMS, MMS or call (createSpamReport on /user).

Use this endpoint to create a spam report.

{% hint style="info" %}
The User GraphQL API is accessible at /user
{% endhint %}

```graphql
  mutation (
	$fromNumber: String!
	$toNumber: String!
	$channelType: SpamReportChannelType!
	$timestamp: NaiveDateTime!
	$issueType: SpamReportIssueType
	$userNote: String
	$messageContent: String
	$metadata: JSON
  ) {
	createSpamReport (
  	fromNumber: $fromNumber
  	toNumber: $toNumber
  	channelType: $channelType
  	timestamp: $timestamp
  	issueType: $issueType
  	userNote: $userNote
  	messageContent: $messageContent
  	metadata: $metadata
	) {
  	id
  	fromNumber
  	toNumber
  	userNote
  	messageContent
  	channelType
  	issueType
  	status
  	createdAt
  	updatedAt
  	timestamp
  	metadata
  	user {
    	id
  	}
	}
  }
```

## Example Code

{% tabs %}
{% tab title="Python" %}

```python
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

# Please note that this basic example won't work if you have an asyncio event loop running.
# In some python environments (as with Jupyter which uses IPython) an asyncio event loop is created for you.
# In that case you should use instead https://gql.readthedocs.io/en/latest/async/async_usage.html#async-usage
def user_create_spam_report(bearer_token, from_number, to_number, channel_type, timestamp, issue_type=None, user_note=None, message_content=None, metadata=None):
    transport = AIOHTTPTransport(
        url="https://api.staging.v2.tnid.com/user",
        headers={"Authorization": f"Bearer {bearer_token}"}
    )
    client = Client(transport=transport, fetch_schema_from_transport=True)

    query = gql(
        """
        mutation (
            $fromNumber: String!
            $toNumber: String!
            $channelType: SpamReportChannelType!
            $timestamp: NaiveDateTime!
            $issueType: SpamReportIssueType
            $userNote: String
            $messageContent: String
            $metadata: JSON
        ) {
            createSpamReport (
                fromNumber: $fromNumber
                toNumber: $toNumber
                channelType: $channelType
                timestamp: $timestamp
                issueType: $issueType
                userNote: $userNote
                messageContent: $messageContent
                metadata: $metadata
            ) {
                id
                fromNumber
                toNumber
                userNote
                messageContent
                channelType
                issueType
                status
                createdAt
                updatedAt
                timestamp
                metadata
                user {
                    id
                }
            }
        }
        """
    )

    params = {"fromNumber": from_number, "toNumber": to_number, "channelType": channel_type,
              "timestamp": timestamp, "issueType": issue_type, "userNote": user_note,
              "messageContent": message_content, "metadata": metadata}

    try:
        response = client.execute(query, params)
        print(f"Response OK: {response}")
        return response
    except Exception as e:
        print(f"Exception: {e}")


# Example usage:
token = "your_user_token"
user_create_spam_report(token,
                        "15555555555",
                        "16666666666",
                        "MMS",
                        "2023-10-31 11:30:00",
                        "SPAM",
                        "Note about the report",
                        "Original message content",
                        {"customField": "custom value"})
```

{% endtab %}
{% endtabs %}
