Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Index your code
hub
/
github.com/Screenly/Anthias
/ endpoints
Endpoints
84 in github.com/Screenly/Anthias
⨍
Functions
1,832
◇
Types & classes
160
↳
Endpoints
84
Route
delete
extend_schema(summary='Delete asset')
src/anthias_server/api/views/mixins.py:None
Route
download_youtube_asset
celery.task( base=_DownloadYoutubeTask, time_limit=YOUTUBE_DOWNLOAD_TIME_LIMIT_S, # Transient OSEr
src/anthias_server/celery_tasks.py:None
Route
get
extend_schema( summary='Get device IP addresses (for splash poll)', responses={ 20
src/anthias_server/api/views/v2.py:None
Route
get
extend_schema(summary='Get asset')
src/anthias_server/api/views/v1.py:None
Route
get
extend_schema(summary='Get asset')
src/anthias_server/api/views/v1_2.py:None
Route
get
extend_schema( summary='Get asset content', description=cleandoc(""" The content of th
src/anthias_server/api/views/mixins.py:None
Route
get
extend_schema( summary='Get asset', responses={ 200: AssetSerializer, },
src/anthias_server/api/views/v1_1.py:None
Route
main
click.option( '--build-target', default='x86', type=click.Choice(BUILD_TARGET_OPTIONS), )
tools/image_builder/__main__.py:None
Route
test_assets_control
mock.patch( 'anthias_server.api.views.v1.ViewerPublisher.send_to_viewer', return_value=None, )
src/anthias_server/api/tests/test_v1_endpoints.py:None
Route
test_assets_update_parses_play_time_formats
pytest.mark.parametrize( ('play_from', 'play_to', 'expected_from', 'expected_to'), [ # 12-hour
tests/test_template_views.py:None
Route
test_create_video_asset_v2_with_non_zero_duration_should_fail
mock.patch('anthias_server.api.serializers.mixins.rename')
src/anthias_server/api/tests/test_assets.py:None
Route
test_creates_group_when_lookup_empty
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_delete_asset_publishes_reload
mock.patch('anthias_server.app.helpers.ViewerPublisher')
src/anthias_server/api/tests/test_assets.py:None
Route
test_detect_board_subtype
pytest.mark.parametrize( ('model_bytes', 'expected'), [ # Canonical Radxa string + null termin
tests/test_host_agent_board_subtype.py:None
Route
test_disable_basic_auth
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_display_power_failure_returns_502
mock.patch( 'anthias_server.api.views.mixins.diagnostics.cec_available', return_value=True, )
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_display_power_invalid_state_returns_400
mock.patch('anthias_server.api.views.mixins.diagnostics.set_display_power')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_display_power_off_success
mock.patch( 'anthias_server.api.views.mixins.diagnostics.cec_available', return_value=True, )
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_display_power_on_success
mock.patch( 'anthias_server.api.views.mixins.diagnostics.cec_available', return_value=True, )
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_display_power_returns_503_when_no_cec_adapter
mock.patch( 'anthias_server.api.views.mixins.diagnostics.cec_available', return_value=False, )
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_empty
mock.patch('anthias_viewer.constants.SERVER_WAIT_TIMEOUT', 0)
tests/test_viewer.py:None
Route
test_enable_basic_auth
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_falls_back_to_create_when_lookup_fails
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_generates_and_persists_new_device_id
patch.object(telemetry, 'requests_post')
tests/test_telemetry.py:None
Route
test_get_device_settings
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_get_device_type_from_dt_model
pytest.mark.parametrize( 'content,expected', [ ('Raspberry Pi 5 Model B Rev 1.0', 'pi5'),
tests/test_device_helper.py:None
Route
test_get_instance_returns_same_instance
patch('anthias_viewer.media_player.get_device_type', return_value='pi5')
tests/test_media_player.py:None
Route
test_group_create_failure_surfaces_as_502
mock.patch('anthias_server.api.views.v2.ensure_asset_group')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_html_error_body_collapses_to_one_line
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_image_normalises_to_lossless_webp_across_formats
pytest.mark.parametrize( ('fmt', 'ext'), [ # TIFF — both extension spellings must route throug
tests/test_processing.py:None
Route
test_info_v1_endpoint
mock.patch( 'anthias_server.api.views.mixins.is_up_to_date', return_value=False )
src/anthias_server/api/tests/test_info_endpoints.py:None
Route
test_info_v2_endpoint
mock.patch('anthias_server.api.views.v2.is_up_to_date', return_value=True)
src/anthias_server/api/tests/test_info_endpoints.py:None
Route
test_integrations_balena_environment
patch('anthias_server.api.views.v2.is_balena_app')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_integrations_non_balena_environment
patch('anthias_server.api.views.v2.is_balena_app')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_invalid_token_skips_group_creation
mock.patch('anthias_server.api.views.v2.ensure_asset_group')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_local_asset_missing_file_raises_error
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_local_asset_open_oserror_surfaces_as_per_asset_error
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_local_asset_uses_multipart_with_pretty_filename
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_mpv_never_passes_video_rotate_on_pi4_64
patch( 'anthias_viewer.media_player._detect_hdmi_audio_device', return_value='sysdefault:CARD=vc4hdmi0
tests/test_media_player.py:None
Route
test_mpv_never_passes_video_rotate_under_cage
patch( 'anthias_viewer.media_player._detect_hdmi_audio_device', return_value='sysdefault:CARD=vc4hdmi0
tests/test_media_player.py:None
Route
test_needs_image_normalisation
pytest.mark.parametrize( ('filename', 'expected'), [ # Every entry in NORMALIZE_IMAGE_EXTS rou
tests/test_processing.py:None
Route
test_network_error_returns_502
mock.patch('anthias_server.api.views.v2.validate_token')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_no_uri_asset_raises_before_request
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_passes_timeout
patch.object(telemetry, 'requests_post')
tests/test_telemetry.py:None
Route
test_patch_device_settings_default_assets
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_patch_device_settings_invalid_auth_backend
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_patch_device_settings_password_mismatch_is_not_logged_as_error
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_patch_device_settings_rotation_rejects_non_cardinal
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_patch_device_settings_screen_rotation
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_patch_device_settings_success
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_patch_device_settings_validation_error
mock.patch('anthias_server.api.views.v2.settings')
src/anthias_server/api/tests/test_v2_endpoints.py:None
Route
test_play_calls_browser_bus_with_expected_options_on_pi4_64
patch( 'anthias_viewer.media_player._detect_hdmi_audio_device', return_value='sysdefault:CARD=vc4hdmi0
tests/test_media_player.py:None
Route
test_propagates_network_error
patch('anthias_server.lib.screenly_migration._session.get')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_raises_on_5xx
patch('anthias_server.lib.screenly_migration._session.get')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_raises_screenly_error_on_create_failure
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_reboot
mock.patch( 'anthias_server.api.views.mixins.reboot_anthias.apply_async', side_effect=(lambda: None),
src/anthias_server/api/tests/test_v1_endpoints.py:None
Route
test_returns_existing_id_without_post
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_returns_false_on_auth_failure
patch('anthias_server.lib.screenly_migration._session.get')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_returns_true_on_200
patch('anthias_server.lib.screenly_migration._session.get')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_reuses_persisted_device_id
patch.object(telemetry, 'requests_post')
tests/test_telemetry.py:None
Route
test_screenly_rejection_returns_per_asset_error
mock.patch('anthias_server.api.views.v2.migrate_asset')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_screenly_rejection_surfaces_status_and_detail
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_sends_event_when_no_cooldown
patch.object(telemetry, 'requests_post')
tests/test_telemetry.py:None
Route
test_sets_cooldown_after_success
patch.object(telemetry, 'requests_post')
tests/test_telemetry.py:None
Route
test_settings_display_blocked_without_cec
mock.patch( 'anthias_server.app.views.diagnostics.cec_available', return_value=False )
tests/test_template_views.py:None
Route
test_settings_display_invalid_state
mock.patch('anthias_server.app.views.diagnostics.set_display_power')
tests/test_template_views.py:None
Route
test_settings_display_off
mock.patch( 'anthias_server.app.views.diagnostics.cec_available', return_value=True )
tests/test_template_views.py:None
Route
test_settings_display_on
mock.patch( 'anthias_server.app.views.diagnostics.cec_available', return_value=True )
tests/test_template_views.py:None
Route
test_settings_display_surfaces_error_message
mock.patch( 'anthias_server.app.views.diagnostics.cec_available', return_value=True )
tests/test_template_views.py:None
Route
test_settings_reboot
mock.patch( 'anthias_server.app.views.reboot_anthias.apply_async', side_effect=(lambda: None), )
tests/test_template_views.py:None
Route
test_settings_save_screen_rotation
pytest.mark.parametrize( 'posted, persisted', [ ('90', 90), ('270', 270), # No
tests/test_template_views.py:None
Route
test_settings_shutdown
mock.patch( 'anthias_server.app.views.shutdown_anthias.apply_async', side_effect=(lambda: None), )
tests/test_template_views.py:None
Route
test_setup
mock.patch('pydbus.SessionBus', mock.MagicMock())
tests/test_viewer.py:None
Route
test_shutdown
mock.patch( 'anthias_server.api.views.mixins.shutdown_anthias.apply_async', side_effect=(lambda: None)
src/anthias_server/api/tests/test_v1_endpoints.py:None
Route
test_skips_in_ci
patch.object(telemetry, 'requests_post')
tests/test_telemetry.py:None
Route
test_skips_when_cooldown_set
patch.object(telemetry, 'requests_post')
tests/test_telemetry.py:None
Route
test_skips_when_opted_out
patch.object(telemetry, 'requests_post')
tests/test_telemetry.py:None
Route
test_success_returns_screenly_id
mock.patch('anthias_server.api.views.v2.migrate_asset')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_swallows_connection_error_and_skips_cooldown
patch.object(telemetry, 'requests_post', side_effect=RequestsConnectionError)
tests/test_telemetry.py:None
Route
test_swallows_timeout
patch.object(telemetry, 'requests_post', side_effect=Timeout)
tests/test_telemetry.py:None
Route
test_update_asset_publishes_reload
pytest.mark.parametrize( 'version,publisher_target', [ ('v1', 'anthias_server.api.views.v1.Vie
src/anthias_server/api/tests/test_assets.py:None
Route
test_url_asset_uses_source_url
patch('anthias_server.lib.screenly_migration._session.post')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_valid_token_returns_group_id
mock.patch('anthias_server.api.views.v2.ensure_asset_group')
src/anthias_server/api/tests/test_screenly_migration.py:None
Route
test_viewer_current_asset
mock.patch( 'anthias_server.api.views.v1.ViewerPublisher.send_to_viewer', return_value=None, )
src/anthias_server/api/tests/test_v1_endpoints.py:None