<h1 align="center">
<a href="https://github.com/utsurius/django-actionable-messages">
Actionable messages
</a>
</h1>
<p align="center">
<a href="https://github.com/utsurius/django-actionable-messages/releases">
<img src="https://img.shields.io/github/release/utsurius/django-actionable-messages" alt="github"/>
</a>
<a href="https://pypi.python.org/pypi/django-actionable-messages">
<img src="https://badge.fury.io/py/django-actionable-messages.svg" alt="pypi"/>
</a>
<a href="https://github.com/utsurius/django-actionable-messages">
<img src="https://img.shields.io/pypi/pyversions/django_actionable_messages.svg" alt="python"/>
</a>
<a href="https://github.com/utsurius/django-actionable-messages">
<img src="https://img.shields.io/pypi/djversions/django_actionable_messages.svg" alt="django"/>
</a>
<a href="https://github.com/utsurius/django-actionable-messages/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/utsurius/django-actionable-messages" alt="license"/>
</a>
</p>
1. [Base informations](#base-informations)
2. [Installation](#installation)
3. [Requirements](#requirements)
4. [Usage](#usage)
5. [AdaptiveCard](#adaptivecard)
* [Elements](#adaptivecard-elements)
* [TextBlock](#adaptivecard-textblock)
* [Image](#adaptivecard-image)
* [MediaSource](#adaptivecard-mediasource)
* [CaptionSource](#adaptivecard-captionsource)
* [Media](#adaptivecard-media)
* [TextRun](#adaptivecard-textrun)
* [RichTextBlock](#adaptivecard-richtextblock)
* [Inputs](#adaptivecard-inputs)
* [TextInput](#adaptivecard-textinput)
* [NumberInput](#adaptivecard-numberinput)
* [DateInput](#adaptivecard-dateinput)
* [TimeInput](#adaptivecard-timeinput)
* [ToggleInput](#adaptivecard-toggleinput)
* [InputChoice](#adaptivecard-inputchoice)
* [ChoiceSetInput](#adaptivecard-choicesetinput)
* [DataQuery](#adaptivecard-dataquery)
* [Actions](#adaptivecard-actions)
* [OpenUrl](#adaptivecard-openurl)
* [Submit](#adaptivecard-submit)
* [ShowCard](#adaptivecard-showcard)
* [TargetElement](#adaptivecard-targetelement)
* [ToggleVisibility](#adaptivecard-togglevisibility)
* [Execute](#adaptivecard-execute)
* [Containers](#adaptivecard-containers)
* [ActionSet](#adaptivecard-actionset)
* [Container](#adaptivecard-container)
* [Column](#adaptivecard-column)
* [ColumnSet](#adaptivecard-columnset)
* [Fact](#adaptivecard-fact)
* [FactSet](#adaptivecard-factset)
* [ImageSet](#adaptivecard-imageset)
* [TableCell](#adaptivecard-tablecell)
* [TableRow](#adaptivecard-tablerow)
* [Table](#adaptivecard-table)
* [Types](#adaptivecard-types)
* [BackgroundImage](#adaptivecard-backgroundimage)
* [Refresh](#adaptivecard-refresh)
* [TokenExchangeResource](#adaptivecard-tokenexchangeresource)
* [AuthCardButton](#adaptivecard-authcardbutton)
* [Authentication](#adaptivecard-authentication)
* [Metadata](#adaptivecard-metadata)
* [Cards](#adaptivecard-cards)
* [AdaptiveCard](#adaptivecard-adaptivecard)
6. [MessageCard](#messagecard)
* [Elements](#messagecard-elements)
* [Header](#messagecard-header)
* [Fact](#messagecard-fact)
* [HeroImage](#messagecard-heroimage)
* [InputChoice](#messagecard-inputchoice)
* [ActionTarget](#messagecard-actiontarget)
* [Inputs](#messagecard-inputs)
* [TextInput](#messagecard-textinput)
* [DateInput](#messagecard-dateinput)
* [MultiChoiceInput](#messagecard-multichoiceinput)
* [Actions](#messagecard-actions)
* [OpenUri](#messagecard-openuri)
* [HttpPOST](#messagecard-httppost)
* [InvokeAddInCommand](#messagecard-invokeaddincommand)
* [ActionCard](#messagecard-actioncard)
* [Sections](#messagecard-sections)
* [Section](#messagecard-section)
* [Cards](#messagecard-cards)
* [MessageCard](#messagecard-messagecard)
7. [HeroCard](#herocard)
* [Elements](#herocard-elements)
* [OpenUrl](#herocard-openurl)
* [Image](#herocard-image)
* [Cards](#herocard-cards)
* [HeroCard](#herocard-herocard)
8. [ThumbnailCard](#thumbnailcard)
* [Elements](#thumbnailcard-elements)
* [Cards](#thumbnailcard-cards)
* [ThumbnailCard](#thumbnailcard-thumbnailcard)
<h2 id="base-informations">Base informations</h2>
[Playground V2](https://messagecardplayground.azurewebsites.net/)
[Send an actionable message via email in Office 365](https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-email)
[Outlook version requirements for actionable messages](https://docs.microsoft.com/en-us/outlook/actionable-messages/#outlook-version-requirements-for-actionable-messages)
<h2 id="installation">Installation</h2>
`pip install git+https://github.com/utsurius/django-actionable-messages`
`pip install django-actionable-messages`
Add "django_actionable_messages" to INSTALLED_APPS:
```python
INSTALLED_APPS = [
...
"django_actionable_messages",
]
```
SETTINGS
```python
ACTIONABLE_MESSAGES = {
"JSON_ENCODER": None,
"LANGUAGE_CODE": "en"
}
```
"JSON_ENCODER" - doted path to custom json encoder (default: BaseEncoder).
"LANGUAGE_CODE" - language code used for translations (defaults to project settings.LANGUAGE_CODE). Each element of adaptive_card/message_card can set individual "lang_code".
<h2 id="requirements">Requirements</h2>
| Name | Version |
|---------|------------|
| python | 3.6 - 3.10 |
| django | 3.2 - 4.2 |
<h2 id="usage">Usage</h2>
**`examples/message_card/github.py`**
```python
from django_actionable_messages.message_card.actions import OpenUri, HttpPOST, ActionCard
from django_actionable_messages.message_card.cards import MessageCard
from django_actionable_messages.message_card.elements import Fact, ActionTarget
from django_actionable_messages.message_card.inputs import TextInput
from django_actionable_messages.message_card.sections import Section
from django_actionable_messages.message_card.utils import OSType
issue_opened = MessageCard(title="Issue opened: \"Push notifications not working\"", summary="Issue 176715375",
theme_color="0078D7")
issue_opened.add_sections(
Section(
activity_title="Miguel Garcie",
activity_subtitle="9/13/2016, 11:46am",
activity_image="https://connectorsdemo.azurewebsites.net/images/MSC12_Oscar_002.jpg",
text="There is a problem with Push notifications, they don't seem to be picked up by the connector.",
facts=[
Fact("Repository:", "mgarcia\\test"),
Fact("Issue #:", "176715375")
]
)
)
issue_opened.add_actions([
ActionCard(
name="Add a comment",
inputs=[
TextInput(input_id="comment", title="Enter a comment", is_multiline=True)
],
actions=[
HttpPOST("OK", target="http://...")
]
),
HttpPOST("Close", target="http://..."),
OpenUri(name="View in Github", targets=[
ActionTarget(OSType.DEFAULT, "http://...")
])
])
```
**`examples/adaptive_card/calendar_reminder.py`**
```python
from django_actionable_messages.adaptive_card.actions import Submit
from django_actionable_messages.adaptive_card.cards import AdaptiveCard
from django_actionable_messages.adaptive_card.elements import TextBlock
from django_actionable_messages.adaptive_card.inputs import InputChoice, ChoiceSetInput
from django_actionable_messages.adaptive_card.utils import SCHEMA, FontSize, FontWeight, SpacingStyle, ChoiceInputStyle
calendar_reminder = AdaptiveCard(version="1.0", schema=SCHEMA)
calendar_reminder.set_speak("Your meeting about \"Adaptive Card design session\" is starting at 12:30pm"
"Do you want to snooze or do you want to send a late notification to the attendees?")
calendar_reminder.add_elements(TextBlock("Adaptive Card design session", size=FontSize.LARGE, weight=FontWeight.BOLDER))
calendar_reminder.add_elements([
TextBlock("Conf Room 112/3377 (10)", is_subtle=True),
TextBlock("12:30 PM - 1:30 PM", is_subtle=True, spacing=SpacingStyle.NONE),
TextBlock("Snooze for")
])
calendar_reminder.add_elements(ChoiceSetInput(
item_id="snooze", style=ChoiceInputStyle.COMPACT, value="5", choices=[
InputChoice("5 minutes", "5"),
InputChoice("15 minutes", "15"),
InputChoice("30 minutes", "30")
]
))
calendar_reminder.add_actions([
Submit(title="Snooze", data={
"x": "snooze"
}),
Submit(title="I'll be late", data={
"x": "late"
})
])
```
For more view **`examples`** folder
To get dictionary, json or html payload from card use:
| Property | Type |
|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| .payload | *dict* (raw data) |
| .json_payload | json string |
| .html_payload | html string - can be used to send card via email ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-email)) |
| .signed_html_payload | html string<sup>1</sup> - can be used to send card via email ([docs](https://docs.microsoft.com/en-us/outlook/actionable-messages/security-requirements)) |
\[1\] you must overwrite **get_signed_payload()** in AdaptiveCard/MessageCard to sign the payload!
Problem: **'... is not JSON serializable'** - probably invalid argument type was used. Default json serializer can handle translated strings and everything that `DjangoJSONEncoder` can handle.
Solution: [Better Python Object Serialization](https://hynek.me/articles/serialization/). Remember to ALWAYS inherit from EncoderMixin or BaseEncoder (`django_actionable_messages.encoders import EncoderMixin, BaseEncoder`)
You can set JSON_ENCODER (globally) in SETTINGS(ACTIONABLE_MESSAGES) or set it by card(json_encoder):
```python
from django_actionable_messages.adaptive_card.cards import AdaptiveCard
class MyAdaptiveCard(AdaptiveCard):
json_encoder = "path.to.my.encoder"
```
or
```python
from django_actionable_messages.adaptive_card.cards import AdaptiveCard
class MyAdaptiveCard(AdaptiveCard):
json_encoder = MyJSONEncoder
```
To customize json dump you can overwrite `get_json_dump_kwargs()` in card (AdaptiveCard/MessageCard)
```python
from django_actionable_messages.adaptive_card.cards import AdaptiveCard
class MyAdaptiveCard(AdaptiveCard):
def get_json_dump_kwargs(self):
return {
'ensure_ascii': False,
'indent': 2
}
```
Send MessageCard to msteams using webhooks and `requests` library:
```python
import requests
requests.post(
webhook_url,
data=card.json_payload,
headers={
"Content-Type": "application/json; charset=utf-8"
}
)
```
To get/add `webhook_url` see here: [Get the Microsoft Teams webhook URL](https://learning.getpostman.com/docs/postman_pro/integrations/microsoft_teams/#get-the-microsoft-teams-webhook-url), [Create and add an outgoing webhook in Teams](https://support.office.com/en-ie/article/create-and-add-an-outgoing-webhook-in-teams-8e1a1648-982f-4511-b342-6d8492437207)
<h2 id="adaptivecard">AdaptiveCard</h2>
Supported versions: **1.0 - 1.6**
[Schema Explorer](https://adaptivecards.io/explorer/)
<h3 id="adaptivecard-elements">Elements</h3>
**src**: `from django_actionable_messages.adaptive_card.elements import ...`
<h4 id="adaptivecard-textblock">TextBlock <a href="https://adaptivecards.io/explorer/TextBlock.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------------|----------------------------|---------------------|--------------------------------------------------------|
| **text** | - | text | *str, trans<sup>3</sup>* |
| color | set_color() | color | Color<sup>1</sup> |
| font_type | set_font_type() | fontType | FontType<sup>1</sup> |
| horizontal_alignment | set_horizontal_alignment() | horizontalAlignment | HorizontalAlignment<sup>1</sup> |
| is_subtle | set_is_subtle() | isSubtle | *bool* |
| max_lines | set_max_lines() | maxLines | *int* |
| size | set_size() | size | FontSize<sup>1</sup> |
| weight | set_weight() | weight | FontWeight<sup>1</sup> |
| wrap | set_wrap() | wrap | *bool* |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>1</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="adaptivecard-image">Image <a href="https://adaptivecards.io/explorer/Image.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------------|----------------------------|---------------------|--------------------------------------------------------|
| **url** | set_url() | url | *str* |
| alternate_text | set_alternate_text() | altText | *str* |
| background_color | set_background_color() | backgroundColor | *str* |
| height | set_height() | height | str or BlockElementHeight<sup>1</sup> |
| horizontal_alignment | set_horizontal_alignment() | horizontalAlignment | HorizontalAlignment<sup>1</sup> |
| select_action | set_select_action() | selectAction | see docs |
| size | set_size() | size | ImageSize<sup>1</sup> |
| style | set_style() | style | ImageStyle<sup>1</sup> |
| width | set_width() | width | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>1</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
<h4 id="adaptivecard-mediasource">MediaSource <a href="https://adaptivecards.io/explorer/MediaSource.html">docs</a></h4>
| Argument name | Property | Type |
|---------------|----------|--------|
| **mime_type** | mimeType | *str* |
| **url** | url | *str* |
<h4 id="adaptivecard-captionsource">CaptionSource <a href="https://adaptivecards.io/explorer/CaptionSource.html">docs</a></h4>
| Argument name | Property | Type |
|---------------|----------|--------|
| **mime_type** | mimeType | *str* |
| **url** | url | *str* |
| **label** | label | *str* |
<h4 id="adaptivecard-media">Media <a href="https://adaptivecards.io/explorer/Media.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------|----------------------|-----------|--------------------------------------------------------|
| **sources** | - | sources | *list* of MediaSource(s)<sup>1</sup> |
| poster | set_poster() | poster | *str* |
| alternate_text | set_alternate_text() | altText | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>1</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>2</sup> |
| lang_code | - | - | *str* |
Other functions
| Name | Property | Type |
|-----------------------|----------------|---------------------------|
| add_sources() | sources | MediaSource<sup>1</sup> |
| add_source() | sources | MediaSource<sup>1</sup> |
| set_caption_sources() | captionSources | CaptionSource<sup>2</sup> |
| add_caption_sources() | captionSources | CaptionSource<sup>2</sup> |
| add_caption_source() | captionSources | CaptionSource<sup>2</sup> |
\[1\] `from django_actionable_messages.adaptive_cards.elements import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
<h4 id="adaptivecard-textrun">TextRun <a href="https://adaptivecards.io/explorer/TextRun.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------|----------------------|---------------|---------------------------|
| **text** | - | text | *str*, trans <sup>2</sup> |
| color | set_color() | color | Color<sup>1</sup> |
| font_type | set_font_type() | fontType | FontType<sup>1</sup> |
| highlight | set_highlight() | highlight | *bool* |
| is_subtle | set_is_subtle() | isSubtle | *bool* |
| italic | set_italic() | italic | *bool* |
| select_action | set_select_action() | selectAction | see docs |
| size | set_size() | fontSize | FontSize<sup>1</sup> |
| strike_through | set_strike_through() | strikethrough | *bool* |
| weight | set_weight() | fontWeight | FontWeight<sup>1</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="adaptivecard-richtextblock">RichTextBlock <a href="https://adaptivecards.io/explorer/RichTextBlock.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------------|----------------------------|---------------------|--------------------------------------------------------|
| **inlines** | - | inlines | *str*, TextRun<sup>1</sup>, trans<sup>4</sup> |
| horizontal_alignment | set_horizontal_alignment() | horizontalAlignment | HorizontalAlignment<sup>2</sup> |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>1</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>2</sup> |
\[1\] `from django_actionable_messages.adaptive_cards.elements import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
\[4\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h3 id="adaptivecard-inputs">Inputs</h3>
**src**: `from django_actionable_messages.adaptive_card.inputs import ...`
<h4 id="adaptivecard-textinput">TextInput <a href="https://adaptivecards.io/explorer/Input.Text.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|---------------------|--------------|---------------------------------------------------------|
| is_multiline | set_is_multiline() | isMultiline | *bool* |
| max_length | set_max_length() | maxLength | *int* |
| placeholder | set_placeholder() | placeholder | *str*, trans<sup>3</sup> |
| style | set_style() | style | TextInputStyle<sup>1</sup> |
| inline_action | set_inline_action() | inlineAction | see docs |
| value | set_value() | value | *str*, trans<sup>3</sup> |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>1</sup> |
| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
\[4\] `from django_actionable_messages.adaptive_cards.elements import ...`
<h4 id="adaptivecard-numberinput">NumberInput <a href="https://adaptivecards.io/explorer/Input.Number.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|-------------------|-------------|---------------------------------------------------------|
| max_value | set_max_value() | maxValue | *int* |
| min_value | set_min_value() | minValue | *int* |
| placeholder | set_placeholder() | placeholder | *str*, trans<sup>3</sup> |
| value | set_value() | value | *int* |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>1</sup> |
| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
\[4\] `from django_actionable_messages.adaptive_cards.elements import ...`
<h4 id="adaptivecard-dateinput">DateInput <a href="https://adaptivecards.io/explorer/Input.Date.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|-------------------|-------------|---------------------------------------------------------|
| max_value | set_max_value() | maxValue | *str* |
| min_value | set_min_value() | minValue | *str* |
| placeholder | set_placeholder() | placeholder | *str*, trans<sup>3</sup> |
| value | set_value() | value | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>1</sup> |
| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
\[4\] `from django_actionable_messages.adaptive_cards.elements import ...`
<h4 id="adaptivecard-timeinput">TimeInput <a href="https://adaptivecards.io/explorer/Input.Time.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|-------------------|-------------|---------------------------------------------------------|
| max_value | set_max_value() | maxValue | *str* |
| min_value | set_min_value() | minValue | *str* |
| placeholder | set_placeholder() | placeholder | *str*, trans<sup>3</sup> |
| value | set_value() | value | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>1</sup> |
| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
\[4\] `from django_actionable_messages.adaptive_cards.elements import ...`
<h4 id="adaptivecard-toggleinput">ToggleInput <a href="https://adaptivecards.io/explorer/Input.Toggle.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|------------------|-----------|---------------------------------------------------------|
| **title** | - | title | *str*, trans<sup>3</sup> |
| value | set_value() | value | *str* |
| value_off | set_value_off() | valueOff | *str* |
| value_on | set_value_on() | valueOn | *str* |
| wrap | set_wrap() | wrap | *bool* |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>1</sup> |
| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
\[4\] `from django_actionable_messages.adaptive_cards.elements import ...`
<h4 id="adaptivecard-inputchoice">InputChoice <a href="https://adaptivecards.io/explorer/Input.Choice.html">docs</a></h4>
| Argument name | Property | Type |
|---------------|----------|--------------------------|
| **title** | title | *str*, trans<sup>1</sup> |
| **value** | value | *str*, *int* |
| lang_code | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="adaptivecard-choicesetinput">ChoiceSetInput <a href="https://adaptivecards.io/explorer/Input.ChoiceSet.html">docs</a></h4>
| Argument name | Function | Property | Type |
|-----------------|-----------------------|---------------|---------------------------------------------------------|
| **choices** | - | choices | *list* of InputChoice(s)<sup>1</sup> |
| is_multi_select | set_is_multi_select() | isMultiSelect | *bool* |
| style | set_style() | style | ChoiceInputStyle<sup>2</sup> |
| value | set_value() | value | *str* |
| wrap | set_wrap() | wrap | *bool* |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>2</sup> |
| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.inputs import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
\[4\] `from django_actionable_messages.adaptive_cards.elements import ...`
<h4 id="adaptivecard-dataquery">DataQuery <a href="https://adaptivecards.io/explorer/Data.Query.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|---------------|----------|-------|
| **dataset** | set_dataset() | dataset | *str* |
| count | set_count() | count | *int* |
| skip | set_skip() | skip | *int* |
<h3 id="adaptivecard-actions">Actions</h3>
**src**: `from django_actionable_messages.adaptive_card.actions import ...`
<h4 id="adaptivecard-openurl">OpenUrl <a href="https://adaptivecards.io/explorer/Action.OpenUrl.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|------------------|-----------|------------------------------------------------------------------------------------|
| **url** | - | url | *str* |
| title | set_title() | title | *str*, trans<sup>3</sup> |
| icon_url | set_icon_url() | iconUrl | *str* |
| style | set_style() | style | ActionStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or action<sup>1</sup>(except TargetElement<sup>1</sup>) |
| tooltip | set_tooltip() | tooltip | *str* |
| is_enabled | set_is_enabled() | isEnabled | *bool* |
| mode | set_mode() | mode | ActionMode<sup>2</sup> |
| requires | set_requires() | requires | *dict* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.actions import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="adaptivecard-submit">Submit <a href="https://adaptivecards.io/explorer/Action.Submit.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|------------------|-----------|------------------------------------------------------------------------------------|
| data | set_data() | data | *str*, *dict* |
| title | set_title() | title | *str*, trans<sup>3</sup> |
| icon_url | set_icon_url() | iconUrl | *str* |
| style | set_style() | style | ActionStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or action<sup>1</sup>(except TargetElement<sup>1</sup>) |
| tooltip | set_tooltip() | tooltip | *str* |
| is_enabled | set_is_enabled() | isEnabled | *bool* |
| mode | set_mode() | mode | ActionMode<sup>2</sup> |
| requires | set_requires() | requires | *dict* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.actions import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="adaptivecard-showcard">ShowCard <a href="https://adaptivecards.io/explorer/Action.ShowCard.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|------------------|-----------|------------------------------------------------------------------------------------|
| card | set_card() | card | AdaptiveCard<sup>2</sup> |
| title | set_title() | title | *str*, trans<sup>4</sup> |
| icon_url | set_icon_url() | iconUrl | *str* |
| style | set_style() | style | ActionStyle<sup>3</sup> |
| item_id | set_id() | id | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>3</sup> or action<sup>1</sup>(except TargetElement<sup>1</sup>) |
| tooltip | set_tooltip() | tooltip | *str* |
| is_enabled | set_is_enabled() | isEnabled | *bool* |
| mode | set_mode() | mode | ActionMode<sup>3</sup> |
| requires | set_requires() | requires | *dict* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.actions import ...`
\[2\] `from django_actionable_messages.adaptive_cards.cards import ...`
\[3\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[4\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="adaptivecard-targetelement">TargetElement <a href="https://adaptivecards.io/explorer/TargetElement.html">docs</a></h4>
| Argument name | Function | Property | Type |
|-----------------|------------------|------------|--------|
| **element_id** | - | elementId | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
<h4 id="adaptivecard-togglevisibility">ToggleVisibility <a href="https://adaptivecards.io/explorer/Action.ToggleVisibility.html">docs</a></h4>
| Argument name | Function | Property | Type |
|-----------------|-----------------------|----------------|------------------------------------------------------------------------------------|
| target_elements | set_target_elements() | targetElements | *list* of TargetElement<sup>1</sup>/*str*/trans<sup>3</sup> (can be mixed) |
| title | set_title() | title | *str* |
| icon_url | set_icon_url() | iconUrl | *str* |
| style | set_style() | style | ActionStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or action<sup>1</sup>(except TargetElement<sup>1</sup>) |
| tooltip | set_tooltip() | tooltip | *str* |
| is_enabled | set_is_enabled() | isEnabled | *bool* |
| mode | set_mode() | mode | ActionMode<sup>2</sup> |
| requires | set_requires() | requires | *dict* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.actions import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="adaptivecard-execute">Execute <a href="https://adaptivecards.io/explorer/Action.Execute.html">docs</a></h4>
| Argument name | Function | Property | Type |
|-------------------|-------------------------|------------------|------------------------------------------------------------------------------------|
| verb | set_verb() | verb | *str* |
| data | set_data() | data | *str*, object |
| associated_inputs | set_associated_inputs() | associatedInputs | AssociatedInputs<sup>1</sup> |
| title | set_title() | title | *str* |
| icon_url | set_icon_url() | iconUrl | *str* |
| style | set_style() | style | ActionStyle<sup>1</sup> |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or action<sup>2</sup>(except TargetElement<sup>2</sup>) |
| tooltip | set_tooltip() | tooltip | *str* |
| is_enabled | set_is_enabled() | isEnabled | *bool* |
| mode | set_mode() | mode | ActionMode<sup>1</sup> |
| requires | set_requires() | requires | *dict* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_card.utils import ...`
\[2\] `from django_actionable_messages.adaptive_card.actions import ...`
<h3 id="adaptivecard-containers">Containers</h3>
**src**: `from django_actionable_messages.adaptive_card.containers import ...`
<h4 id="adaptivecard-actionset">ActionSet <a href="https://adaptivecards.io/explorer/ActionSet.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|------------------|-----------|--------------------------------------------------------|
| actions | add_actions() | actions | action or *list* of actions(see docs) |
| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>1</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
<h4 id="adaptivecard-container">Container <a href="https://adaptivecards.io/explorer/Container.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------------------|----------------------------------|--------------------------|--------------------------------------------------------|
| items | add_items() | items | item or *list* of items(see docs) |
| select_action | set_select_action() | selectAction | any action(see docs) |
| style | set_style() | style | Style<sup>2</sup> |
| vertical_content_alignment | set_vertical_content_alignment() | verticalContentAlignment | VerticalAlignment<sup>2</sup> |
| bleed | set_bleed() | bleed | *bool* |
| background_image | set_background_image() | backgroundImage | BackgroundImage<sup>1</sup> |
| min_height | set_min_height() | minHeight | *str* |
| rtl | set_rtl() | rtl | *bool* |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>2</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.types import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
<h4 id="adaptivecard-column">Column <a href="https://adaptivecards.io/explorer/Column.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------------------|----------------------------------|--------------------------|--------------------------------------------------|
| items | add_items() | items | item or *list* of items(see docs) |
| background_image | set_background_image() | backgroundImage | *str*, BackgroundImage<sup>2</sup> |
| bleed | set_bleed() | bleed | *bool* |
| fallback | set_fallback() | fallback | FallbackOption<sup>3</sup> or Column<sup>1</sup> |
| min_height | set_min_height() | minHeight | *str* |
| rtl | set_rtl() | rtl | *bool* |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>3</sup> |
| select_action | set_select_action() | selectAction | see docs |
| style | set_style() | style | Style<sup>3</sup> |
| vertical_content_alignment | set_vertical_content_alignment() | verticalContentAlignment | VerticalAlignment<sup>3</sup> |
| width | set_width() | width | *str*, *int*, Width<sup>3</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.containers import ...`
\[2\] `from django_actionable_messages.adaptive_cards.types import ...`
\[3\] `from django_actionable_messages.adaptive_cards.utils import ...`
<h4 id="adaptivecard-columnset">ColumnSet <a href="https://adaptivecards.io/explorer/ColumnSet.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|---------------------|--------------|--------------------------------------------------------|
| **columns** | add_columns() | columns | Column<sup>1</sup> or *list* of Column(s)<sup>1</sup> |
| select_action | set_select_action() | selectAction | see docs |
| style | set_style() | style | Style<sup>2</sup> |
| bleed | set_bleed() | bleed | *bool* |
| min_height | set_min_height() | minHeight | *str* |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>2</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.containers import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
<h4 id="adaptivecard-fact">Fact <a href="https://adaptivecards.io/explorer/Fact.html">docs</a></h4>
| Argument name | Property | Type |
|---------------|----------|--------------------------|
| **title** | title | *str*, trans<sup>1</sup> |
| **value** | value | *str*, trans<sup>1</sup> |
| lang_code | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="adaptivecard-factset">FactSet <a href="https://adaptivecards.io/explorer/FactSet.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|------------------|-----------|--------------------------------------------------------|
| facts | add_facts() | facts | Fact<sup>1</sup> or *list* of Fact(s)<sup>1</sup> |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>2</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.containers import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
<h4 id="adaptivecard-imageset">ImageSet <a href="https://adaptivecards.io/explorer/ImageSet.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|------------------|-----------|--------------------------------------------------------|
| images | add_images() | images | Image<sup>1</sup> or *list* of Image(s)<sup>1</sup> |
| image_size | set_image_size() | imageSize | ImageSize<sup>2</sup> |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| height | set_height() | height | BlockElementHeight<sup>2</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.elements import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] `from django_actionable_messages.adaptive_cards.elements import ...`
| Type | All except | Import |
|--------------|----------------------|------------------------------------------------------------------------|
| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |
| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |
| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |
<h4 id="adaptivecard-tablecell">TableCell <a href="https://adaptivecards.io/explorer/TableCell.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------------------|----------------------------------|--------------------------|----------------------------------------------------------------------------------------------|
| select_action | set_select_action() | selectAction | Execute<sup>1</sup>, OpenUrl<sup>1</sup>, Submit<sup>1</sup> or ToggleVisibility<sup>1</sup> |
| style | set_style() | style | Style<sup>2</sup> |
| vertical_content_alignment | set_vertical_content_alignment() | verticalContentAlignment | VerticalAlignment<sup>2</sup> |
| bleed | set_bleed() | bleed | *bool* |
| background_image | set_background_image() | backgroundImage | BackgroundImage<sup>3</sup> or *str* |
| min_height | set_min_height() | minHeight | *str* |
| rtl | set_rtl() | rtl | *bool* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.actions import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] `from django_actionable_messages.adaptive_cards.types import ...`
<h4 id="adaptivecard-tablerow">TableRow</h4>
| Argument name | Function | Property | Type |
|---------------|-------------|----------|-----------------------|
| cells | add_cells() | cells | TableCell<sup>1</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.containers import ...`
<h4 id="adaptivecard-table">Table <a href="https://adaptivecards.io/explorer/Table.html">docs</a></h4>
| Argument name | Function | Property | Type |
|-----------------------------------|-----------------------------------------|--------------------------------|--------------------------------------------------------|
| columns | add_columns() | columns | *dict* |
| rows | add_rows() | rows | TableRow<sup>1</sup> or *list* of TableRow<sup>1</sup> |
| horizontal_cell_content_alignment | set_horizontal_cell_content_alignment() | horizontalCellContentAlignment | HorizontalAlignment<sup>2</sup> |
| vertical_cell_content_alignment | set_vertical_cell_content_alignment() | verticalCellContentAlignment | VerticalAlignment<sup>2</sup> |
| first_row_as_header | set_first_row_as_header() | firstRowAsHeader | *bool* |
| show_grid_lines | set_show_grid_lines() | showGridLines | *bool* |
| grid_style | set_grid_style() | style | Style<sup>2</sup> |
| height | set_height() | height | BlockElementHeight<sup>2</sup> |
| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |
| separator | set_separator() | separator | *bool* |
| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |
| item_id | set_id() | id | *str* |
| is_visible | set_is_visible() | isVisible | *bool* |
| requires | set_requires() | requires | *dict* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.containers import ...`
\[2\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[3\] `from django_actionable_messages.adaptive_cards.elements import ...`
<h3 id="adaptivecard-types">Types</h3>
**src**: `from django_actionable_messages.adaptive_card.types import ...`
<h4 id="adaptivecard-backgroundimage">BackgroundImage <a href="https://adaptivecards.io/explorer/BackgroundImage.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------------|----------------------------|---------------------|---------------------------------|
| **url** | set_url() | url | *str* |
| fill_mode | set_fill_mode() | fillMode | FillMode<sup>1</sup> |
| horizontal_alignment | set_horizontal_alignment() | horizontalAlignment | HorizontalAlignment<sup>1</sup> |
| vertical_alignment | set_vertical_alignment() | verticalAlignment | VerticalAlignment<sup>1</sup> |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
<h4 id="adaptivecard-refresh">Refresh <a href="https://adaptivecards.io/explorer/Refresh.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|----------------|----------|---------------------|
| action | set_action() | action | Execute<sup>1</sup> |
| expires | set_expires() | expires | *str* (ISO-8601) |
| user_ids | set_user_ids() | list | list of *str* |
\[1\] `from django_actionable_messages.adaptive_cards.actions import ...`
<h4 id="adaptivecard-tokenexchangeresource">TokenExchangeResource <a href="https://adaptivecards.io/explorer/TokenExchangeResource.html">docs</a></h4>
| Argument name | Function | Property | Type |
|------------------|----------|-------------|--------|
| **token_id** | - | id | *str* |
| **uri** | - | uri | *str* |
| **provider_id** | - | providerId | *str* |
<h4 id="adaptivecard-authcardbutton">AuthCardButton <a href="https://adaptivecards.io/explorer/AuthCardButton.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|-------------|----------|--------|
| **btn_type** | - | type | *str* |
| **value** | - | value | *str* |
| title | set_title() | title | *str* |
| image | set_image() | image | *str* |
<h4 id="adaptivecard-authentication">Authentication <a href="https://adaptivecards.io/explorer/Authentication.html">docs</a></h4>
| Argument name | Function | Property | Type |
|-------------------------|-------------------------------|-----------------------|--------------------------------------|
| text | set_text() | text | *str* |
| connection_name | set_connection_name() | connectionName | *str* |
| token_exchange_resource | set_token_exchange_resource() | tokenExchangeResource | TokenExchangeResource<sup>1</sup> |
| buttons | set_buttons() | buttons | *list* of AuthCardButton<sup>1</sup> |
\[1\] `from django_actionable_messages.adaptive_cards.types import ...`
<h4 id="adaptivecard-metadata">Metadata <a href="https://adaptivecards.io/explorer/Metadata.html">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|-----------|----------|-------|
| url | set_url() | webUrl | *str* |
<h3 id="adaptivecard-cards">Cards</h3>
**src**: `from django_actionable_messages.adaptive_card.cards import ...`
<h4 id="adaptivecard-adaptivecard">AdaptiveCard <a href="https://adaptivecards.io/explorer/AdaptiveCard.html">docs</a></h4>
| Argument name | Function | Property | Type |
|----------------------------|----------------------------------|--------------------------|---------------------------------------|
| version | set_version() | version | *str*, SCHEMA<sup>1</sup> |
| schema | set_schema() | $schema | *str* |
| refresh | set_refresh() | refresh | Refresh<sup>3</sup> |
| authentication | set_authentication() | authentication | Authentication<sup>3</sup> |
| inputs | add_elements() | inputs | input or *list* of inputs(see docs) |
| actions | add_actions() | actions | action or *list* of actions(see docs) |
| select_action | set_select_action() | selectAction | see docs |
| style | set_style() | style | Style<sup>1</sup> |
| hide_original_body | set_hide_original_body() | hideOriginalBody | *bool* |
| fallback_text | set_fallback_text() | fallbackText | *str* |
| background_image | set_background_image() | backgroundImage | *str*, Image<sup>2</sup> |
| metadata | set_metadata() | metadata | Metadata<sup>3</sup> |
| min_height | set_min_height() | minHeight | *str* |
| speak | set_speak() | speak | *str* |
| lang | set_lang() | lang | *str* |
| rtl | set_rtl() | rtl | *bool* |
| vertical_content_alignment | set_vertical_content_alignment() | verticalContentAlignment | VerticalAlignment<sup>1</sup> |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.adaptive_cards.utils import ...`
\[2\] `from django_actionable_messages.adaptive_cards.elements import ...`
\[3\] `from django_actionable_messages.adaptive_cards.types import ...`
<h2 id="messagecard">MessageCard</h2>
[Legacy actionable message card reference](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference)
<h3 id="messagecard-elements">Elements</h3>
**src**: `from django_actionable_messages.message_card.elements import ...`
<h4 id="messagecard-header">Header <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#header">docs</a></h4>
| Argument name | Property | Type |
|---------------|----------|---------------|
| **name** | name | *str* |
| **value** | value | *str*, *int* |
<h4 id="messagecard-fact">**Fact**</h4>
| Argument name | Property | Type |
|---------------|----------|--------------------------|
| **name** | name | *str*, trans<sup>1</sup> |
| **value** | value | *str*, trans<sup>1</sup> |
| lang_code | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="messagecard-heroimage">HeroImage <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#image-object">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|-------------|----------|--------------------------|
| **url** | - | image | *str* |
| title | set_title() | title | *str*, trans<sup>1</sup> |
| lang_code | - | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="messagecard-inputchoice">InputChoice</h4>
| Argument name | Property | Type |
|---------------|----------|--------------------------|
| **name** | display | *str*, trans<sup>1</sup> |
| **value** | value | *str*, *int* |
| lang_code | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="messagecard-actiontarget">ActionTarget</h4>
| Argument name | Property | Type |
|---------------|----------|--------------------|
| **os_type** | os | OSType<sup>1</sup> |
| url | uri | *str* |
| lang_code | - | *str* |
\[1\] `from django_actionable_messages.message_cards.utils import ...`
<h3 id="messagecard-inputs">Inputs</h3>
**src**: `from django_actionable_messages.message_card.inputs import ...`
<h4 id="messagecard-textinput">TextInput <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#textinput">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|--------------------|-------------|--------------------------|
| max_length | set_max_length() | maxLength | *int* |
| is_multiline | set_is_multiline() | isMultiline | *bool* |
| input_id | set_id() | id | *str* |
| title | set_title() | title | *str*, trans<sup>1</sup> |
| value | set_value() | value | *str* |
| is_required | set_is_required() | isRequired | *bool* |
| lang_code | - | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="messagecard-dateinput">DateInput <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#dateinput">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|--------------------|------------|--------------------------|
| include_time | set_include_time() | maxLength | *bool* |
| input_id | set_id() | id | *str* |
| title | set_title() | title | *str*, trans<sup>1</sup> |
| value | set_value() | value | *str* |
| is_required | set_is_required() | isRequired | *bool* |
| lang_code | - | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="messagecard-multichoiceinput">MultiChoiceInput <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#multichoiceinput">docs</a></h4>
| Argument name | Function | Property | Type |
|-----------------|-----------------------|-----------------|--------------------------------------|
| **choices** | add_choices() | choices | *list* of InputChoice(s)<sup>1</sup> |
| is_multi_select | set_is_multi_select() | isMultiSelect | *bool* |
| style | set_style() | style | ChoiceStyle<sup>2</sup> |
| input_id | set_id() | id | *str* |
| title | set_title() | title | *str*, trans<sup>3</sup> |
| value | set_value() | value | *str* |
| is_required | set_is_required() | isRequired | *bool* |
| lang_code | - | - | *str* |
Other functions
| Name | Property | Type |
|---------------|----------|--------------------------|
| add_choice() | choices | InputChoice<sup>1</sup> |
\[1\] `from django_actionable_messages.message_cards.inputs import ...`
\[2\] `from django_actionable_messages.message_cards.utils import ...`
\[3\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h3 id="messagecard-actions">Actions</h3>
**src**: `from django_actionable_messages.message_card.actions import ...`
<h4 id="messagecard-openuri">OpenUri <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#openuri-action">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|---------------|----------|------------------------------------|
| **name** | - | name | *str*, trans<sup>2</sup> |
| targets | add_targets() | targets | *list* of ActionTarget<sup>1</sup> |
| lang_code | - | - | *str* |
Other functions
| Name | Property | Type |
|---------------|----------|--------------------------------------|
| add_target() | targets | ActionTarget<sup>1</sup> |
| add_targets() | targets | **list** of ActionTarget<sup>1</sup> |
\[1\] `from django_actionable_messages.message_cards.elements import ...`
\[2\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="messagecard-httppost">HttpPOST <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#httppost-action">docs</a></h4>
| Argument name | Function | Property | Type |
|--------------------|-------------------------|-----------------|-------------------------------------------------------|
| **name** | - | name | *str*, trans<sup>2</sup> |
| **target** | - | targets | *str* |
| headers | add_headers() | headers | Header<sup>1</sup> or *list* of Header(s)<sup>1</sup> |
| body | set_body() | body | *str* |
| body_content_type | set_body_content_type() | bodyContentType | *str* |
| lang_code | - | - | *str* |
\[1\] `from django_actionable_messages.message_cards.elements import ...`
\[2\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="messagecard-invokeaddincommand">InvokeAddInCommand <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#invokeaddincommand-action">docs</a></h4>
| Argument name | Function | Property | Type |
|------------------------|----------------------------------|-----------------------|--------------------------|
| **name** | - | name | *str*, trans<sup>1</sup> |
| **add_in_id** | set_add_in_id() | addInId | *str* |
| **desktop_command_id** | set_desktop_command_id() | desktopCommandId | *str* |
| initialization_context | set_set_initialization_context() | initializationContext | *dict* |
| lang_code | - | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="messagecard-actioncard">ActionCard <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#actioncard-action">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|---------------|----------|---------------------------------------|
| **name** | - | name | *str*, trans<sup>1</sup> |
| inputs | add_inputs() | inputs | input or *list* of inputs(see docs) |
| actions | add_actions() | actions | action or *list* of actions(see docs) |
| lang_code | - | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h3 id="messagecard-sections">Sections</h3>
**src**: `from django_actionable_messages.message_card.sections import ...`
<h4 id="messagecard-section">Section <a href="https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#section-fields">docs</a></h4>
| Argument name | Function | Property | Type |
|-------------------|-------------------------|------------------|---------------------------------------------------|
| start_group | set_start_group() | startGroup | *bool* |
| title | set_title() | title | *str*, trans<sup>2</sup> |
| text | set_text() | text | *str*, trans<sup>2</sup> |
| activity_image | set_activity_image() | activityImage | *str* |
| activity_title | set_activity_title() | activityTitle | *str*, trans<sup>2</sup> |
| activity_subtitle | set_activity_subtitle() | activitySubtitle | *str*, trans<sup>2</sup> |
| activity_text | set_activity_text() | activityText | *str*, trans<sup>2</sup> |
| hero_image | set_hero_image() | heroImage | HeroImage<sup>2</sup> |
| facts | add_facts() | facts | Fact(s)<sup>1</sup> or *list* of Fact<sup>1</sup> |
| actions | add_potential_actions() | potentialAction | action or *list* of actions(see docs) |
| lang_code | - | - | *str* |
Other functions:
| Name | Property | Type |
|--------------------------------------------|--------------------------------------------------------------|-------|
| set_activity(image, title, subtitle, text) | activityImage, activityTitle, activitySubtitle, activityText | *str* |
\[1\] `from django_actionable_messages.message_cards.elements import ...`
\[2\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h3 id="messagecard-cards">Cards</h3>
**src**: `from django_actionable_messages.message_card.cards import ...`
<h4 id="messagecard-messagecard">MessageCard</h4>
| Argument name | Function | Property | Type |
|----------------------|--------------------------|------------------|-------------------------------------------------------|
| title | set_title() | title | *str*, trans<sup>2</sup> |
| text | set_text() | text | *str*, trans<sup>2</sup> |
| originator | set_originator() | originator | *str* |
| summary | set_summary() | summary | *str*, trans<sup>2</sup> |
| theme_color | set_theme_color() | themeColor | *str* |
| correlation_id | set_correlation_id() | correlationId | *str* |
| auto_correlation_id* | - | correlationId | *bool* (default: *True*) |
| expected_actors | set_expected_actors() | expectedActors | *list* of emails |
| hide_original_body | set_hide_original_body() | hideOriginalBody | *bool* |
| sections | add_sections() | sections | Section<sup>1</sup> or *list* of Sections<sup>1</sup> |
| actions | add_actions() | potentialAction | action<sup>3</sup> or *list* of actions<sup>3</sup> |
| lang_code | - | - | *str* |
Other functions:
| Name | Property | Type |
|------------------------|-----------------|-------------------------|
| add_expected_actors() | expectedActors | *str* or list of *str* |
\[1\] `from django_actionable_messages.message_cards.sections import ...`
\[2\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
\[3\] `from django_actionable_messages.message_cards.actions import ...`
<h2 id="herocard">HeroCard</h2>
<h3 id="herocard-elements">Elements</h3>
<h4 id="herocard-openurl">OpenUrl</h4>
| Argument name | Function | Property | Type |
|---------------|----------|----------|--------------------------|
| **title** | - | title | *str*, trans<sup>1</sup> |
| **url** | - | value | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h4 id="herocard-Image">Image</h4>
| Argument name | Function | Property | Type |
|---------------|-----------|----------|---------------------------|
| **url** | - | value | *str* |
| alt | set_alt() | alt | *str*, trans<sup>1</sup> |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
<h3 id="herocard-cards">Cards</h3>
**src**: `from django_actionable_messages.msteams_cards.cards import HeroCard`
<h4 id="herocard-herocard">HeroCard <a href="https://docs.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-reference#hero-card">docs</a></h4>
| Argument name | Function | Property | Type |
|---------------|----------------|----------|-------------------------------------------------------|
| title | set_title() | title | *str*, trans<sup>1</sup> |
| subtitle | set_subtitle() | subtitle | *str*, trans<sup>1</sup> |
| text | set_text() | text | *str*, trans<sup>1</sup> |
| images | add_images() | images | Image<sup>2</sup> or *list* of Images<sup>2</sup> |
| buttons | add_buttons() | buttons | OpenUrl<sup>3</sup> or *list* of OpenUrls<sup>3</sup> |
| lang_code | - | - | *str* |
\[1\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`
\[2\] `from django_actionable_messages.msteams_cards.elements import Image`
\[3\] `from django_actionable_messages.msteams_cards.elements import OpenUrl`
<h2 id="thumbnailcard">ThumbnailCard</h2>
<h3 id="thumbnailcard-elements">Elements</h3>
see HeroCard [Elements](#herocard-elements) section
<h3 id="thumbnailcard-cards">Cards</h3>
**src**: `from django_actionable_messages.msteams_cards.cards import ThumbnailCard`
<h4 id="thumbnailcard-thumbnailcard">ThumbnailCard <a href="https://docs.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-reference#thumbnail-card">docs</a></h4>
see HeroCard [HeroCard](#herocard-herocard) section
Raw data
{
"_id": null,
"home_page": "https://github.com/utsurius/django-actionable-messages",
"name": "django-actionable-messages",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "msteams,AdaptiveCard,MessageCard,HeroCard,ThumbnailCard,actionable messages",
"author": "utsurius",
"author_email": "przemek@upsecure.pl",
"download_url": "https://files.pythonhosted.org/packages/22/89/0e8044bfc0378c969489beb6275a52075f5c40f9938ab30a91ced7fa237c/django_actionable_messages-0.2.7.tar.gz",
"platform": null,
"description": "<h1 align=\"center\">\n <a href=\"https://github.com/utsurius/django-actionable-messages\">\n Actionable messages\n </a>\n</h1>\n\n<p align=\"center\">\n <a href=\"https://github.com/utsurius/django-actionable-messages/releases\">\n <img src=\"https://img.shields.io/github/release/utsurius/django-actionable-messages\" alt=\"github\"/>\n </a>\n <a href=\"https://pypi.python.org/pypi/django-actionable-messages\">\n <img src=\"https://badge.fury.io/py/django-actionable-messages.svg\" alt=\"pypi\"/>\n </a>\n <a href=\"https://github.com/utsurius/django-actionable-messages\">\n <img src=\"https://img.shields.io/pypi/pyversions/django_actionable_messages.svg\" alt=\"python\"/>\n </a>\n <a href=\"https://github.com/utsurius/django-actionable-messages\">\n <img src=\"https://img.shields.io/pypi/djversions/django_actionable_messages.svg\" alt=\"django\"/>\n </a>\n <a href=\"https://github.com/utsurius/django-actionable-messages/blob/master/LICENSE\">\n <img src=\"https://img.shields.io/github/license/utsurius/django-actionable-messages\" alt=\"license\"/>\n </a>\n</p>\n\n1. [Base informations](#base-informations)\n2. [Installation](#installation)\n3. [Requirements](#requirements)\n4. [Usage](#usage)\n5. [AdaptiveCard](#adaptivecard)\n * [Elements](#adaptivecard-elements)\n * [TextBlock](#adaptivecard-textblock)\n * [Image](#adaptivecard-image)\n * [MediaSource](#adaptivecard-mediasource)\n * [CaptionSource](#adaptivecard-captionsource)\n * [Media](#adaptivecard-media)\n * [TextRun](#adaptivecard-textrun)\n * [RichTextBlock](#adaptivecard-richtextblock)\n * [Inputs](#adaptivecard-inputs)\n * [TextInput](#adaptivecard-textinput)\n * [NumberInput](#adaptivecard-numberinput)\n * [DateInput](#adaptivecard-dateinput)\n * [TimeInput](#adaptivecard-timeinput)\n * [ToggleInput](#adaptivecard-toggleinput)\n * [InputChoice](#adaptivecard-inputchoice)\n * [ChoiceSetInput](#adaptivecard-choicesetinput)\n * [DataQuery](#adaptivecard-dataquery)\n * [Actions](#adaptivecard-actions)\n * [OpenUrl](#adaptivecard-openurl)\n * [Submit](#adaptivecard-submit)\n * [ShowCard](#adaptivecard-showcard)\n * [TargetElement](#adaptivecard-targetelement)\n * [ToggleVisibility](#adaptivecard-togglevisibility)\n * [Execute](#adaptivecard-execute)\n * [Containers](#adaptivecard-containers)\n * [ActionSet](#adaptivecard-actionset)\n * [Container](#adaptivecard-container)\n * [Column](#adaptivecard-column)\n * [ColumnSet](#adaptivecard-columnset)\n * [Fact](#adaptivecard-fact)\n * [FactSet](#adaptivecard-factset)\n * [ImageSet](#adaptivecard-imageset)\n * [TableCell](#adaptivecard-tablecell)\n * [TableRow](#adaptivecard-tablerow)\n * [Table](#adaptivecard-table)\n * [Types](#adaptivecard-types)\n * [BackgroundImage](#adaptivecard-backgroundimage)\n * [Refresh](#adaptivecard-refresh)\n * [TokenExchangeResource](#adaptivecard-tokenexchangeresource)\n * [AuthCardButton](#adaptivecard-authcardbutton)\n * [Authentication](#adaptivecard-authentication)\n * [Metadata](#adaptivecard-metadata)\n * [Cards](#adaptivecard-cards)\n * [AdaptiveCard](#adaptivecard-adaptivecard)\n6. [MessageCard](#messagecard)\n * [Elements](#messagecard-elements)\n * [Header](#messagecard-header)\n * [Fact](#messagecard-fact)\n * [HeroImage](#messagecard-heroimage)\n * [InputChoice](#messagecard-inputchoice)\n * [ActionTarget](#messagecard-actiontarget)\n * [Inputs](#messagecard-inputs)\n * [TextInput](#messagecard-textinput)\n * [DateInput](#messagecard-dateinput)\n * [MultiChoiceInput](#messagecard-multichoiceinput)\n * [Actions](#messagecard-actions)\n * [OpenUri](#messagecard-openuri)\n * [HttpPOST](#messagecard-httppost)\n * [InvokeAddInCommand](#messagecard-invokeaddincommand)\n * [ActionCard](#messagecard-actioncard)\n * [Sections](#messagecard-sections)\n * [Section](#messagecard-section)\n * [Cards](#messagecard-cards)\n * [MessageCard](#messagecard-messagecard)\n7. [HeroCard](#herocard)\n * [Elements](#herocard-elements)\n * [OpenUrl](#herocard-openurl)\n * [Image](#herocard-image)\n * [Cards](#herocard-cards)\n * [HeroCard](#herocard-herocard)\n8. [ThumbnailCard](#thumbnailcard)\n * [Elements](#thumbnailcard-elements)\n * [Cards](#thumbnailcard-cards)\n * [ThumbnailCard](#thumbnailcard-thumbnailcard)\n\n\n<h2 id=\"base-informations\">Base informations</h2>\n\n[Playground V2](https://messagecardplayground.azurewebsites.net/)\n\n[Send an actionable message via email in Office 365](https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-email)\n\n[Outlook version requirements for actionable messages](https://docs.microsoft.com/en-us/outlook/actionable-messages/#outlook-version-requirements-for-actionable-messages)\n\n\n<h2 id=\"installation\">Installation</h2>\n\n`pip install git+https://github.com/utsurius/django-actionable-messages`\n\n`pip install django-actionable-messages`\n\nAdd \"django_actionable_messages\" to INSTALLED_APPS:\n\n```python\nINSTALLED_APPS = [\n ...\n \"django_actionable_messages\",\n]\n```\n\nSETTINGS\n\n```python\nACTIONABLE_MESSAGES = {\n \"JSON_ENCODER\": None,\n \"LANGUAGE_CODE\": \"en\"\n}\n```\n\n\"JSON_ENCODER\" - doted path to custom json encoder (default: BaseEncoder).\n\n\"LANGUAGE_CODE\" - language code used for translations (defaults to project settings.LANGUAGE_CODE). Each element of adaptive_card/message_card can set individual \"lang_code\".\n\n\n<h2 id=\"requirements\">Requirements</h2>\n\n| Name | Version |\n|---------|------------|\n| python | 3.6 - 3.10 |\n| django | 3.2 - 4.2 |\n\n\n<h2 id=\"usage\">Usage</h2>\n\n**`examples/message_card/github.py`**\n\n```python\nfrom django_actionable_messages.message_card.actions import OpenUri, HttpPOST, ActionCard\nfrom django_actionable_messages.message_card.cards import MessageCard\nfrom django_actionable_messages.message_card.elements import Fact, ActionTarget\nfrom django_actionable_messages.message_card.inputs import TextInput\nfrom django_actionable_messages.message_card.sections import Section\nfrom django_actionable_messages.message_card.utils import OSType\n\n\nissue_opened = MessageCard(title=\"Issue opened: \\\"Push notifications not working\\\"\", summary=\"Issue 176715375\",\n theme_color=\"0078D7\")\nissue_opened.add_sections(\n Section(\n activity_title=\"Miguel Garcie\",\n activity_subtitle=\"9/13/2016, 11:46am\",\n activity_image=\"https://connectorsdemo.azurewebsites.net/images/MSC12_Oscar_002.jpg\",\n text=\"There is a problem with Push notifications, they don't seem to be picked up by the connector.\",\n facts=[\n Fact(\"Repository:\", \"mgarcia\\\\test\"),\n Fact(\"Issue #:\", \"176715375\")\n ]\n )\n)\nissue_opened.add_actions([\n ActionCard(\n name=\"Add a comment\",\n inputs=[\n TextInput(input_id=\"comment\", title=\"Enter a comment\", is_multiline=True)\n ],\n actions=[\n HttpPOST(\"OK\", target=\"http://...\")\n ]\n ),\n HttpPOST(\"Close\", target=\"http://...\"),\n OpenUri(name=\"View in Github\", targets=[\n ActionTarget(OSType.DEFAULT, \"http://...\")\n ])\n])\n```\n\n**`examples/adaptive_card/calendar_reminder.py`**\n\n```python\nfrom django_actionable_messages.adaptive_card.actions import Submit\nfrom django_actionable_messages.adaptive_card.cards import AdaptiveCard\nfrom django_actionable_messages.adaptive_card.elements import TextBlock\nfrom django_actionable_messages.adaptive_card.inputs import InputChoice, ChoiceSetInput\nfrom django_actionable_messages.adaptive_card.utils import SCHEMA, FontSize, FontWeight, SpacingStyle, ChoiceInputStyle\n\n\ncalendar_reminder = AdaptiveCard(version=\"1.0\", schema=SCHEMA)\ncalendar_reminder.set_speak(\"Your meeting about \\\"Adaptive Card design session\\\" is starting at 12:30pm\"\n \"Do you want to snooze or do you want to send a late notification to the attendees?\")\ncalendar_reminder.add_elements(TextBlock(\"Adaptive Card design session\", size=FontSize.LARGE, weight=FontWeight.BOLDER))\ncalendar_reminder.add_elements([\n TextBlock(\"Conf Room 112/3377 (10)\", is_subtle=True),\n TextBlock(\"12:30 PM - 1:30 PM\", is_subtle=True, spacing=SpacingStyle.NONE),\n TextBlock(\"Snooze for\")\n])\ncalendar_reminder.add_elements(ChoiceSetInput(\n item_id=\"snooze\", style=ChoiceInputStyle.COMPACT, value=\"5\", choices=[\n InputChoice(\"5 minutes\", \"5\"),\n InputChoice(\"15 minutes\", \"15\"),\n InputChoice(\"30 minutes\", \"30\")\n ]\n))\ncalendar_reminder.add_actions([\n Submit(title=\"Snooze\", data={\n \"x\": \"snooze\"\n }),\n Submit(title=\"I'll be late\", data={\n \"x\": \"late\"\n })\n])\n```\n\nFor more view **`examples`** folder\n\nTo get dictionary, json or html payload from card use:\n\n| Property | Type |\n|----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------|\n| .payload | *dict* (raw data) |\n| .json_payload | json string |\n| .html_payload | html string - can be used to send card via email ([docs](https://docs.microsoft.com/en-gb/outlook/actionable-messages/send-via-email)) |\n| .signed_html_payload | html string<sup>1</sup> - can be used to send card via email ([docs](https://docs.microsoft.com/en-us/outlook/actionable-messages/security-requirements)) |\n\n\\[1\\] you must overwrite **get_signed_payload()** in AdaptiveCard/MessageCard to sign the payload!\n\n\nProblem: **'... is not JSON serializable'** - probably invalid argument type was used. Default json serializer can handle translated strings and everything that `DjangoJSONEncoder` can handle. \n\nSolution: [Better Python Object Serialization](https://hynek.me/articles/serialization/). Remember to ALWAYS inherit from EncoderMixin or BaseEncoder (`django_actionable_messages.encoders import EncoderMixin, BaseEncoder`)\n\nYou can set JSON_ENCODER (globally) in SETTINGS(ACTIONABLE_MESSAGES) or set it by card(json_encoder):\n\n```python\nfrom django_actionable_messages.adaptive_card.cards import AdaptiveCard\n\n\nclass MyAdaptiveCard(AdaptiveCard):\n json_encoder = \"path.to.my.encoder\"\n```\nor\n```python\nfrom django_actionable_messages.adaptive_card.cards import AdaptiveCard\n\n\nclass MyAdaptiveCard(AdaptiveCard):\n json_encoder = MyJSONEncoder\n```\n\nTo customize json dump you can overwrite `get_json_dump_kwargs()` in card (AdaptiveCard/MessageCard)\n\n```python\nfrom django_actionable_messages.adaptive_card.cards import AdaptiveCard\n\n\nclass MyAdaptiveCard(AdaptiveCard):\n def get_json_dump_kwargs(self):\n return {\n 'ensure_ascii': False,\n 'indent': 2\n }\n```\n\nSend MessageCard to msteams using webhooks and `requests` library:\n```python\nimport requests\n\n\nrequests.post(\n webhook_url,\n data=card.json_payload,\n headers={\n \"Content-Type\": \"application/json; charset=utf-8\"\n }\n)\n``` \n\nTo get/add `webhook_url` see here: [Get the Microsoft Teams webhook URL](https://learning.getpostman.com/docs/postman_pro/integrations/microsoft_teams/#get-the-microsoft-teams-webhook-url), [Create and add an outgoing webhook in Teams](https://support.office.com/en-ie/article/create-and-add-an-outgoing-webhook-in-teams-8e1a1648-982f-4511-b342-6d8492437207)\n\n<h2 id=\"adaptivecard\">AdaptiveCard</h2>\n\nSupported versions: **1.0 - 1.6**\n\n[Schema Explorer](https://adaptivecards.io/explorer/)\n\n\n<h3 id=\"adaptivecard-elements\">Elements</h3>\n\n**src**: `from django_actionable_messages.adaptive_card.elements import ...`\n\n<h4 id=\"adaptivecard-textblock\">TextBlock <a href=\"https://adaptivecards.io/explorer/TextBlock.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------------|----------------------------|---------------------|--------------------------------------------------------|\n| **text** | - | text | *str, trans<sup>3</sup>* |\n| color | set_color() | color | Color<sup>1</sup> |\n| font_type | set_font_type() | fontType | FontType<sup>1</sup> |\n| horizontal_alignment | set_horizontal_alignment() | horizontalAlignment | HorizontalAlignment<sup>1</sup> |\n| is_subtle | set_is_subtle() | isSubtle | *bool* |\n| max_lines | set_max_lines() | maxLines | *int* |\n| size | set_size() | size | FontSize<sup>1</sup> |\n| weight | set_weight() | weight | FontWeight<sup>1</sup> |\n| wrap | set_wrap() | wrap | *bool* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>1</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"adaptivecard-image\">Image <a href=\"https://adaptivecards.io/explorer/Image.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------------|----------------------------|---------------------|--------------------------------------------------------|\n| **url** | set_url() | url | *str* |\n| alternate_text | set_alternate_text() | altText | *str* |\n| background_color | set_background_color() | backgroundColor | *str* |\n| height | set_height() | height | str or BlockElementHeight<sup>1</sup> |\n| horizontal_alignment | set_horizontal_alignment() | horizontalAlignment | HorizontalAlignment<sup>1</sup> |\n| select_action | set_select_action() | selectAction | see docs |\n| size | set_size() | size | ImageSize<sup>1</sup> |\n| style | set_style() | style | ImageStyle<sup>1</sup> |\n| width | set_width() | width | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>1</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n<h4 id=\"adaptivecard-mediasource\">MediaSource <a href=\"https://adaptivecards.io/explorer/MediaSource.html\">docs</a></h4>\n\n| Argument name | Property | Type |\n|---------------|----------|--------|\n| **mime_type** | mimeType | *str* |\n| **url** | url | *str* |\n\n<h4 id=\"adaptivecard-captionsource\">CaptionSource <a href=\"https://adaptivecards.io/explorer/CaptionSource.html\">docs</a></h4>\n\n| Argument name | Property | Type |\n|---------------|----------|--------|\n| **mime_type** | mimeType | *str* |\n| **url** | url | *str* |\n| **label** | label | *str* |\n\n<h4 id=\"adaptivecard-media\">Media <a href=\"https://adaptivecards.io/explorer/Media.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------|----------------------|-----------|--------------------------------------------------------|\n| **sources** | - | sources | *list* of MediaSource(s)<sup>1</sup> |\n| poster | set_poster() | poster | *str* |\n| alternate_text | set_alternate_text() | altText | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>1</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>2</sup> |\n| lang_code | - | - | *str* |\n\nOther functions\n\n| Name | Property | Type |\n|-----------------------|----------------|---------------------------|\n| add_sources() | sources | MediaSource<sup>1</sup> |\n| add_source() | sources | MediaSource<sup>1</sup> |\n| set_caption_sources() | captionSources | CaptionSource<sup>2</sup> |\n| add_caption_sources() | captionSources | CaptionSource<sup>2</sup> |\n| add_caption_source() | captionSources | CaptionSource<sup>2</sup> |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n<h4 id=\"adaptivecard-textrun\">TextRun <a href=\"https://adaptivecards.io/explorer/TextRun.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------|----------------------|---------------|---------------------------|\n| **text** | - | text | *str*, trans <sup>2</sup> |\n| color | set_color() | color | Color<sup>1</sup> |\n| font_type | set_font_type() | fontType | FontType<sup>1</sup> |\n| highlight | set_highlight() | highlight | *bool* |\n| is_subtle | set_is_subtle() | isSubtle | *bool* |\n| italic | set_italic() | italic | *bool* |\n| select_action | set_select_action() | selectAction | see docs |\n| size | set_size() | fontSize | FontSize<sup>1</sup> |\n| strike_through | set_strike_through() | strikethrough | *bool* |\n| weight | set_weight() | fontWeight | FontWeight<sup>1</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"adaptivecard-richtextblock\">RichTextBlock <a href=\"https://adaptivecards.io/explorer/RichTextBlock.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------------|----------------------------|---------------------|--------------------------------------------------------|\n| **inlines** | - | inlines | *str*, TextRun<sup>1</sup>, trans<sup>4</sup> |\n| horizontal_alignment | set_horizontal_alignment() | horizontalAlignment | HorizontalAlignment<sup>2</sup> |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>1</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>2</sup> |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n\\[4\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h3 id=\"adaptivecard-inputs\">Inputs</h3>\n\n**src**: `from django_actionable_messages.adaptive_card.inputs import ...`\n\n<h4 id=\"adaptivecard-textinput\">TextInput <a href=\"https://adaptivecards.io/explorer/Input.Text.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|---------------------|--------------|---------------------------------------------------------|\n| is_multiline | set_is_multiline() | isMultiline | *bool* |\n| max_length | set_max_length() | maxLength | *int* |\n| placeholder | set_placeholder() | placeholder | *str*, trans<sup>3</sup> |\n| style | set_style() | style | TextInputStyle<sup>1</sup> |\n| inline_action | set_inline_action() | inlineAction | see docs |\n| value | set_value() | value | *str*, trans<sup>3</sup> |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>1</sup> |\n| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n\\[4\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n<h4 id=\"adaptivecard-numberinput\">NumberInput <a href=\"https://adaptivecards.io/explorer/Input.Number.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|-------------------|-------------|---------------------------------------------------------|\n| max_value | set_max_value() | maxValue | *int* |\n| min_value | set_min_value() | minValue | *int* |\n| placeholder | set_placeholder() | placeholder | *str*, trans<sup>3</sup> |\n| value | set_value() | value | *int* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>1</sup> |\n| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n\\[4\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n<h4 id=\"adaptivecard-dateinput\">DateInput <a href=\"https://adaptivecards.io/explorer/Input.Date.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|-------------------|-------------|---------------------------------------------------------|\n| max_value | set_max_value() | maxValue | *str* |\n| min_value | set_min_value() | minValue | *str* |\n| placeholder | set_placeholder() | placeholder | *str*, trans<sup>3</sup> |\n| value | set_value() | value | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>1</sup> |\n| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n\\[4\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n<h4 id=\"adaptivecard-timeinput\">TimeInput <a href=\"https://adaptivecards.io/explorer/Input.Time.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|-------------------|-------------|---------------------------------------------------------|\n| max_value | set_max_value() | maxValue | *str* |\n| min_value | set_min_value() | minValue | *str* |\n| placeholder | set_placeholder() | placeholder | *str*, trans<sup>3</sup> |\n| value | set_value() | value | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>1</sup> |\n| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n\\[4\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n<h4 id=\"adaptivecard-toggleinput\">ToggleInput <a href=\"https://adaptivecards.io/explorer/Input.Toggle.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|------------------|-----------|---------------------------------------------------------|\n| **title** | - | title | *str*, trans<sup>3</sup> |\n| value | set_value() | value | *str* |\n| value_off | set_value_off() | valueOff | *str* |\n| value_on | set_value_on() | valueOn | *str* |\n| wrap | set_wrap() | wrap | *bool* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>1</sup> |\n| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n\\[4\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n<h4 id=\"adaptivecard-inputchoice\">InputChoice <a href=\"https://adaptivecards.io/explorer/Input.Choice.html\">docs</a></h4>\n\n| Argument name | Property | Type |\n|---------------|----------|--------------------------|\n| **title** | title | *str*, trans<sup>1</sup> |\n| **value** | value | *str*, *int* |\n| lang_code | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"adaptivecard-choicesetinput\">ChoiceSetInput <a href=\"https://adaptivecards.io/explorer/Input.ChoiceSet.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|-----------------|-----------------------|---------------|---------------------------------------------------------|\n| **choices** | - | choices | *list* of InputChoice(s)<sup>1</sup> |\n| is_multi_select | set_is_multi_select() | isMultiSelect | *bool* |\n| style | set_style() | style | ChoiceInputStyle<sup>2</sup> |\n| value | set_value() | value | *str* |\n| wrap | set_wrap() | wrap | *bool* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>2</sup> |\n| label | set_label() | label | *str*, TextBlock<sup>4</sup>, RichTextBlock<sup>4</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.inputs import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n\\[4\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n<h4 id=\"adaptivecard-dataquery\">DataQuery <a href=\"https://adaptivecards.io/explorer/Data.Query.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|---------------|----------|-------|\n| **dataset** | set_dataset() | dataset | *str* |\n| count | set_count() | count | *int* |\n| skip | set_skip() | skip | *int* |\n\n\n<h3 id=\"adaptivecard-actions\">Actions</h3>\n\n**src**: `from django_actionable_messages.adaptive_card.actions import ...`\n\n<h4 id=\"adaptivecard-openurl\">OpenUrl <a href=\"https://adaptivecards.io/explorer/Action.OpenUrl.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|------------------|-----------|------------------------------------------------------------------------------------|\n| **url** | - | url | *str* |\n| title | set_title() | title | *str*, trans<sup>3</sup> |\n| icon_url | set_icon_url() | iconUrl | *str* |\n| style | set_style() | style | ActionStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or action<sup>1</sup>(except TargetElement<sup>1</sup>) |\n| tooltip | set_tooltip() | tooltip | *str* |\n| is_enabled | set_is_enabled() | isEnabled | *bool* |\n| mode | set_mode() | mode | ActionMode<sup>2</sup> |\n| requires | set_requires() | requires | *dict* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"adaptivecard-submit\">Submit <a href=\"https://adaptivecards.io/explorer/Action.Submit.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|------------------|-----------|------------------------------------------------------------------------------------|\n| data | set_data() | data | *str*, *dict* |\n| title | set_title() | title | *str*, trans<sup>3</sup> |\n| icon_url | set_icon_url() | iconUrl | *str* |\n| style | set_style() | style | ActionStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or action<sup>1</sup>(except TargetElement<sup>1</sup>) |\n| tooltip | set_tooltip() | tooltip | *str* |\n| is_enabled | set_is_enabled() | isEnabled | *bool* |\n| mode | set_mode() | mode | ActionMode<sup>2</sup> |\n| requires | set_requires() | requires | *dict* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"adaptivecard-showcard\">ShowCard <a href=\"https://adaptivecards.io/explorer/Action.ShowCard.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|------------------|-----------|------------------------------------------------------------------------------------|\n| card | set_card() | card | AdaptiveCard<sup>2</sup> |\n| title | set_title() | title | *str*, trans<sup>4</sup> |\n| icon_url | set_icon_url() | iconUrl | *str* |\n| style | set_style() | style | ActionStyle<sup>3</sup> |\n| item_id | set_id() | id | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>3</sup> or action<sup>1</sup>(except TargetElement<sup>1</sup>) |\n| tooltip | set_tooltip() | tooltip | *str* |\n| is_enabled | set_is_enabled() | isEnabled | *bool* |\n| mode | set_mode() | mode | ActionMode<sup>3</sup> |\n| requires | set_requires() | requires | *dict* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.cards import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[4\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"adaptivecard-targetelement\">TargetElement <a href=\"https://adaptivecards.io/explorer/TargetElement.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|-----------------|------------------|------------|--------|\n| **element_id** | - | elementId | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n\n<h4 id=\"adaptivecard-togglevisibility\">ToggleVisibility <a href=\"https://adaptivecards.io/explorer/Action.ToggleVisibility.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|-----------------|-----------------------|----------------|------------------------------------------------------------------------------------|\n| target_elements | set_target_elements() | targetElements | *list* of TargetElement<sup>1</sup>/*str*/trans<sup>3</sup> (can be mixed) |\n| title | set_title() | title | *str* |\n| icon_url | set_icon_url() | iconUrl | *str* |\n| style | set_style() | style | ActionStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or action<sup>1</sup>(except TargetElement<sup>1</sup>) |\n| tooltip | set_tooltip() | tooltip | *str* |\n| is_enabled | set_is_enabled() | isEnabled | *bool* |\n| mode | set_mode() | mode | ActionMode<sup>2</sup> |\n| requires | set_requires() | requires | *dict* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"adaptivecard-execute\">Execute <a href=\"https://adaptivecards.io/explorer/Action.Execute.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|-------------------|-------------------------|------------------|------------------------------------------------------------------------------------|\n| verb | set_verb() | verb | *str* |\n| data | set_data() | data | *str*, object |\n| associated_inputs | set_associated_inputs() | associatedInputs | AssociatedInputs<sup>1</sup> |\n| title | set_title() | title | *str* |\n| icon_url | set_icon_url() | iconUrl | *str* |\n| style | set_style() | style | ActionStyle<sup>1</sup> |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or action<sup>2</sup>(except TargetElement<sup>2</sup>) |\n| tooltip | set_tooltip() | tooltip | *str* |\n| is_enabled | set_is_enabled() | isEnabled | *bool* |\n| mode | set_mode() | mode | ActionMode<sup>1</sup> |\n| requires | set_requires() | requires | *dict* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_card.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_card.actions import ...`\n\n<h3 id=\"adaptivecard-containers\">Containers</h3>\n\n**src**: `from django_actionable_messages.adaptive_card.containers import ...`\n\n<h4 id=\"adaptivecard-actionset\">ActionSet <a href=\"https://adaptivecards.io/explorer/ActionSet.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|------------------|-----------|--------------------------------------------------------|\n| actions | add_actions() | actions | action or *list* of actions(see docs) |\n| fallback | set_fallback() | fallback | FallbackOption<sup>1</sup> or card element<sup>2</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>1</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>1</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n<h4 id=\"adaptivecard-container\">Container <a href=\"https://adaptivecards.io/explorer/Container.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------------------|----------------------------------|--------------------------|--------------------------------------------------------|\n| items | add_items() | items | item or *list* of items(see docs) |\n| select_action | set_select_action() | selectAction | any action(see docs) |\n| style | set_style() | style | Style<sup>2</sup> |\n| vertical_content_alignment | set_vertical_content_alignment() | verticalContentAlignment | VerticalAlignment<sup>2</sup> |\n| bleed | set_bleed() | bleed | *bool* |\n| background_image | set_background_image() | backgroundImage | BackgroundImage<sup>1</sup> |\n| min_height | set_min_height() | minHeight | *str* |\n| rtl | set_rtl() | rtl | *bool* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>2</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.types import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n<h4 id=\"adaptivecard-column\">Column <a href=\"https://adaptivecards.io/explorer/Column.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------------------|----------------------------------|--------------------------|--------------------------------------------------|\n| items | add_items() | items | item or *list* of items(see docs) |\n| background_image | set_background_image() | backgroundImage | *str*, BackgroundImage<sup>2</sup> |\n| bleed | set_bleed() | bleed | *bool* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>3</sup> or Column<sup>1</sup> |\n| min_height | set_min_height() | minHeight | *str* |\n| rtl | set_rtl() | rtl | *bool* |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>3</sup> |\n| select_action | set_select_action() | selectAction | see docs |\n| style | set_style() | style | Style<sup>3</sup> |\n| vertical_content_alignment | set_vertical_content_alignment() | verticalContentAlignment | VerticalAlignment<sup>3</sup> |\n| width | set_width() | width | *str*, *int*, Width<sup>3</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.containers import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.types import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n<h4 id=\"adaptivecard-columnset\">ColumnSet <a href=\"https://adaptivecards.io/explorer/ColumnSet.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|---------------------|--------------|--------------------------------------------------------|\n| **columns** | add_columns() | columns | Column<sup>1</sup> or *list* of Column(s)<sup>1</sup> |\n| select_action | set_select_action() | selectAction | see docs |\n| style | set_style() | style | Style<sup>2</sup> |\n| bleed | set_bleed() | bleed | *bool* |\n| min_height | set_min_height() | minHeight | *str* |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>2</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.containers import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n<h4 id=\"adaptivecard-fact\">Fact <a href=\"https://adaptivecards.io/explorer/Fact.html\">docs</a></h4>\n\n| Argument name | Property | Type |\n|---------------|----------|--------------------------|\n| **title** | title | *str*, trans<sup>1</sup> |\n| **value** | value | *str*, trans<sup>1</sup> |\n| lang_code | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"adaptivecard-factset\">FactSet <a href=\"https://adaptivecards.io/explorer/FactSet.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|------------------|-----------|--------------------------------------------------------|\n| facts | add_facts() | facts | Fact<sup>1</sup> or *list* of Fact(s)<sup>1</sup> |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>2</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.containers import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n<h4 id=\"adaptivecard-imageset\">ImageSet <a href=\"https://adaptivecards.io/explorer/ImageSet.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|------------------|-----------|--------------------------------------------------------|\n| images | add_images() | images | Image<sup>1</sup> or *list* of Image(s)<sup>1</sup> |\n| image_size | set_image_size() | imageSize | ImageSize<sup>2</sup> |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| height | set_height() | height | BlockElementHeight<sup>2</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n| Type | All except | Import |\n|--------------|----------------------|------------------------------------------------------------------------|\n| `containers` | Fact, Column | `from django_actionable_messages.adaptive_cards.containers import ...` |\n| `elements` | MediaSource, TextRun | `from django_actionable_messages.adaptive_cards.elements import ...` |\n| `inputs` | InputChoice | `from django_actionable_messages.adaptive_cards.inputs import ...` |\n\n<h4 id=\"adaptivecard-tablecell\">TableCell <a href=\"https://adaptivecards.io/explorer/TableCell.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------------------|----------------------------------|--------------------------|----------------------------------------------------------------------------------------------|\n| select_action | set_select_action() | selectAction | Execute<sup>1</sup>, OpenUrl<sup>1</sup>, Submit<sup>1</sup> or ToggleVisibility<sup>1</sup> |\n| style | set_style() | style | Style<sup>2</sup> |\n| vertical_content_alignment | set_vertical_content_alignment() | verticalContentAlignment | VerticalAlignment<sup>2</sup> |\n| bleed | set_bleed() | bleed | *bool* |\n| background_image | set_background_image() | backgroundImage | BackgroundImage<sup>3</sup> or *str* |\n| min_height | set_min_height() | minHeight | *str* |\n| rtl | set_rtl() | rtl | *bool* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.types import ...`\n\n<h4 id=\"adaptivecard-tablerow\">TableRow</h4>\n\n| Argument name | Function | Property | Type |\n|---------------|-------------|----------|-----------------------|\n| cells | add_cells() | cells | TableCell<sup>1</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.containers import ...`\n\n<h4 id=\"adaptivecard-table\">Table <a href=\"https://adaptivecards.io/explorer/Table.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|-----------------------------------|-----------------------------------------|--------------------------------|--------------------------------------------------------|\n| columns | add_columns() | columns | *dict* |\n| rows | add_rows() | rows | TableRow<sup>1</sup> or *list* of TableRow<sup>1</sup> |\n| horizontal_cell_content_alignment | set_horizontal_cell_content_alignment() | horizontalCellContentAlignment | HorizontalAlignment<sup>2</sup> |\n| vertical_cell_content_alignment | set_vertical_cell_content_alignment() | verticalCellContentAlignment | VerticalAlignment<sup>2</sup> |\n| first_row_as_header | set_first_row_as_header() | firstRowAsHeader | *bool* |\n| show_grid_lines | set_show_grid_lines() | showGridLines | *bool* |\n| grid_style | set_grid_style() | style | Style<sup>2</sup> |\n| height | set_height() | height | BlockElementHeight<sup>2</sup> |\n| fallback | set_fallback() | fallback | FallbackOption<sup>2</sup> or card element<sup>3</sup> |\n| separator | set_separator() | separator | *bool* |\n| spacing | set_spacing() | spacing | SpacingStyle<sup>2</sup> |\n| item_id | set_id() | id | *str* |\n| is_visible | set_is_visible() | isVisible | *bool* |\n| requires | set_requires() | requires | *dict* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.containers import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n<h3 id=\"adaptivecard-types\">Types</h3>\n\n**src**: `from django_actionable_messages.adaptive_card.types import ...`\n\n<h4 id=\"adaptivecard-backgroundimage\">BackgroundImage <a href=\"https://adaptivecards.io/explorer/BackgroundImage.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------------|----------------------------|---------------------|---------------------------------|\n| **url** | set_url() | url | *str* |\n| fill_mode | set_fill_mode() | fillMode | FillMode<sup>1</sup> |\n| horizontal_alignment | set_horizontal_alignment() | horizontalAlignment | HorizontalAlignment<sup>1</sup> |\n| vertical_alignment | set_vertical_alignment() | verticalAlignment | VerticalAlignment<sup>1</sup> |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n<h4 id=\"adaptivecard-refresh\">Refresh <a href=\"https://adaptivecards.io/explorer/Refresh.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|----------------|----------|---------------------|\n| action | set_action() | action | Execute<sup>1</sup> |\n| expires | set_expires() | expires | *str* (ISO-8601) |\n| user_ids | set_user_ids() | list | list of *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.actions import ...`\n\n<h4 id=\"adaptivecard-tokenexchangeresource\">TokenExchangeResource <a href=\"https://adaptivecards.io/explorer/TokenExchangeResource.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|------------------|----------|-------------|--------|\n| **token_id** | - | id | *str* |\n| **uri** | - | uri | *str* |\n| **provider_id** | - | providerId | *str* |\n\n<h4 id=\"adaptivecard-authcardbutton\">AuthCardButton <a href=\"https://adaptivecards.io/explorer/AuthCardButton.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|-------------|----------|--------|\n| **btn_type** | - | type | *str* |\n| **value** | - | value | *str* |\n| title | set_title() | title | *str* |\n| image | set_image() | image | *str* |\n\n<h4 id=\"adaptivecard-authentication\">Authentication <a href=\"https://adaptivecards.io/explorer/Authentication.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|-------------------------|-------------------------------|-----------------------|--------------------------------------|\n| text | set_text() | text | *str* |\n| connection_name | set_connection_name() | connectionName | *str* |\n| token_exchange_resource | set_token_exchange_resource() | tokenExchangeResource | TokenExchangeResource<sup>1</sup> |\n| buttons | set_buttons() | buttons | *list* of AuthCardButton<sup>1</sup> |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.types import ...`\n\n<h4 id=\"adaptivecard-metadata\">Metadata <a href=\"https://adaptivecards.io/explorer/Metadata.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|-----------|----------|-------|\n| url | set_url() | webUrl | *str* |\n\n\n<h3 id=\"adaptivecard-cards\">Cards</h3>\n\n**src**: `from django_actionable_messages.adaptive_card.cards import ...`\n\n<h4 id=\"adaptivecard-adaptivecard\">AdaptiveCard <a href=\"https://adaptivecards.io/explorer/AdaptiveCard.html\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|----------------------------|----------------------------------|--------------------------|---------------------------------------|\n| version | set_version() | version | *str*, SCHEMA<sup>1</sup> |\n| schema | set_schema() | $schema | *str* |\n| refresh | set_refresh() | refresh | Refresh<sup>3</sup> |\n| authentication | set_authentication() | authentication | Authentication<sup>3</sup> |\n| inputs | add_elements() | inputs | input or *list* of inputs(see docs) |\n| actions | add_actions() | actions | action or *list* of actions(see docs) |\n| select_action | set_select_action() | selectAction | see docs |\n| style | set_style() | style | Style<sup>1</sup> |\n| hide_original_body | set_hide_original_body() | hideOriginalBody | *bool* |\n| fallback_text | set_fallback_text() | fallbackText | *str* |\n| background_image | set_background_image() | backgroundImage | *str*, Image<sup>2</sup> |\n| metadata | set_metadata() | metadata | Metadata<sup>3</sup> |\n| min_height | set_min_height() | minHeight | *str* |\n| speak | set_speak() | speak | *str* |\n| lang | set_lang() | lang | *str* |\n| rtl | set_rtl() | rtl | *bool* |\n| vertical_content_alignment | set_vertical_content_alignment() | verticalContentAlignment | VerticalAlignment<sup>1</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.adaptive_cards.utils import ...`\n\n\\[2\\] `from django_actionable_messages.adaptive_cards.elements import ...`\n\n\\[3\\] `from django_actionable_messages.adaptive_cards.types import ...`\n\n<h2 id=\"messagecard\">MessageCard</h2>\n\n[Legacy actionable message card reference](https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference)\n\n<h3 id=\"messagecard-elements\">Elements</h3>\n\n**src**: `from django_actionable_messages.message_card.elements import ...`\n\n<h4 id=\"messagecard-header\">Header <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#header\">docs</a></h4>\n\n| Argument name | Property | Type |\n|---------------|----------|---------------|\n| **name** | name | *str* |\n| **value** | value | *str*, *int* |\n\n<h4 id=\"messagecard-fact\">**Fact**</h4>\n\n| Argument name | Property | Type |\n|---------------|----------|--------------------------|\n| **name** | name | *str*, trans<sup>1</sup> |\n| **value** | value | *str*, trans<sup>1</sup> |\n| lang_code | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"messagecard-heroimage\">HeroImage <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#image-object\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|-------------|----------|--------------------------|\n| **url** | - | image | *str* |\n| title | set_title() | title | *str*, trans<sup>1</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"messagecard-inputchoice\">InputChoice</h4>\n\n| Argument name | Property | Type |\n|---------------|----------|--------------------------|\n| **name** | display | *str*, trans<sup>1</sup> |\n| **value** | value | *str*, *int* |\n| lang_code | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"messagecard-actiontarget\">ActionTarget</h4>\n\n| Argument name | Property | Type |\n|---------------|----------|--------------------|\n| **os_type** | os | OSType<sup>1</sup> |\n| url | uri | *str* |\n| lang_code | - | *str* |\n\n\\[1\\] `from django_actionable_messages.message_cards.utils import ...`\n\n<h3 id=\"messagecard-inputs\">Inputs</h3>\n\n**src**: `from django_actionable_messages.message_card.inputs import ...`\n\n<h4 id=\"messagecard-textinput\">TextInput <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#textinput\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|--------------------|-------------|--------------------------|\n| max_length | set_max_length() | maxLength | *int* |\n| is_multiline | set_is_multiline() | isMultiline | *bool* |\n| input_id | set_id() | id | *str* |\n| title | set_title() | title | *str*, trans<sup>1</sup> |\n| value | set_value() | value | *str* |\n| is_required | set_is_required() | isRequired | *bool* |\n| lang_code | - | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"messagecard-dateinput\">DateInput <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#dateinput\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|--------------------|------------|--------------------------|\n| include_time | set_include_time() | maxLength | *bool* |\n| input_id | set_id() | id | *str* |\n| title | set_title() | title | *str*, trans<sup>1</sup> |\n| value | set_value() | value | *str* |\n| is_required | set_is_required() | isRequired | *bool* |\n| lang_code | - | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"messagecard-multichoiceinput\">MultiChoiceInput <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#multichoiceinput\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|-----------------|-----------------------|-----------------|--------------------------------------|\n| **choices** | add_choices() | choices | *list* of InputChoice(s)<sup>1</sup> |\n| is_multi_select | set_is_multi_select() | isMultiSelect | *bool* |\n| style | set_style() | style | ChoiceStyle<sup>2</sup> |\n| input_id | set_id() | id | *str* |\n| title | set_title() | title | *str*, trans<sup>3</sup> |\n| value | set_value() | value | *str* |\n| is_required | set_is_required() | isRequired | *bool* |\n| lang_code | - | - | *str* |\n\nOther functions\n\n| Name | Property | Type |\n|---------------|----------|--------------------------|\n| add_choice() | choices | InputChoice<sup>1</sup> |\n\n\\[1\\] `from django_actionable_messages.message_cards.inputs import ...`\n\n\\[2\\] `from django_actionable_messages.message_cards.utils import ...`\n\n\\[3\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h3 id=\"messagecard-actions\">Actions</h3>\n\n**src**: `from django_actionable_messages.message_card.actions import ...`\n\n<h4 id=\"messagecard-openuri\">OpenUri <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#openuri-action\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|---------------|----------|------------------------------------|\n| **name** | - | name | *str*, trans<sup>2</sup> |\n| targets | add_targets() | targets | *list* of ActionTarget<sup>1</sup> |\n| lang_code | - | - | *str* |\n\nOther functions\n\n| Name | Property | Type |\n|---------------|----------|--------------------------------------|\n| add_target() | targets | ActionTarget<sup>1</sup> |\n| add_targets() | targets | **list** of ActionTarget<sup>1</sup> |\n\n\\[1\\] `from django_actionable_messages.message_cards.elements import ...`\n\n\\[2\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"messagecard-httppost\">HttpPOST <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#httppost-action\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|--------------------|-------------------------|-----------------|-------------------------------------------------------|\n| **name** | - | name | *str*, trans<sup>2</sup> |\n| **target** | - | targets | *str* |\n| headers | add_headers() | headers | Header<sup>1</sup> or *list* of Header(s)<sup>1</sup> |\n| body | set_body() | body | *str* |\n| body_content_type | set_body_content_type() | bodyContentType | *str* |\n| lang_code | - | - | *str* |\n\n\\[1\\] `from django_actionable_messages.message_cards.elements import ...`\n\n\\[2\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"messagecard-invokeaddincommand\">InvokeAddInCommand <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#invokeaddincommand-action\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|------------------------|----------------------------------|-----------------------|--------------------------|\n| **name** | - | name | *str*, trans<sup>1</sup> |\n| **add_in_id** | set_add_in_id() | addInId | *str* |\n| **desktop_command_id** | set_desktop_command_id() | desktopCommandId | *str* |\n| initialization_context | set_set_initialization_context() | initializationContext | *dict* |\n| lang_code | - | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"messagecard-actioncard\">ActionCard <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#actioncard-action\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|---------------|----------|---------------------------------------|\n| **name** | - | name | *str*, trans<sup>1</sup> |\n| inputs | add_inputs() | inputs | input or *list* of inputs(see docs) |\n| actions | add_actions() | actions | action or *list* of actions(see docs) |\n| lang_code | - | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h3 id=\"messagecard-sections\">Sections</h3>\n\n**src**: `from django_actionable_messages.message_card.sections import ...`\n\n<h4 id=\"messagecard-section\">Section <a href=\"https://docs.microsoft.com/en-gb/outlook/actionable-messages/message-card-reference#section-fields\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|-------------------|-------------------------|------------------|---------------------------------------------------|\n| start_group | set_start_group() | startGroup | *bool* |\n| title | set_title() | title | *str*, trans<sup>2</sup> |\n| text | set_text() | text | *str*, trans<sup>2</sup> |\n| activity_image | set_activity_image() | activityImage | *str* |\n| activity_title | set_activity_title() | activityTitle | *str*, trans<sup>2</sup> |\n| activity_subtitle | set_activity_subtitle() | activitySubtitle | *str*, trans<sup>2</sup> |\n| activity_text | set_activity_text() | activityText | *str*, trans<sup>2</sup> |\n| hero_image | set_hero_image() | heroImage | HeroImage<sup>2</sup> |\n| facts | add_facts() | facts | Fact(s)<sup>1</sup> or *list* of Fact<sup>1</sup> |\n| actions | add_potential_actions() | potentialAction | action or *list* of actions(see docs) |\n| lang_code | - | - | *str* |\n\nOther functions:\n\n| Name | Property | Type |\n|--------------------------------------------|--------------------------------------------------------------|-------|\n| set_activity(image, title, subtitle, text) | activityImage, activityTitle, activitySubtitle, activityText | *str* |\n\n\\[1\\] `from django_actionable_messages.message_cards.elements import ...`\n\n\\[2\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h3 id=\"messagecard-cards\">Cards</h3>\n\n**src**: `from django_actionable_messages.message_card.cards import ...`\n\n<h4 id=\"messagecard-messagecard\">MessageCard</h4>\n\n| Argument name | Function | Property | Type |\n|----------------------|--------------------------|------------------|-------------------------------------------------------|\n| title | set_title() | title | *str*, trans<sup>2</sup> |\n| text | set_text() | text | *str*, trans<sup>2</sup> |\n| originator | set_originator() | originator | *str* |\n| summary | set_summary() | summary | *str*, trans<sup>2</sup> |\n| theme_color | set_theme_color() | themeColor | *str* |\n| correlation_id | set_correlation_id() | correlationId | *str* |\n| auto_correlation_id* | - | correlationId | *bool* (default: *True*) |\n| expected_actors | set_expected_actors() | expectedActors | *list* of emails |\n| hide_original_body | set_hide_original_body() | hideOriginalBody | *bool* |\n| sections | add_sections() | sections | Section<sup>1</sup> or *list* of Sections<sup>1</sup> |\n| actions | add_actions() | potentialAction | action<sup>3</sup> or *list* of actions<sup>3</sup> |\n| lang_code | - | - | *str* |\n\nOther functions:\n\n| Name | Property | Type |\n|------------------------|-----------------|-------------------------|\n| add_expected_actors() | expectedActors | *str* or list of *str* |\n\n\\[1\\] `from django_actionable_messages.message_cards.sections import ...`\n\n\\[2\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n\\[3\\] `from django_actionable_messages.message_cards.actions import ...`\n\n<h2 id=\"herocard\">HeroCard</h2>\n\n<h3 id=\"herocard-elements\">Elements</h3>\n\n<h4 id=\"herocard-openurl\">OpenUrl</h4>\n\n| Argument name | Function | Property | Type |\n|---------------|----------|----------|--------------------------|\n| **title** | - | title | *str*, trans<sup>1</sup> |\n| **url** | - | value | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h4 id=\"herocard-Image\">Image</h4>\n\n| Argument name | Function | Property | Type |\n|---------------|-----------|----------|---------------------------|\n| **url** | - | value | *str* |\n| alt | set_alt() | alt | *str*, trans<sup>1</sup> |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n<h3 id=\"herocard-cards\">Cards</h3>\n\n**src**: `from django_actionable_messages.msteams_cards.cards import HeroCard`\n\n<h4 id=\"herocard-herocard\">HeroCard <a href=\"https://docs.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-reference#hero-card\">docs</a></h4>\n\n| Argument name | Function | Property | Type |\n|---------------|----------------|----------|-------------------------------------------------------|\n| title | set_title() | title | *str*, trans<sup>1</sup> |\n| subtitle | set_subtitle() | subtitle | *str*, trans<sup>1</sup> |\n| text | set_text() | text | *str*, trans<sup>1</sup> |\n| images | add_images() | images | Image<sup>2</sup> or *list* of Images<sup>2</sup> |\n| buttons | add_buttons() | buttons | OpenUrl<sup>3</sup> or *list* of OpenUrls<sup>3</sup> |\n| lang_code | - | - | *str* |\n\n\\[1\\] any translation like `from django.utils.translation import gettext, gettext_lazy, ...`\n\n\\[2\\] `from django_actionable_messages.msteams_cards.elements import Image`\n\n\\[3\\] `from django_actionable_messages.msteams_cards.elements import OpenUrl`\n\n<h2 id=\"thumbnailcard\">ThumbnailCard</h2>\n\n<h3 id=\"thumbnailcard-elements\">Elements</h3>\n\nsee HeroCard [Elements](#herocard-elements) section\n\n<h3 id=\"thumbnailcard-cards\">Cards</h3>\n\n**src**: `from django_actionable_messages.msteams_cards.cards import ThumbnailCard`\n\n<h4 id=\"thumbnailcard-thumbnailcard\">ThumbnailCard <a href=\"https://docs.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-reference#thumbnail-card\">docs</a></h4>\n\nsee HeroCard [HeroCard](#herocard-herocard) section\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Actionable messages",
"version": "0.2.7",
"project_urls": {
"Documentation": "https://github.com/utsurius/django-actionable-messages/blob/master/README.md",
"Homepage": "https://github.com/utsurius/django-actionable-messages",
"Source": "https://github.com/utsurius/django-actionable-messages",
"Tracker": "https://github.com/utsurius/django-actionable-messages/issues"
},
"split_keywords": [
"msteams",
"adaptivecard",
"messagecard",
"herocard",
"thumbnailcard",
"actionable messages"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7acdf7d27fb5b87ef4d6dcde94090a46daf4c047eafc4b6d71c3887cc0cb1c00",
"md5": "879eb5706d3e68f673c7b50c9664efb4",
"sha256": "8d91c2b950dcd7720d48b8d46c44c5ab88e4bb41d7e4bcc0b6a5bb3dfed132fa"
},
"downloads": -1,
"filename": "django_actionable_messages-0.2.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "879eb5706d3e68f673c7b50c9664efb4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 39036,
"upload_time": "2023-11-18T08:25:07",
"upload_time_iso_8601": "2023-11-18T08:25:07.129718Z",
"url": "https://files.pythonhosted.org/packages/7a/cd/f7d27fb5b87ef4d6dcde94090a46daf4c047eafc4b6d71c3887cc0cb1c00/django_actionable_messages-0.2.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "22890e8044bfc0378c969489beb6275a52075f5c40f9938ab30a91ced7fa237c",
"md5": "516962fde71e1cc73034bc178923d69c",
"sha256": "9e7a6bcdf7ced879754780369c8048717e7bdb8ac1896750f9888d9614306a17"
},
"downloads": -1,
"filename": "django_actionable_messages-0.2.7.tar.gz",
"has_sig": false,
"md5_digest": "516962fde71e1cc73034bc178923d69c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 50171,
"upload_time": "2023-11-18T08:25:09",
"upload_time_iso_8601": "2023-11-18T08:25:09.320094Z",
"url": "https://files.pythonhosted.org/packages/22/89/0e8044bfc0378c969489beb6275a52075f5c40f9938ab30a91ced7fa237c/django_actionable_messages-0.2.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-11-18 08:25:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "utsurius",
"github_project": "django-actionable-messages",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "django-actionable-messages"
}