> For the complete documentation index, see [llms.txt](https://docs.hos.accessacloud.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hos.accessacloud.com/atreemo-api/api-reference/atreemo-api-reference/whats-app-api.md).

# Whats App Api

Api Methods for WhatsAppApi

## CheckOptin

> Checks WhatsApp opt-in state for the contact/module/number context. If the helper reports no opt-in, the controller calls SetOptin itself. This GET can therefore change opt-in state; it is not a safe read-only consent probe. Check lowercase response and errors, and obtain approval before exercising the operation.

```json
{"openapi":"3.0.3","info":{"title":"Atreemo API","version":"0.1.0"},"tags":[{"name":"WhatsAppApi","description":"Api Methods for WhatsAppApi"}],"servers":[{"url":"https://apim-hospitality-dev-uksouth.azure-api.net/atreemo-api","description":"Local DEV APIM import draft only; not a deployed endpoint announcement."}],"security":[{"AtreemoBearer":[]}],"components":{"securitySchemes":{"AtreemoBearer":{"type":"http","scheme":"bearer","description":"Atreemo access token obtained by the caller from the Atreemo instance `POST /token` endpoint (OAuth2 password grant) and sent as `Authorization: Bearer <token>`. See the Authorisation guide."}},"schemas":{"WhatsAppAPIOutput":{"type":"object","nullable":true,"properties":{"response":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"StartSession":{"type":"string","format":"date-time","nullable":true},"MessageID":{"type":"string","nullable":true},"WaContactID":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."}}},"paths":{"/api/WhatsAppApi/CheckOptin":{"get":{"operationId":"WhatsAppApiCheckOptin","summary":"CheckOptin","tags":["WhatsAppApi"],"description":"Checks WhatsApp opt-in state for the contact/module/number context. If the helper reports no opt-in, the controller calls SetOptin itself. This GET can therefore change opt-in state; it is not a safe read-only consent probe. Check lowercase response and errors, and obtain approval before exercising the operation.","parameters":[{"name":"CtcID","in":"query","schema":{"type":"integer","format":"int32"},"description":"Native query parameter. CLR int CtcID in the pinned controller signature.","required":true},{"name":"WA_NumberID","in":"query","schema":{"type":"integer","format":"int32"},"description":"Native query parameter. CLR int WA_NumberID in the pinned controller signature.","required":true},{"name":"FromModule","in":"query","schema":{"type":"string","nullable":true,"default":""},"description":"Native query parameter. CLR string FromModule in the pinned controller signature. Omission uses the declared default.","required":false}],"responses":{"200":{"description":"OK (sample status in the public collection).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppAPIOutput"}}}}}}}}}
```

## CheckSendWATemplate

> Checks whether a WhatsApp template was sent for the contact/module context. If not, the action constructs message input and calls SendWATemplate, using the supplied To value or the contact's stored mobile number. This GET can send a message and must not be prefetched or used as a connectivity probe.

```json
{"openapi":"3.0.3","info":{"title":"Atreemo API","version":"0.1.0"},"tags":[{"name":"WhatsAppApi","description":"Api Methods for WhatsAppApi"}],"servers":[{"url":"https://apim-hospitality-dev-uksouth.azure-api.net/atreemo-api","description":"Local DEV APIM import draft only; not a deployed endpoint announcement."}],"security":[{"AtreemoBearer":[]}],"components":{"securitySchemes":{"AtreemoBearer":{"type":"http","scheme":"bearer","description":"Atreemo access token obtained by the caller from the Atreemo instance `POST /token` endpoint (OAuth2 password grant) and sent as `Authorization: Bearer <token>`. See the Authorisation guide."}},"schemas":{"WhatsAppAPIOutput":{"type":"object","nullable":true,"properties":{"response":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"StartSession":{"type":"string","format":"date-time","nullable":true},"MessageID":{"type":"string","nullable":true},"WaContactID":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."}}},"paths":{"/api/WhatsAppApi/CheckSendWATemplate":{"get":{"operationId":"WhatsAppApiCheckSendWaTemplate","summary":"CheckSendWATemplate","tags":["WhatsAppApi"],"description":"Checks whether a WhatsApp template was sent for the contact/module context. If not, the action constructs message input and calls SendWATemplate, using the supplied To value or the contact's stored mobile number. This GET can send a message and must not be prefetched or used as a connectivity probe.","parameters":[{"name":"CtcID","in":"query","schema":{"type":"integer","format":"int32"},"description":"Native query parameter. CLR int CtcID in the pinned controller signature.","required":true},{"name":"ModuleIDName","in":"query","schema":{"type":"string","nullable":true},"description":"Native query parameter. CLR string ModuleIDName in the pinned controller signature.","required":true},{"name":"ModuleIDValue","in":"query","schema":{"type":"integer","format":"int32"},"description":"Native query parameter. CLR int ModuleIDValue in the pinned controller signature.","required":true},{"name":"To","in":"query","schema":{"type":"string","nullable":true},"description":"Native query parameter. CLR string To in the pinned controller signature. Omission uses the declared default.","required":false},{"name":"FromModule","in":"query","schema":{"type":"string","nullable":true,"default":""},"description":"Native query parameter. CLR string FromModule in the pinned controller signature. Omission uses the declared default.","required":false}],"responses":{"200":{"description":"OK (sample status in the public collection).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppAPIOutput"}}}}}}}}}
```

## CheckSessionTime

> Retrieves the WhatsApp session-start value for the contact, optional mobile number and module context, then reports the action's session check in WhatsAppAPIOutput. StartSession is nullable. Treat this as an operation-specific check, not an authentication-token lifetime or a universal retry interval.

```json
{"openapi":"3.0.3","info":{"title":"Atreemo API","version":"0.1.0"},"tags":[{"name":"WhatsAppApi","description":"Api Methods for WhatsAppApi"}],"servers":[{"url":"https://apim-hospitality-dev-uksouth.azure-api.net/atreemo-api","description":"Local DEV APIM import draft only; not a deployed endpoint announcement."}],"security":[{"AtreemoBearer":[]}],"components":{"securitySchemes":{"AtreemoBearer":{"type":"http","scheme":"bearer","description":"Atreemo access token obtained by the caller from the Atreemo instance `POST /token` endpoint (OAuth2 password grant) and sent as `Authorization: Bearer <token>`. See the Authorisation guide."}},"schemas":{"WhatsAppAPIOutput":{"type":"object","nullable":true,"properties":{"response":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"StartSession":{"type":"string","format":"date-time","nullable":true},"MessageID":{"type":"string","nullable":true},"WaContactID":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."}}},"paths":{"/api/WhatsAppApi/CheckSessionTime":{"get":{"operationId":"WhatsAppApiCheckSessionTime","summary":"CheckSessionTime","tags":["WhatsAppApi"],"description":"Retrieves the WhatsApp session-start value for the contact, optional mobile number and module context, then reports the action's session check in WhatsAppAPIOutput. StartSession is nullable. Treat this as an operation-specific check, not an authentication-token lifetime or a universal retry interval.","parameters":[{"name":"CtcID","in":"query","schema":{"type":"integer","format":"int32"},"description":"Native query parameter. CLR int CtcID in the pinned controller signature.","required":true},{"name":"MobileNumber","in":"query","schema":{"type":"string","nullable":true},"description":"Native query parameter. CLR string MobileNumber in the pinned controller signature. Omission uses the declared default.","required":false},{"name":"FromModule","in":"query","schema":{"type":"string","nullable":true,"default":""},"description":"Native query parameter. CLR string FromModule in the pinned controller signature. Omission uses the declared default.","required":false}],"responses":{"200":{"description":"OK (sample status in the public collection).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppAPIOutput"}}}}}}}}}
```

## PostFeedBack

> Add new feedback or enquiry.

```json
{"openapi":"3.0.3","info":{"title":"Atreemo API","version":"0.1.0"},"tags":[{"name":"WhatsAppApi","description":"Api Methods for WhatsAppApi"}],"servers":[{"url":"https://apim-hospitality-dev-uksouth.azure-api.net/atreemo-api","description":"Local DEV APIM import draft only; not a deployed endpoint announcement."}],"security":[{"AtreemoBearer":[]}],"components":{"securitySchemes":{"AtreemoBearer":{"type":"http","scheme":"bearer","description":"Atreemo access token obtained by the caller from the Atreemo instance `POST /token` endpoint (OAuth2 password grant) and sent as `Authorization: Bearer <token>`. See the Authorisation guide."}},"schemas":{"FeedBackInput":{"type":"object","nullable":true,"properties":{"StatusID":{"type":"integer","format":"int32"},"LocationID":{"type":"integer","format":"int32"},"CtcID":{"type":"integer","format":"int32"},"CategoryID":{"type":"integer","format":"int32"},"SubCategoryID":{"type":"integer","format":"int32"},"FeedBackID":{"type":"integer","format":"int32"},"ClaimedBy":{"type":"integer","format":"int32"},"EscalatedTo":{"type":"integer","format":"int32"}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."}}},"paths":{"/api/WhatsAppApi/PostFeedBack":{"post":{"operationId":"WhatsAppApiPostFeedBack","summary":"PostFeedBack","tags":["WhatsAppApi"],"description":"Add new feedback or enquiry.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedBackInput"}}}},"responses":{"200":{"description":"OK (sample status in the public collection).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedBackInput"}}}}}}}}}
```

## PostWaContact

> Creates or resolves a WhatsApp contact through the configured integration and records its association with the Atreemo contact. CtcID, PhoneNumber and DisplayName remain native query parameters. This operation makes external and database calls; the result uses lowercase response/errors and may include WaContactID.

```json
{"openapi":"3.0.3","info":{"title":"Atreemo API","version":"0.1.0"},"tags":[{"name":"WhatsAppApi","description":"Api Methods for WhatsAppApi"}],"servers":[{"url":"https://apim-hospitality-dev-uksouth.azure-api.net/atreemo-api","description":"Local DEV APIM import draft only; not a deployed endpoint announcement."}],"security":[{"AtreemoBearer":[]}],"components":{"securitySchemes":{"AtreemoBearer":{"type":"http","scheme":"bearer","description":"Atreemo access token obtained by the caller from the Atreemo instance `POST /token` endpoint (OAuth2 password grant) and sent as `Authorization: Bearer <token>`. See the Authorisation guide."}},"schemas":{"WhatsAppAPIOutput":{"type":"object","nullable":true,"properties":{"response":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"StartSession":{"type":"string","format":"date-time","nullable":true},"MessageID":{"type":"string","nullable":true},"WaContactID":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."}}},"paths":{"/api/WhatsAppApi/PostWaContact":{"post":{"operationId":"WhatsAppApiPostWaContact","summary":"PostWaContact","tags":["WhatsAppApi"],"description":"Creates or resolves a WhatsApp contact through the configured integration and records its association with the Atreemo contact. CtcID, PhoneNumber and DisplayName remain native query parameters. This operation makes external and database calls; the result uses lowercase response/errors and may include WaContactID.","parameters":[{"name":"CtcID","in":"query","schema":{"type":"integer","format":"int32"},"description":"Native query parameter. CLR int CtcID in the pinned controller signature.","required":true},{"name":"PhoneNumber","in":"query","schema":{"type":"string","nullable":true},"description":"Native query parameter. CLR string PhoneNumber in the pinned controller signature.","required":true},{"name":"DisplayName","in":"query","schema":{"type":"string","nullable":true},"description":"Native query parameter. CLR string DisplayName in the pinned controller signature.","required":true}],"responses":{"200":{"description":"OK (sample status in the public collection).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppAPIOutput"}}}}}}}}}
```

## SendWAMessage

> Processes a WhatsApp message through the configured integration using recipient, module and message/media data. The source contains verification and integration-specific branches and records message results. Sending can have external side effects; inspect lowercase response and errors and do not assume delivery, replay safety or identical behaviour across instance configurations.

```json
{"openapi":"3.0.3","info":{"title":"Atreemo API","version":"0.1.0"},"tags":[{"name":"WhatsAppApi","description":"Api Methods for WhatsAppApi"}],"servers":[{"url":"https://apim-hospitality-dev-uksouth.azure-api.net/atreemo-api","description":"Local DEV APIM import draft only; not a deployed endpoint announcement."}],"security":[{"AtreemoBearer":[]}],"components":{"securitySchemes":{"AtreemoBearer":{"type":"http","scheme":"bearer","description":"Atreemo access token obtained by the caller from the Atreemo instance `POST /token` endpoint (OAuth2 password grant) and sent as `Authorization: Bearer <token>`. See the Authorisation guide."}},"schemas":{"WAInputMessage":{"type":"object","nullable":true,"properties":{"WA_NumberID":{"type":"integer","format":"int32"},"CtcID":{"type":"integer","format":"int32"},"To":{"type":"string","nullable":true},"ReceiverName":{"type":"string","nullable":true},"MessageContent":{"type":"string","nullable":true},"ModuleIDName":{"type":"string","nullable":true},"ModuleIDValue":{"type":"integer","format":"int32"},"WATemplate":{"allOf":[{"$ref":"#/components/schemas/WATemplateMsg"}]},"IsReceived":{"type":"boolean","nullable":true},"MsgType":{"type":"string","nullable":true},"MsgUrl":{"type":"string","nullable":true},"Mime_Type":{"type":"string","nullable":true},"FileName":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WATemplateMsg":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true},"template_name":{"type":"string","nullable":true},"language":{"type":"string","nullable":true},"header_params":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"body_params":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"buttons":{"type":"array","items":{"$ref":"#/components/schemas/WAButton"},"nullable":true},"media":{"allOf":[{"$ref":"#/components/schemas/WAMedia"}]},"TemplateID":{"type":"integer","format":"int32"}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WAButton":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true},"index":{"type":"string","nullable":true},"text":{"type":"string","nullable":true},"payload":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WAMedia":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true},"text":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WhatsAppAPIOutput":{"type":"object","nullable":true,"properties":{"response":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"StartSession":{"type":"string","format":"date-time","nullable":true},"MessageID":{"type":"string","nullable":true},"WaContactID":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."}}},"paths":{"/api/WhatsAppApi/SendWAMessage":{"post":{"operationId":"WhatsAppApiSendWaMessage","summary":"SendWAMessage","tags":["WhatsAppApi"],"description":"Processes a WhatsApp message through the configured integration using recipient, module and message/media data. The source contains verification and integration-specific branches and records message results. Sending can have external side effects; inspect lowercase response and errors and do not assume delivery, replay safety or identical behaviour across instance configurations.","parameters":[{"name":"FromModule","in":"query","schema":{"type":"string","nullable":true,"default":""},"description":"Native query parameter. CLR string FromModule in the pinned controller signature. Omission uses the declared default.","required":false},{"name":"WithVerifications","in":"query","schema":{"type":"boolean","default":false},"description":"Native query parameter. CLR bool WithVerifications in the pinned controller signature. Omission uses the declared default.","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WAInputMessage"}}}},"responses":{"200":{"description":"OK (sample status in the public collection).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppAPIOutput"}}}}}}}}}
```

## SendWATemplate

> Sends a configured WhatsApp template using the supplied recipient/module context and optional template details, then records the integration's message result. Template selection and supported parameters depend on the instance. A returned status is not a documented end-to-end delivery receipt or permission to retry a send without checking its outcome.

```json
{"openapi":"3.0.3","info":{"title":"Atreemo API","version":"0.1.0"},"tags":[{"name":"WhatsAppApi","description":"Api Methods for WhatsAppApi"}],"servers":[{"url":"https://apim-hospitality-dev-uksouth.azure-api.net/atreemo-api","description":"Local DEV APIM import draft only; not a deployed endpoint announcement."}],"security":[{"AtreemoBearer":[]}],"components":{"securitySchemes":{"AtreemoBearer":{"type":"http","scheme":"bearer","description":"Atreemo access token obtained by the caller from the Atreemo instance `POST /token` endpoint (OAuth2 password grant) and sent as `Authorization: Bearer <token>`. See the Authorisation guide."}},"schemas":{"WAInputMessage":{"type":"object","nullable":true,"properties":{"WA_NumberID":{"type":"integer","format":"int32"},"CtcID":{"type":"integer","format":"int32"},"To":{"type":"string","nullable":true},"ReceiverName":{"type":"string","nullable":true},"MessageContent":{"type":"string","nullable":true},"ModuleIDName":{"type":"string","nullable":true},"ModuleIDValue":{"type":"integer","format":"int32"},"WATemplate":{"allOf":[{"$ref":"#/components/schemas/WATemplateMsg"}]},"IsReceived":{"type":"boolean","nullable":true},"MsgType":{"type":"string","nullable":true},"MsgUrl":{"type":"string","nullable":true},"Mime_Type":{"type":"string","nullable":true},"FileName":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WATemplateMsg":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true},"template_name":{"type":"string","nullable":true},"language":{"type":"string","nullable":true},"header_params":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"body_params":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"buttons":{"type":"array","items":{"$ref":"#/components/schemas/WAButton"},"nullable":true},"media":{"allOf":[{"$ref":"#/components/schemas/WAMedia"}]},"TemplateID":{"type":"integer","format":"int32"}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WAButton":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true},"index":{"type":"string","nullable":true},"text":{"type":"string","nullable":true},"payload":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WAMedia":{"type":"object","nullable":true,"properties":{"type":{"type":"string","nullable":true},"text":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WhatsAppAPIOutput":{"type":"object","nullable":true,"properties":{"response":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"StartSession":{"type":"string","format":"date-time","nullable":true},"MessageID":{"type":"string","nullable":true},"WaContactID":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."}}},"paths":{"/api/WhatsAppApi/SendWATemplate":{"post":{"operationId":"WhatsAppApiSendWaTemplate","summary":"SendWATemplate","tags":["WhatsAppApi"],"description":"Sends a configured WhatsApp template using the supplied recipient/module context and optional template details, then records the integration's message result. Template selection and supported parameters depend on the instance. A returned status is not a documented end-to-end delivery receipt or permission to retry a send without checking its outcome.","parameters":[{"name":"FromModule","in":"query","schema":{"type":"string","nullable":true,"default":""},"description":"Native query parameter. CLR string FromModule in the pinned controller signature. Omission uses the declared default.","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WAInputMessage"}}}},"responses":{"200":{"description":"OK (sample status in the public collection).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppAPIOutput"}}}}}}}}}
```

## SetOptin

> Submits WhatsApp opt-in processing for the specified customer/mobile/number context to the configured integration and records the resulting state. This is a consent-related mutation, not evidence of lawful consent or a universal opt-out capability. Inspect lowercase response and errors and verify the instance-specific effect of the supplied IsWhatsAppOptin value before production use.

```json
{"openapi":"3.0.3","info":{"title":"Atreemo API","version":"0.1.0"},"tags":[{"name":"WhatsAppApi","description":"Api Methods for WhatsAppApi"}],"servers":[{"url":"https://apim-hospitality-dev-uksouth.azure-api.net/atreemo-api","description":"Local DEV APIM import draft only; not a deployed endpoint announcement."}],"security":[{"AtreemoBearer":[]}],"components":{"securitySchemes":{"AtreemoBearer":{"type":"http","scheme":"bearer","description":"Atreemo access token obtained by the caller from the Atreemo instance `POST /token` endpoint (OAuth2 password grant) and sent as `Authorization: Bearer <token>`. See the Authorisation guide."}},"schemas":{"WhatsAppOptinInput":{"type":"object","nullable":true,"properties":{"CtcID":{"type":"integer","format":"int32"},"MobilePhone":{"type":"string","nullable":true},"IsWhatsAppOptin":{"type":"integer","format":"int32"},"WA_NumberID":{"type":"integer","format":"int32"}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."},"WhatsAppAPIOutput":{"type":"object","nullable":true,"properties":{"response":{"type":"boolean"},"errors":{"type":"array","items":{"type":"string","nullable":true},"nullable":true},"StartSession":{"type":"string","format":"date-time","nullable":true},"MessageID":{"type":"string","nullable":true},"WaContactID":{"type":"string","nullable":true}},"description":"Source-backed JSON members, including inheritance and JSON naming/ignore attributes. No property is required solely because its CLR value type is non-nullable. Runtime and deployment alignment are unverified."}}},"paths":{"/api/WhatsAppApi/SetOptin":{"post":{"operationId":"WhatsAppApiSetOptin","summary":"SetOptin","tags":["WhatsAppApi"],"description":"Submits WhatsApp opt-in processing for the specified customer/mobile/number context to the configured integration and records the resulting state. This is a consent-related mutation, not evidence of lawful consent or a universal opt-out capability. Inspect lowercase response and errors and verify the instance-specific effect of the supplied IsWhatsAppOptin value before production use.","parameters":[{"name":"FromModule","in":"query","schema":{"type":"string","nullable":true,"default":""},"description":"Native query parameter. CLR string FromModule in the pinned controller signature. Omission uses the declared default.","required":false}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppOptinInput"}}}},"responses":{"200":{"description":"OK (sample status in the public collection).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhatsAppAPIOutput"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.hos.accessacloud.com/atreemo-api/api-reference/atreemo-api-reference/whats-app-api.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
