Viewset for viewing recipe actions.

GET /api/v1/action/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Cache-Control: public, max-age=30
Content-Type: application/json
Vary: Accept

[
    {
        "name": "console-log",
        "implementation_url": "https://normandy.cdn.mozilla.net/api/v1/action/console-log/implementation/sha384-dwDUzk7p67hyOW81gMBIWnhrBFoOvbRvrt2ftxkMrqBjbADVA_1TjHuv0i7bbFrN/",
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Log a message to the console",
            "type": "object",
            "required": [
                "message"
            ],
            "properties": {
                "message": {
                    "description": "Message to log to the console",
                    "type": "string",
                    "default": ""
                }
            }
        }
    },
    {
        "name": "show-heartbeat",
        "implementation_url": "https://normandy.cdn.mozilla.net/api/v1/action/show-heartbeat/implementation/sha384-VTOdZHFMo1LOw0JWf6_jAGBb9r5sBbb7BQrmI8n3wy3oVO3ywb1g3ulD1BagmaMA/",
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Show a Heartbeat survey.",
            "description": "This action shows a single survey.",
            "type": "object",
            "required": [
                "surveyId",
                "message",
                "thanksMessage",
                "postAnswerUrl",
                "learnMoreMessage",
                "learnMoreUrl"
            ],
            "properties": {
                "repeatOption": {
                    "type": "string",
                    "enum": [
                        "once",
                        "xdays",
                        "nag"
                    ],
                    "description": "Determines how often a prompt is shown executes.",
                    "default": "once"
                },
                "repeatEvery": {
                    "description": "For repeatOption=xdays, how often (in days) the prompt is displayed.",
                    "default": null,
                    "type": [
                        "number",
                        "null"
                    ]
                },
                "includeTelemetryUUID": {
                    "type": "boolean",
                    "description": "Include unique user ID in post-answer-url and Telemetry",
                    "default": false
                },
                "surveyId": {
                    "type": "string",
                    "description": "Slug uniquely identifying this survey in telemetry"
                },
                "message": {
                    "description": "Message to show to the user",
                    "type": "string"
                },
                "engagementButtonLabel": {
                    "description": "Text for the engagement button. If specified, this button will be shown instead of rating stars.",
                    "default": null,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "thanksMessage": {
                    "description": "Thanks message to show to the user after they've rated Firefox",
                    "type": "string"
                },
                "postAnswerUrl": {
                    "description": "URL to redirect the user to after rating Firefox or clicking the engagement button",
                    "default": null,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "learnMoreMessage": {
                    "description": "Message to show to the user to learn more",
                    "default": null,
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "learnMoreUrl": {
                    "description": "URL to show to the user when they click Learn More",
                    "default": null,
                    "type": [
                        "string",
                        "null"
                    ]
                }
            }
        }
    },
    {
        "name": "preference-experiment",
        "implementation_url": "https://normandy.cdn.mozilla.net/api/v1/action/preference-experiment/implementation/sha384-o1w_DJcXVnm6ppFcrPr78-Q32ZVXgi6lfYm9wUS3JBj5466SxrFpXaFt_KgJC87O/",
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Run a feature experiment activated by a preference.",
            "type": "object",
            "required": [
                "slug",
                "preferenceName",
                "preferenceType",
                "branches"
            ],
            "properties": {
                "slug": {
                    "description": "Unique identifier for this experiment",
                    "type": "string",
                    "pattern": "^[A-Za-z0-9\\-_]+$"
                },
                "experimentDocumentUrl": {
                    "description": "URL of a document describing the experiment",
                    "type": "string",
                    "format": "uri",
                    "default": ""
                },
                "preferenceName": {
                    "description": "Full dotted-path of the preference that controls this experiment",
                    "type": "string"
                },
                "preferenceType": {
                    "description": "Data type of the preference that controls this experiment",
                    "type": "string",
                    "enum": [
                        "string",
                        "integer",
                        "boolean"
                    ]
                },
                "preferenceBranchType": {
                    "description": "Controls whether the default or user value of the preference is modified",
                    "type": "string",
                    "enum": [
                        "user",
                        "default"
                    ],
                    "default": "default"
                },
                "isHighPopulation": {
                    "description": "Marks the preference experiment as a high population experiment, that should be excluded from certain types of telemetry",
                    "type": "boolean",
                    "default": "false"
                },
                "isEnrollmentPaused": {
                    "description": "If true, new users will not be enrolled in the study.",
                    "type": "boolean",
                    "default": false
                },
                "branches": {
                    "description": "List of experimental branches",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "object",
                        "required": [
                            "slug",
                            "value",
                            "ratio"
                        ],
                        "properties": {
                            "slug": {
                                "description": "Unique identifier for this branch of the experiment",
                                "type": "string",
                                "pattern": "^[A-Za-z0-9\\-_]+$"
                            },
                            "value": {
                                "description": "Value to set the preference to for this branch",
                                "type": [
                                    "string",
                                    "number",
                                    "boolean"
                                ]
                            },
                            "ratio": {
                                "description": "Ratio of users who should be grouped into this branch",
                                "type": "integer",
                                "minimum": 1
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "name": "opt-out-study",
        "implementation_url": "https://normandy.cdn.mozilla.net/api/v1/action/opt-out-study/implementation/sha384-QKoPs61T67mshtL1-RGVzzj7xgQbzCCit0fDUfnxE7UPiAKpHpFe5R7P-9Zr6jRZ/",
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Enroll a user in an opt-out SHIELD study",
            "type": "object",
            "required": [
                "name",
                "description",
                "addonUrl",
                "extensionApiId"
            ],
            "properties": {
                "name": {
                    "description": "User-facing name of the study",
                    "type": "string",
                    "minLength": 1
                },
                "description": {
                    "description": "User-facing description of the study",
                    "type": "string",
                    "minLength": 1
                },
                "addonUrl": {
                    "description": "URL of the add-on XPI file",
                    "type": "string",
                    "format": "uri",
                    "minLength": 1
                },
                "extensionApiId": {
                    "description": "The record ID of the extension used for Normandy API calls.",
                    "type": "integer"
                },
                "isEnrollmentPaused": {
                    "description": "If true, new users will not be enrolled in the study.",
                    "type": "boolean",
                    "default": false
                }
            }
        }
    },
    {
        "name": "preference-rollout",
        "implementation_url": null,
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Change preferences permanently",
            "type": "object",
            "required": [
                "slug",
                "preferences"
            ],
            "properties": {
                "slug": {
                    "description": "Unique identifer for the rollout, used in telemetry and rollbacks",
                    "type": "string",
                    "pattern": "^[a-z0-9\\-_]+$"
                },
                "preferences": {
                    "description": "The preferences to change, and their values",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "object",
                        "required": [
                            "preferenceName",
                            "value"
                        ],
                        "properties": {
                            "preferenceName": {
                                "description": "Full dotted-path of the preference being changed",
                                "type": "string"
                            },
                            "value": {
                                "description": "Value to set the preference to",
                                "type": [
                                    "string",
                                    "integer",
                                    "boolean"
                                ]
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "name": "preference-rollback",
        "implementation_url": null,
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Undo a preference rollout",
            "type": "object",
            "required": [
                "rolloutSlug"
            ],
            "properties": {
                "rolloutSlug": {
                    "description": "Unique identifer for the rollout to undo",
                    "type": "string",
                    "pattern": "^[a-z0-9\\-_]+$"
                }
            }
        }
    },
    {
        "name": "addon-study",
        "implementation_url": null,
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Enroll a user in an opt-out SHIELD study",
            "type": "object",
            "required": [
                "name",
                "description",
                "addonUrl",
                "extensionApiId"
            ],
            "properties": {
                "name": {
                    "description": "User-facing name of the study",
                    "type": "string",
                    "minLength": 1
                },
                "description": {
                    "description": "User-facing description of the study",
                    "type": "string",
                    "minLength": 1
                },
                "addonUrl": {
                    "description": "URL of the add-on XPI file",
                    "type": "string",
                    "format": "uri",
                    "minLength": 1
                },
                "extensionApiId": {
                    "description": "The record ID of the extension used for Normandy API calls.",
                    "type": "integer"
                },
                "isEnrollmentPaused": {
                    "description": "If true, new users will not be enrolled in the study.",
                    "type": "boolean",
                    "default": false
                }
            }
        }
    },
    {
        "name": "branched-addon-study",
        "implementation_url": null,
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Enroll a user in an add-on experiment, with managed branches",
            "type": "object",
            "required": [
                "slug",
                "userFacingName",
                "userFacingDescription",
                "branches"
            ],
            "properties": {
                "slug": {
                    "description": "Machine-readable identifier",
                    "type": "string",
                    "minLength": 1
                },
                "userFacingName": {
                    "description": "User-facing name of the study",
                    "type": "string",
                    "minLength": 1
                },
                "userFacingDescription": {
                    "description": "User-facing description of the study",
                    "type": "string",
                    "minLength": 1
                },
                "isEnrollmentPaused": {
                    "description": "If true, new users will not be enrolled in the study.",
                    "type": "boolean",
                    "default": false
                },
                "branches": {
                    "description": "List of experimental branches",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "object",
                        "required": [
                            "slug",
                            "ratio",
                            "extensionApiId"
                        ],
                        "properties": {
                            "slug": {
                                "description": "Unique identifier for this branch of the experiment.",
                                "type": "string",
                                "pattern": "^[A-Za-z0-9\\-_]+$"
                            },
                            "ratio": {
                                "description": "Ratio of users who should be grouped into this branch.",
                                "type": "integer",
                                "minimum": 1
                            },
                            "extensionApiId": {
                                "description": "The record ID of the add-on uploaded to the Normandy server. May be null, in which case no add-on will be installed.",
                                "type": [
                                    "number",
                                    "null"
                                ],
                                "default": null
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "name": "multi-preference-experiment",
        "implementation_url": null,
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Run a feature experiment activated by a set of preferences.",
            "type": "object",
            "required": [
                "slug",
                "userFacingName",
                "userFacingDescription",
                "branches"
            ],
            "properties": {
                "slug": {
                    "description": "Unique identifier for this experiment",
                    "type": "string",
                    "pattern": "^[A-Za-z0-9\\-_]+$"
                },
                "userFacingName": {
                    "description": "User-facing name of the experiment",
                    "type": "string",
                    "minLength": 1
                },
                "userFacingDescription": {
                    "description": "User-facing description of the experiment",
                    "type": "string",
                    "minLength": 1
                },
                "experimentDocumentUrl": {
                    "description": "URL of a document describing the experiment",
                    "type": "string",
                    "format": "uri",
                    "default": ""
                },
                "isHighPopulation": {
                    "description": "Marks the preference experiment as a high population experiment, that should be excluded from certain types of telemetry",
                    "type": "boolean",
                    "default": "false"
                },
                "isEnrollmentPaused": {
                    "description": "If true, new users will not be enrolled in the study.",
                    "type": "boolean",
                    "default": false
                },
                "branches": {
                    "description": "List of experimental branches",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "object",
                        "required": [
                            "slug",
                            "ratio",
                            "preferences"
                        ],
                        "properties": {
                            "slug": {
                                "description": "Unique identifier for this branch of the experiment",
                                "type": "string",
                                "pattern": "^[A-Za-z0-9\\-_]+$"
                            },
                            "ratio": {
                                "description": "Ratio of users who should be grouped into this branch",
                                "type": "integer",
                                "minimum": 1
                            },
                            "preferences": {
                                "description": "The set of preferences to be set if this branch is chosen",
                                "type": "object",
                                "patternProperties": {
                                    ".*": {
                                        "type": "object",
                                        "properties": {
                                            "preferenceType": {
                                                "description": "Data type of the preference that controls this experiment",
                                                "type": "string",
                                                "enum": [
                                                    "string",
                                                    "integer",
                                                    "boolean"
                                                ]
                                            },
                                            "preferenceBranchType": {
                                                "description": "Controls whether the default or user value of the preference is modified",
                                                "type": "string",
                                                "enum": [
                                                    "user",
                                                    "default"
                                                ],
                                                "default": "default"
                                            },
                                            "preferenceValue": {
                                                "description": "Value for this preference when this branch is chosen",
                                                "type": [
                                                    "string",
                                                    "number",
                                                    "boolean"
                                                ]
                                            }
                                        },
                                        "required": [
                                            "preferenceType",
                                            "preferenceBranchType",
                                            "preferenceValue"
                                        ]
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    {
        "name": "addon-rollout",
        "implementation_url": null,
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Install add-on permanently",
            "type": "object",
            "required": [
                "extensionApiId",
                "slug"
            ],
            "properties": {
                "extensionApiId": {
                    "description": "The record ID of the extension used for Normandy API calls.",
                    "type": "integer"
                },
                "slug": {
                    "description": "Unique identifer for the rollout, used in telemetry and rollbacks.",
                    "type": "string",
                    "pattern": "^[a-z0-9\\-_]+$"
                }
            }
        }
    },
    {
        "name": "addon-rollback",
        "implementation_url": null,
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Undo an add-on rollout",
            "type": "object",
            "required": [
                "rolloutSlug"
            ],
            "properties": {
                "rolloutSlug": {
                    "description": "Unique identifer for the rollout to undo.",
                    "type": "string",
                    "pattern": "^[a-z0-9\\-_]+$"
                }
            }
        }
    },
    {
        "name": "messaging-experiment",
        "implementation_url": null,
        "arguments_schema": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "title": "Messaging Experiment",
            "type": "object",
            "required": [
                "slug",
                "branches"
            ],
            "properties": {
                "slug": {
                    "description": "Unique identifier for this experiment",
                    "type": "string",
                    "pattern": "^[A-Za-z0-9\\-_]+$"
                },
                "isEnrollmentPaused": {
                    "description": "If true, new users will not be enrolled in the study.",
                    "type": "boolean",
                    "default": false
                },
                "branches": {
                    "description": "List of experimental branches",
                    "type": "array",
                    "minItems": 1,
                    "items": {
                        "type": "object",
                        "required": [
                            "slug",
                            "value",
                            "ratio",
                            "groups"
                        ],
                        "properties": {
                            "slug": {
                                "description": "Unique identifier for this branch of the experiment.",
                                "type": "string",
                                "pattern": "^[A-Za-z0-9\\-_]+$"
                            },
                            "value": {
                                "description": "Message content.",
                                "type": "object",
                                "properties": {}
                            },
                            "ratio": {
                                "description": "Ratio of users who should be grouped into this branch.",
                                "type": "integer",
                                "minimum": 1
                            },
                            "groups": {
                                "description": "A list of experiment groups that can be used to exclude or select related experiments. May be empty.",
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "description": "Identifier of the group"
                                }
                            }
                        }
                    }
                }
            }
        }
    }
]