Traceback
Switch to copy-and-paste view
/app/.venv/lib/python3.12/site-packages/django/core/handlers/exception.py, line 42, in inner
can rely on getting a response instead of an exception.
"""
if iscoroutinefunction(get_response):
@wraps(get_response)
async def inner(request):
try:
response = await get_response(request)
…
^^^^^^^^^^^^^^^^^^^^^^^^^^^
except Exception as exc:
response = await sync_to_async(
response_for_exception, thread_sensitive=False
)(request, exc)
return response
Local vars
Variable
Value
exc
KeyError('access_token')
get_response
<bound method BaseHandler._get_response_async of <django.core.handlers.asgi.ASGIHandler object at 0x7ff86e7168a0>>
request
<ASGIRequest: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
/app/.venv/lib/python3.12/site-packages/django/core/handlers/base.py, line 253, in _get_response_async
wrapped_callback = self.make_view_atomic(callback)
# If it is a synchronous view, run it in a subthread
if not iscoroutinefunction(wrapped_callback):
wrapped_callback = sync_to_async(
wrapped_callback, thread_sensitive=True
)
try:
response = await wrapped_callback(
…
request, *callback_args, **callback_kwargs
)
except Exception as e:
response = await sync_to_async(
self.process_exception_by_middleware,
thread_sensitive=True,
Local vars
Variable
Value
callback
<function View.as_view.<locals>.view at 0x7ff85119c220>
callback_args
()
callback_kwargs
{'flight_plan_id': UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')}
middleware_method
<asgiref.sync.SyncToAsync object at 0x7ff867b51700>
request
<ASGIRequest: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
response
None
self
<django.core.handlers.asgi.ASGIHandler object at 0x7ff86e7168a0>
wrapped_callback
<asgiref.sync.SyncToAsync object at 0x7ff850a52ae0>
/usr/local/lib/python3.12/concurrent/futures/thread.py, line 59, in run
self.kwargs = kwargs
def run(self):
if not self.future.set_running_or_notify_cancel():
return
try:
result = self.fn(*self.args, **self.kwargs)
…
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
except BaseException as exc:
self.future.set_exception(exc)
# Break a reference cycle with the exception 'exc'
self = None
else:
self.future.set_result(result)
Local vars
Variable
Value
self
None
/app/.venv/lib/python3.12/site-packages/django/views/decorators/csrf.py, line 65, in _view_wrapper
async def _view_wrapper(request, *args, **kwargs):
return await view_func(request, *args, **kwargs)
else:
def _view_wrapper(request, *args, **kwargs):
return view_func(request, *args, **kwargs)
…
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_view_wrapper.csrf_exempt = True
return wraps(view_func)(_view_wrapper)
Local vars
Variable
Value
args
()
kwargs
{'flight_plan_id': UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')}
request
<ASGIRequest: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
view_func
<function View.as_view.<locals>.view at 0x7ff85119c180>
/app/.venv/lib/python3.12/site-packages/django/views/generic/base.py, line 105, in view
self = cls(**initkwargs)
self.setup(request, *args, **kwargs)
if not hasattr(self, "request"):
raise AttributeError(
"%s instance has no 'request' attribute. Did you override "
"setup() and forget to call super()?" % cls.__name__
)
return self.dispatch(request, *args, **kwargs)
…
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
view.view_class = cls
view.view_initkwargs = initkwargs
# __name__ and __qualname__ are intentionally left unchanged as
# view_class should be used to robustly determine the name of the view
Local vars
Variable
Value
args
()
cls
<class 'scd_operations.views.WrappedAPIView'>
initkwargs
{}
kwargs
{'flight_plan_id': UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')}
request
<ASGIRequest: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
self
<scd_operations.views.WrappedAPIView object at 0x7ff850a50050>
/app/.venv/lib/python3.12/site-packages/rest_framework/views.py, line 515, in dispatch
self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
response = handler(request, *args, **kwargs)
except Exception as exc:
response = self.handle_exception(exc)
…
^^^^^^^^^^^^^^^^^^^^^^^^^^
self.response = self.finalize_response(request, response, *args, **kwargs)
return self.response
def options(self, request, *args, **kwargs):
"""
Local vars
Variable
Value
args
()
handler
<bound method api_view.<locals>.decorator.<locals>.handler of <scd_operations.views.WrappedAPIView object at 0x7ff850a50050>>
kwargs
{'flight_plan_id': UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')}
request
<rest_framework.request.Request: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
self
<scd_operations.views.WrappedAPIView object at 0x7ff850a50050>
/app/.venv/lib/python3.12/site-packages/rest_framework/views.py, line 475, in handle_exception
exception_handler = self.get_exception_handler()
context = self.get_exception_handler_context()
response = exception_handler(exc, context)
if response is None:
self.raise_uncaught_exception(exc)
…
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
response.exception = True
return response
def raise_uncaught_exception(self, exc):
if settings.DEBUG:
Local vars
Variable
Value
context
{'args': (),
'kwargs': {'flight_plan_id': UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')},
'request': <rest_framework.request.Request: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>,
'view': <scd_operations.views.WrappedAPIView object at 0x7ff850a50050>}
exc
KeyError('access_token')
exception_handler
<function exception_handler at 0x7ff8547b8cc0>
response
None
self
<scd_operations.views.WrappedAPIView object at 0x7ff850a50050>
/app/.venv/lib/python3.12/site-packages/rest_framework/views.py, line 486, in raise_uncaught_exception
def raise_uncaught_exception(self, exc):
if settings.DEBUG:
request = self.request
renderer_format = getattr(request.accepted_renderer, 'format')
use_plaintext_traceback = renderer_format not in ('html', 'api', 'admin')request.force_plaintext_errors(use_plaintext_traceback)
raise exc
…
^^^^^^^^^
# Note: Views are made CSRF exempt from within `as_view` as to prevent
# accidental removal of this exemption in cases where `dispatch` needs to
# be overridden.
def dispatch(self, request, *args, **kwargs):
"""
Local vars
Variable
Value
exc
KeyError('access_token')
renderer_format
'json'
request
<rest_framework.request.Request: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
self
<scd_operations.views.WrappedAPIView object at 0x7ff850a50050>
use_plaintext_traceback
True
/app/.venv/lib/python3.12/site-packages/rest_framework/views.py, line 512, in dispatch
# Get the appropriate handler method
if request.method.lower() in self.http_method_names:
handler = getattr(self, request.method.lower(),
self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
response = handler(request, *args, **kwargs)
…
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
except Exception as exc:
response = self.handle_exception(exc)
self.response = self.finalize_response(request, response, *args, **kwargs)
return self.response
Local vars
Variable
Value
args
()
handler
<bound method api_view.<locals>.decorator.<locals>.handler of <scd_operations.views.WrappedAPIView object at 0x7ff850a50050>>
kwargs
{'flight_plan_id': UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')}
request
<rest_framework.request.Request: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
self
<scd_operations.views.WrappedAPIView object at 0x7ff850a50050>
/app/.venv/lib/python3.12/site-packages/rest_framework/decorators.py, line 50, in handler
assert isinstance(http_method_names, (list, tuple)), \
'@api_view expected a list of strings, received %s' % type(http_method_names).__name__
allowed_methods = set(http_method_names) | {'options'}WrappedAPIView.http_method_names = [method.lower() for method in allowed_methods]
def handler(self, *args, **kwargs):
return func(*args, **kwargs)
…
^^^^^^^^^^^^^^^^^^^^^
for method in http_method_names:
setattr(WrappedAPIView, method.lower(), handler)
WrappedAPIView.__name__ = func.__name__
WrappedAPIView.__module__ = func.__module__
Local vars
Variable
Value
args
(<rest_framework.request.Request: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>,)
func
<function upsert_close_flight_plan at 0x7ff85119c040>
kwargs
{'flight_plan_id': UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')}
self
<scd_operations.views.WrappedAPIView object at 0x7ff850a50050>
/app/auth_helper/utils.py, line 131, in decorated
logger.error(f"Token verification failed: {token_error}")return JsonResponse(
{"detail": "Invalid token", "error details": f"{token_error}"},status=401,
)
decoded_scopes_set = set(decoded.get("scope", "").split())if (allow_any and decoded_scopes_set & set(required_scopes)) or set(required_scopes).issubset(decoded_scopes_set):
return f(*args, **kwargs)
…
^^^^^^^^^^^^^^^^^^
return JsonResponse({"message": "You don't have access to this resource"}, status=403)return decorated
return require_scope
Local vars
Variable
Value
API_IDENTIFIER
'rtm.sandbox.stage.flysafe.live'
BYPASS_AUTH_TOKEN_VERIFICATION
0
DSS_AUTH_JWKS_ENDPOINT
'https://auth.stage.iart.software/.well-known/jwks.json'
PASSPORT_JWKS_URL
'https://auth.sandbox.stage.flysafe.live/.well-known/jwks.json'
PASSPORT_URL
'https://auth.sandbox.stage.flysafe.live'
allow_any
False
args
(<rest_framework.request.Request: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>,)
auth
('Bearer '
'eyJhbGciOiJSUzI1NiIsImtpZCI6InhEUVVkQWhqZ0dYaHBIX3BTTWNMWGM4MnllUFlabFlfLUVtMDhwdnp1VE0iLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2F1dGguc3RhZ2UuaWFydC5zb2Z0d2FyZSIsImV4cCI6MTc4ODkwMTAxMywiaWF0IjoxNzg4ODk3NDEzLCJzdWIiOiJEU1MgUXVhbGlmZXIxIiwic2NvcGUiOiJpbnRlcnVzcy5mbGlnaHRfcGxhbm5pbmcucGxhbiIsInR5cCI6IkJlYXJlciIsImF1ZCI6InJ0bS5zYW5kYm94LnN0YWdlLmZseXNhZmUubGl2ZSJ9.INQQ1iQE53Gwzwm1FBMSVkfkXFU9qcZqWrkwT9ZiGJ4B9NbsqNHAJTtsF-kgwhmYEiruJclMxTqEYFfij25p4U7B9dxr_a8OyoJgsrwJ-OZ84FfwI_RI8qhz3-q3YZsd1y8g6ZAsMi5T1kGZA5mxQdM92uiOkfqqLBP3aItdhKJgC5d-9KFpwGcTDuYw8EKr6BCdtqq7T4ya47AIVSJPDOYajVK9eaUTfp28UO3zSzIsZcpUH0HnpwPo9yhZ-RvzA19g7iF-RtgJ9jAuOfnoKl461877xwhRL7pnMpQYPomBnpRDA8ph0JVwO9xZqlbCRdf0PvuGfoO6gRoMXsbHUx77PH1zN4QtYhCJ1xs2TRcR6Vbe_UunTyxrgRN5Eq1TocaS4Bmz6cBlsS-9hPwQ9iRXn4Qgb_-Z1hnaESnJlYWlvgW2Xy9QQZ3iS5X8rUB4KSleSzCEBJFCOPy68FG2D5PXn3LLWRhd4oNio8QfniVV0aH3iLNwmUmWDKQI9LdecY9G8ZVxiZiAkAi2s1P25aAa7b13gCPq7gvUanxmqqy5D5QRF5TdrBuVweMIMPLl8LglR6Czr_i4vlXzdZE6lRAx_LJrP6KoGPegP3o_5w5a7iYh6Nrb8c9_kkR-hWPzdPnUAX7QS9H9cRVo9Gxiwo7ArO8Mtb06rtQW22BPJw8')
decoded
{'aud': 'rtm.sandbox.stage.flysafe.live',
'exp': 1788901013,
'iat': 1788897413,
'iss': 'https://auth.stage.iart.software',
'scope': 'interuss.flight_planning.plan',
'sub': 'DSS Qualifer1',
'typ': 'Bearer'}
decoded_scopes_set
{'interuss.flight_planning.plan'}
dss_jwks_data
{'keys': [{'alg': 'RS256',
'e': 'AQAB',
'kid': 'xDQUdAhjgGXhpH_pSMcLXc82yePYZlY_-Em08pvzuTM',
'kty': 'RSA',
'n': 'yvYDFSuhtIeJys7khIkd_Y2dYRrLQT-VSB6xGwxxy2_9CWPdPSKQxuQBaTTDavn-ItVRQwA4HZi49kpj4DDErvTOIrggtcOOjXadFcsdNDZOjLKj0hZDVN2tGVQXDi2xrvV36VDOjeIFqfirW3X0TMpfdjrtswxrjjYO3EP8TrCETmb7FQ7ERTVLyp1zbqtNa09yhWHKHncz05GItkqWO_mWa3-tfG3TlgXaGG2xOL0k9npytLSfkxVumFtOVSc7xsFxZMm9lrzMc51e_yKj5RMe8C-wVzb4yCZClINHFiyJbZPSDmCnIDkOzetAZvrV1-AmU6A4tl4fJhK6-iaGeonGmoghyQODmBzK-4FgLBjZnhirz2AMbzWQvPjQE9b35Z5HVTsjD2Wi0esnIbRWvEkbjMNT8AYKgkOnfQgR2oLGOF90GWIQK5hBsbeW2eDi68hnxujmGQxh_PNEmekzQxqhzwFuKBBmLO2Fl6p757EbZfXHt1f7xr8llqZc1mU_zY2oA9cpijGD4PXTm0bGdS_wkn0ULDi7ndHuofiYRr5UXvjqv9m7rsuoxm-QnpRDp6Gy61PG6hnLEmhVNpVIWuRQ2HmUhco0drOepM-Phdl70X0yNpFIqXJ7jucMIuaNnYuVV-crkeRu3TZ4TY_TvOx54g-6UaEnz4Ylpm49sFc',
'use': 'sig'}]}
f
<function upsert_close_flight_plan at 0x7ff8513fbf60>
jwks_data
{'keys': [{'alg': 'RS256',
'e': 'AQAB',
'kid': 'Oc0Im3WPz6Sc1_tTsGTTStd-87szzPpSsiLvTHYqCpw',
'kty': 'RSA',
'n': 'x5kj02EsYynzXORa0zkl7QnGvVt4Hif64MPIW0QVdpuzjS0HU4ATxR6km8htWmt3s5F9UPL4JMIB5CVWDrUWywSYmxBT3J_AgvyJLOv1uUd8SwJRx-3sku7f2ZF00fOOvPjD5IS71UY0XYwZ1Vb9R5Bl-OAh_A0zFtguYA-jOWwQghLYYrnVsCwS6hvMQdF7RWx8EJv2v-ClJ7etI2xMcZt18YB1F-KPBJ7wtAS9VHbycDx_nClJayZdnMvzkU4yO2_UWYw0BrRk4IoRJ7xoGrh7i76xc1V-JL226Q8fBImWNvL-0ddvpQb9GDumV8E_ApI6ya0loTvPacOvwGJcTOS5QxpDGqxvubd_GPbjYmlYY-iieggRuGgS3Atuu7tmyAtCfscSoRMh0gDWZngcEr1vNZrbyYzc9lyUcFZK9afzFJHd4a-GdFiTyw6va69S1tQwyeuREnAVKtLXjM0zK2MviKaps41ILVk2Doa1H7gTedFdHc2uX8M-GmbUwTpt4ItHkci8f47XsZMAnnOgOQFAi3-u8VPbl0dbwrBBwDYnRGxs42PJJhBhp5xFhx0lHqXzRKh1nlRwhCp8V-UJSytzexU2NE8jmXfB-Q9pEPQGxzflPly0J6H1PM-CGLfLppWG2dNoBG1U4FXh-hP-QilECCRlZqvuH7BKU_iBQo8',
'use': 'sig'},
{'alg': 'RS256',
'e': 'AQAB',
'kid': 'xDQUdAhjgGXhpH_pSMcLXc82yePYZlY_-Em08pvzuTM',
'kty': 'RSA',
'n': 'yvYDFSuhtIeJys7khIkd_Y2dYRrLQT-VSB6xGwxxy2_9CWPdPSKQxuQBaTTDavn-ItVRQwA4HZi49kpj4DDErvTOIrggtcOOjXadFcsdNDZOjLKj0hZDVN2tGVQXDi2xrvV36VDOjeIFqfirW3X0TMpfdjrtswxrjjYO3EP8TrCETmb7FQ7ERTVLyp1zbqtNa09yhWHKHncz05GItkqWO_mWa3-tfG3TlgXaGG2xOL0k9npytLSfkxVumFtOVSc7xsFxZMm9lrzMc51e_yKj5RMe8C-wVzb4yCZClINHFiyJbZPSDmCnIDkOzetAZvrV1-AmU6A4tl4fJhK6-iaGeonGmoghyQODmBzK-4FgLBjZnhirz2AMbzWQvPjQE9b35Z5HVTsjD2Wi0esnIbRWvEkbjMNT8AYKgkOnfQgR2oLGOF90GWIQK5hBsbeW2eDi68hnxujmGQxh_PNEmekzQxqhzwFuKBBmLO2Fl6p757EbZfXHt1f7xr8llqZc1mU_zY2oA9cpijGD4PXTm0bGdS_wkn0ULDi7ndHuofiYRr5UXvjqv9m7rsuoxm-QnpRDp6Gy61PG6hnLEmhVNpVIWuRQ2HmUhco0drOepM-Phdl70X0yNpFIqXJ7jucMIuaNnYuVV-crkeRu3TZ4TY_TvOx54g-6UaEnz4Ylpm49sFc',
'use': 'sig'}]}
jwks_keys
[{'alg': 'RS256',
'e': 'AQAB',
'kid': 'Oc0Im3WPz6Sc1_tTsGTTStd-87szzPpSsiLvTHYqCpw',
'kty': 'RSA',
'n': 'x5kj02EsYynzXORa0zkl7QnGvVt4Hif64MPIW0QVdpuzjS0HU4ATxR6km8htWmt3s5F9UPL4JMIB5CVWDrUWywSYmxBT3J_AgvyJLOv1uUd8SwJRx-3sku7f2ZF00fOOvPjD5IS71UY0XYwZ1Vb9R5Bl-OAh_A0zFtguYA-jOWwQghLYYrnVsCwS6hvMQdF7RWx8EJv2v-ClJ7etI2xMcZt18YB1F-KPBJ7wtAS9VHbycDx_nClJayZdnMvzkU4yO2_UWYw0BrRk4IoRJ7xoGrh7i76xc1V-JL226Q8fBImWNvL-0ddvpQb9GDumV8E_ApI6ya0loTvPacOvwGJcTOS5QxpDGqxvubd_GPbjYmlYY-iieggRuGgS3Atuu7tmyAtCfscSoRMh0gDWZngcEr1vNZrbyYzc9lyUcFZK9afzFJHd4a-GdFiTyw6va69S1tQwyeuREnAVKtLXjM0zK2MviKaps41ILVk2Doa1H7gTedFdHc2uX8M-GmbUwTpt4ItHkci8f47XsZMAnnOgOQFAi3-u8VPbl0dbwrBBwDYnRGxs42PJJhBhp5xFhx0lHqXzRKh1nlRwhCp8V-UJSytzexU2NE8jmXfB-Q9pEPQGxzflPly0J6H1PM-CGLfLppWG2dNoBG1U4FXh-hP-QilECCRlZqvuH7BKU_iBQo8',
'use': 'sig'},
{'alg': 'RS256',
'e': 'AQAB',
'kid': 'xDQUdAhjgGXhpH_pSMcLXc82yePYZlY_-Em08pvzuTM',
'kty': 'RSA',
'n': 'yvYDFSuhtIeJys7khIkd_Y2dYRrLQT-VSB6xGwxxy2_9CWPdPSKQxuQBaTTDavn-ItVRQwA4HZi49kpj4DDErvTOIrggtcOOjXadFcsdNDZOjLKj0hZDVN2tGVQXDi2xrvV36VDOjeIFqfirW3X0TMpfdjrtswxrjjYO3EP8TrCETmb7FQ7ERTVLyp1zbqtNa09yhWHKHncz05GItkqWO_mWa3-tfG3TlgXaGG2xOL0k9npytLSfkxVumFtOVSc7xsFxZMm9lrzMc51e_yKj5RMe8C-wVzb4yCZClINHFiyJbZPSDmCnIDkOzetAZvrV1-AmU6A4tl4fJhK6-iaGeonGmoghyQODmBzK-4FgLBjZnhirz2AMbzWQvPjQE9b35Z5HVTsjD2Wi0esnIbRWvEkbjMNT8AYKgkOnfQgR2oLGOF90GWIQK5hBsbeW2eDi68hnxujmGQxh_PNEmekzQxqhzwFuKBBmLO2Fl6p757EbZfXHt1f7xr8llqZc1mU_zY2oA9cpijGD4PXTm0bGdS_wkn0ULDi7ndHuofiYRr5UXvjqv9m7rsuoxm-QnpRDp6Gy61PG6hnLEmhVNpVIWuRQ2HmUhco0drOepM-Phdl70X0yNpFIqXJ7jucMIuaNnYuVV-crkeRu3TZ4TY_TvOx54g-6UaEnz4Ylpm49sFc',
'use': 'sig'}]
kid
'xDQUdAhjgGXhpH_pSMcLXc82yePYZlY_-Em08pvzuTM'
kwargs
{'flight_plan_id': UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')}
parts
['Bearer',
'eyJhbGciOiJSUzI1NiIsImtpZCI6InhEUVVkQWhqZ0dYaHBIX3BTTWNMWGM4MnllUFlabFlfLUVtMDhwdnp1VE0iLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2F1dGguc3RhZ2UuaWFydC5zb2Z0d2FyZSIsImV4cCI6MTc4ODkwMTAxMywiaWF0IjoxNzg4ODk3NDEzLCJzdWIiOiJEU1MgUXVhbGlmZXIxIiwic2NvcGUiOiJpbnRlcnVzcy5mbGlnaHRfcGxhbm5pbmcucGxhbiIsInR5cCI6IkJlYXJlciIsImF1ZCI6InJ0bS5zYW5kYm94LnN0YWdlLmZseXNhZmUubGl2ZSJ9.INQQ1iQE53Gwzwm1FBMSVkfkXFU9qcZqWrkwT9ZiGJ4B9NbsqNHAJTtsF-kgwhmYEiruJclMxTqEYFfij25p4U7B9dxr_a8OyoJgsrwJ-OZ84FfwI_RI8qhz3-q3YZsd1y8g6ZAsMi5T1kGZA5mxQdM92uiOkfqqLBP3aItdhKJgC5d-9KFpwGcTDuYw8EKr6BCdtqq7T4ya47AIVSJPDOYajVK9eaUTfp28UO3zSzIsZcpUH0HnpwPo9yhZ-RvzA19g7iF-RtgJ9jAuOfnoKl461877xwhRL7pnMpQYPomBnpRDA8ph0JVwO9xZqlbCRdf0PvuGfoO6gRoMXsbHUx77PH1zN4QtYhCJ1xs2TRcR6Vbe_UunTyxrgRN5Eq1TocaS4Bmz6cBlsS-9hPwQ9iRXn4Qgb_-Z1hnaESnJlYWlvgW2Xy9QQZ3iS5X8rUB4KSleSzCEBJFCOPy68FG2D5PXn3LLWRhd4oNio8QfniVV0aH3iLNwmUmWDKQI9LdecY9G8ZVxiZiAkAi2s1P25aAa7b13gCPq7gvUanxmqqy5D5QRF5TdrBuVweMIMPLl8LglR6Czr_i4vlXzdZE6lRAx_LJrP6KoGPegP3o_5w5a7iYh6Nrb8c9_kkR-hWPzdPnUAX7QS9H9cRVo9Gxiwo7ArO8Mtb06rtQW22BPJw8']
passport_jwks_data
{'keys': [{'alg': 'RS256',
'e': 'AQAB',
'kid': 'Oc0Im3WPz6Sc1_tTsGTTStd-87szzPpSsiLvTHYqCpw',
'kty': 'RSA',
'n': 'x5kj02EsYynzXORa0zkl7QnGvVt4Hif64MPIW0QVdpuzjS0HU4ATxR6km8htWmt3s5F9UPL4JMIB5CVWDrUWywSYmxBT3J_AgvyJLOv1uUd8SwJRx-3sku7f2ZF00fOOvPjD5IS71UY0XYwZ1Vb9R5Bl-OAh_A0zFtguYA-jOWwQghLYYrnVsCwS6hvMQdF7RWx8EJv2v-ClJ7etI2xMcZt18YB1F-KPBJ7wtAS9VHbycDx_nClJayZdnMvzkU4yO2_UWYw0BrRk4IoRJ7xoGrh7i76xc1V-JL226Q8fBImWNvL-0ddvpQb9GDumV8E_ApI6ya0loTvPacOvwGJcTOS5QxpDGqxvubd_GPbjYmlYY-iieggRuGgS3Atuu7tmyAtCfscSoRMh0gDWZngcEr1vNZrbyYzc9lyUcFZK9afzFJHd4a-GdFiTyw6va69S1tQwyeuREnAVKtLXjM0zK2MviKaps41ILVk2Doa1H7gTedFdHc2uX8M-GmbUwTpt4ItHkci8f47XsZMAnnOgOQFAi3-u8VPbl0dbwrBBwDYnRGxs42PJJhBhp5xFhx0lHqXzRKh1nlRwhCp8V-UJSytzexU2NE8jmXfB-Q9pEPQGxzflPly0J6H1PM-CGLfLppWG2dNoBG1U4FXh-hP-QilECCRlZqvuH7BKU_iBQo8',
'use': 'sig'}]}
passport_jwks_data_response
<Response [200]>
public_key
<cryptography.hazmat.bindings._rust.openssl.rsa.RSAPublicKey object at 0x7ff850f2dfb0>
public_keys
{'Oc0Im3WPz6Sc1_tTsGTTStd-87szzPpSsiLvTHYqCpw': <cryptography.hazmat.bindings._rust.openssl.rsa.RSAPublicKey object at 0x7ff850f2ef70>,
'xDQUdAhjgGXhpH_pSMcLXc82yePYZlY_-Em08pvzuTM': <cryptography.hazmat.bindings._rust.openssl.rsa.RSAPublicKey object at 0x7ff850f2dfb0>}
request
<rest_framework.request.Request: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
required_scopes
['interuss.flight_planning.plan']
s
<requests.sessions.Session object at 0x7ff8515e6cf0>
token
'eyJhbGciOiJSUzI1NiIsImtpZCI6InhEUVVkQWhqZ0dYaHBIX3BTTWNMWGM4MnllUFlabFlfLUVtMDhwdnp1VE0iLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2F1dGguc3RhZ2UuaWFydC5zb2Z0d2FyZSIsImV4cCI6MTc4ODkwMTAxMywiaWF0IjoxNzg4ODk3NDEzLCJzdWIiOiJEU1MgUXVhbGlmZXIxIiwic2NvcGUiOiJpbnRlcnVzcy5mbGlnaHRfcGxhbm5pbmcucGxhbiIsInR5cCI6IkJlYXJlciIsImF1ZCI6InJ0bS5zYW5kYm94LnN0YWdlLmZseXNhZmUubGl2ZSJ9.INQQ1iQE53Gwzwm1FBMSVkfkXFU9qcZqWrkwT9ZiGJ4B9NbsqNHAJTtsF-kgwhmYEiruJclMxTqEYFfij25p4U7B9dxr_a8OyoJgsrwJ-OZ84FfwI_RI8qhz3-q3YZsd1y8g6ZAsMi5T1kGZA5mxQdM92uiOkfqqLBP3aItdhKJgC5d-9KFpwGcTDuYw8EKr6BCdtqq7T4ya47AIVSJPDOYajVK9eaUTfp28UO3zSzIsZcpUH0HnpwPo9yhZ-RvzA19g7iF-RtgJ9jAuOfnoKl461877xwhRL7pnMpQYPomBnpRDA8ph0JVwO9xZqlbCRdf0PvuGfoO6gRoMXsbHUx77PH1zN4QtYhCJ1xs2TRcR6Vbe_UunTyxrgRN5Eq1TocaS4Bmz6cBlsS-9hPwQ9iRXn4Qgb_-Z1hnaESnJlYWlvgW2Xy9QQZ3iS5X8rUB4KSleSzCEBJFCOPy68FG2D5PXn3LLWRhd4oNio8QfniVV0aH3iLNwmUmWDKQI9LdecY9G8ZVxiZiAkAi2s1P25aAa7b13gCPq7gvUanxmqqy5D5QRF5TdrBuVweMIMPLl8LglR6Czr_i4vlXzdZE6lRAx_LJrP6KoGPegP3o_5w5a7iYh6Nrb8c9_kkR-hWPzdPnUAX7QS9H9cRVo9Gxiwo7ArO8Mtb06rtQW22BPJw8'
unverified_token_headers
{'alg': 'RS256',
'kid': 'xDQUdAhjgGXhpH_pSMcLXc82yePYZlY_-Em08pvzuTM',
'typ': 'JWT'}
/app/scd_operations/views.py, line 545, in upsert_close_flight_plan
)
my_database_writer.create_or_update_composite_operational_intent(
flight_declaration=flight_declaration,
composite_operational_intent_payload=composite_operational_intent_payload,
)
# Notify the subscribers that the operational intent has been created
my_scd_dss_helper.process_peer_uss_notifications(
…
^
all_subscribers=flight_planning_submission.dss_response.subscribers,
operational_intent_details=flight_planning_notification_payload,
operational_intent_reference=flight_planning_submission.dss_response.operational_intent_reference,
operational_intent_id=flight_planning_submission.operational_intent_id,
)
Local vars
Variable
Value
_operational_intent_details
OperationalIntentUSSDetails(volumes=[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
reference='W84',
units='M'),
altitude_upper=Altitude(value=702.0,
reference='W84',
units='M'),
outline_circle=None),
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'))],
priority=0,
off_nominal_volumes=[])
auth_token
{'access_token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6InhEUVVkQWhqZ0dYaHBIX3BTTWNMWGM4MnllUFlabFlfLUVtMDhwdnp1VE0iLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2F1dGguc3RhZ2UuaWFydC5zb2Z0d2FyZSIsImV4cCI6MTc4ODkwMDk2MCwiaWF0IjoxNzg4ODk3MzYwLCJzdWIiOiJTYW5kYm94Iiwic2NvcGUiOiJ1dG0uc3RyYXRlZ2ljX2Nvb3JkaW5hdGlvbiB1dG0uY29uZm9ybWFuY2VfbW9uaXRvcmluZ19zYSIsInR5cCI6IkJlYXJlciIsImF1ZCI6Imh0dHBzOi8vZHNzLnN0YWdlLmlhcnQuc29mdHdhcmUifQ.FItw31WU3LyxTV-c08X-a1E5VOKkDEz5SD89t19nnsYRS_OgQ_fWG3rSTa2MhyRo325M13HTt0kn4TK8GpaZXIqfXUphc-OLlK-VZo4IAFxwHcCQw3kVMLMjStX52pwJw6k03kWPprwJ0VOD4e1otmBgniUBsgzVOFDODUBsnxosJQ9mACSemVw5ysZXEm8NvNlhNe0Pg-s26sRVpO00tzMYFzyFY8iuuRFJRpZK2goSwsPuBaEXZo9hZK-NzuU6OIS1j4vbuxO-rPy_b7Ph7q9rYCjwS2uwnXyanZFkl_OIMhj5XNBZVcGtMVpnXWWzFej-LHjCcORsgqrfkWiFZxYyPSTpSaFIykOktg8wopvK6dL_hr7En8aRX0fc1RpSKg5EKmwcJG4QcQpxg9C8QMPRYrdVNoHhyA_lmKdcvnaSYyyHn4-oyvXo3w70XVPDT2MEQTnfv_bu-_K7FOScFnVMK-FJTbeLvdlw6fUaqwWxsR5i4856CSqcR9L0CLhB8nX1tMJ5smOoPBbHb_DoTX7c2fkUnIKMNiYGlim30m6spEhslmIIBj3duKtL0bC0qMERmdVYA8mUFehifDZtMApdSUClnEdSGoBq2wvyt9dPF_Pa2glFEltVGHcM24S-9Hyp62R2T_X8tFP5o39dwPWh3PIqQwXu9JfSSm86CjA',
'expires_in': 3600,
'scope': 'utm.strategic_coordination utm.conformance_monitoring_sa',
'token_type': 'Bearer'}
composite_operational_intent_payload
CompositeOperationalIntentPayload(bounds='-113.84521879456894,53.663210126518166,-113.84435402492981,53.66391416170785',
start_datetime='2026-09-08T20:03:36.512519Z',
end_datetime='2026-09-08T20:48:37.512519Z',
alt_max=50,
alt_min=25,
operational_intent_reference_id='ca7ed5a5-e204-48e0-a775-ee27c7ba3110',
operational_intent_details_id='6b38a517-aa5c-4390-a955-5e977ebf32f6')
flight_declaration
<FlightDeclaration: Flight Blender Default 2a82a385-9847-4ba5-ad90-f6646063d4d5>
flight_declaration_creation
FlightDeclarationCreationPayload(id='2a82a385-9847-4ba5-ad90-f6646063d4d5',
operational_intent='{"volumes": [{"volume": '
'{"outline_polygon": '
'{"vertices": [{"lat": '
'53.663210126518166, '
'"lng": '
'-113.84472825082258}, '
'{"lat": '
'53.66328439401412, "lng": '
'-113.84521879456894}, '
'{"lat": '
'53.66391416170785, "lng": '
'-113.84494722473144}, '
'{"lat": '
'53.66387595834993, "lng": '
'-113.84435402492981}]}, '
'"altitude_lower": '
'{"value": 672.01, '
'"reference": "W84", '
'"units": "M"}, '
'"altitude_upper": '
'{"value": 702.0, '
'"reference": "W84", '
'"units": "M"}, '
'"outline_circle": null}, '
'"time_start": {"format": '
'"RFC3339", "value": '
'"2026-09-08T20:03:36.512519Z"}, '
'"time_end": {"format": '
'"RFC3339", "value": '
'"2026-09-08T20:48:37.512519Z"}}], '
'"priority": 0, '
'"off_nominal_volumes": '
'[], "uas_state": '
'"Nominal", "usage_state": '
'"Planned", "state": '
'"Accepted"}',
flight_declaration_raw_geojson={'features': [{'geometry': {'coordinates': (((-113.84472825082258,
53.663210126518166),
(-113.84521879456894,
53.66328439401412),
(-113.84494722473144,
53.66391416170785),
(-113.84435402492981,
53.66387595834993),
(-113.84472825082258,
53.663210126518166)),),
… <trimmed 4937 bytes string>
flight_operational_intent_detail
<FlightOperationalIntentDetail: FlightOperationalIntentDetail object (6b38a517-aa5c-4390-a955-5e977ebf32f6)>
flight_operational_intent_reference
<FlightOperationalIntentReference: FlightOperationalIntentReference object (ca7ed5a5-e204-48e0-a775-ee27c7ba3110)>
flight_plan_exists_in_flight_blender
False
flight_plan_id
UUID('2a82a385-9847-4ba5-ad90-f6646063d4d5')
flight_planning_data
FlightPlanningInjectionData(volumes=[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
reference='W84',
units='M'),
altitude_upper=Altitude(value=702.0,
reference='W84',
units='M'),
outline_circle=None),
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'))],
priority=0,
off_nominal_volumes=[],
uas_state='Nominal',
usage_state='Planned',
state='Accepted')
flight_planning_data_valid
True
flight_planning_notification_payload
FlightPlanningInjectionData(volumes=[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
reference='W84',
units='M'),
altitude_upper=Altitude(value=702.0,
reference='W84',
units='M'),
outline_circle=None),
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'))],
priority=0,
off_nominal_volumes=[],
uas_state='Nominal',
usage_state='Planned',
state='Accepted')
flight_planning_off_nominal_volumes
[]
flight_planning_priority
0
flight_planning_submission
OperationalIntentSubmissionStatus(dss_response=OperationalIntentSubmissionSuccess(subscribers=[SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='e0bcf950-694e-428e-b8c4-b5b296c1e8b6',
notification_index=1)],
uss_base_url='https://rtm.sandbox.stage.flysafe.live'),
SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='14ef6fdc-64d3-45b3-9c2b-15f69e9dd18b',
notification_index=5)],
uss_base_url='https://rtm.sait.stage.flysafe.live'),
SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='31b63fc4-cc61-4a4f-81c0-b620b85862d4',
notification_index=9)],
uss_base_url='https://rtm.airmarket.stage.flysafe.live'),
SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='7270ef5c-d210-4738-b502-4aab04f74763',
notification_index=2)],
uss_base_url='https://testdummy.interuss.org/interuss/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss/down')],
operational_intent_reference=OperationalIntentReferenceDSSResponse(id='ca7ed5a5-e204-48e0-a775-ee27c7ba3110',
manager='Sandbox',
uss_availability='Unknown',
version=1,
state='Accepted',
ovn='x3TJslbv2gOy6LXqW5fA3sWOLS-E8IDJ4tWewpvf9Ag_',
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'),
… <trimmed 4889 bytes string>
flight_planning_uas_state
'Nominal'
flight_planning_usage_state
'Planned'
flight_planning_volumes
[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
reference='W84',
units='M'),
altitude_upper=Altitude(value=702.0,
reference='W84',
units='M'),
outline_circle=None),
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339', value='2026-09-08T20:48:37.512519Z'))]
generated_operational_intent_state
'Accepted'
is_reg_number_valid
True
is_serial_number_valid
True
my_database_reader
<common.database_operations.FlightBlenderDatabaseReader object at 0x7ff850a440e0>
my_database_writer
<common.database_operations.FlightBlenderDatabaseWriter object at 0x7ff850a44e00>
my_flight_plan_op_intent_bridge
<scd_operations.scd_test_harness_helper.FlightPlantoOperationalIntentProcessor object at 0x7ff8509dfc80>
my_flight_plan_processor
<scd_operations.scd_test_harness_helper.FlightPlanningDataProcessor object at 0x7ff8520b7e90>
my_flight_planning_data_validator
<scd_operations.dss_scd_helper.FlightPlanningDataValidator object at 0x7ff8509dcda0>
my_geo_json_converter
<scd_operations.dss_scd_helper.VolumesConverter object at 0x7ff850a45700>
my_operational_intent_parser
<scd_operations.dss_scd_helper.OperationalIntentReferenceHelper object at 0x7ff850a50590>
my_reg_number_validator
<scd_operations.utils.OperatorRegistrationNumberValidator object at 0x7ff850a452e0>
my_scd_dss_helper
<scd_operations.dss_scd_helper.SCDOperations object at 0x7ff850a2bb60>
my_serial_number_validator
<scd_operations.utils.UAVSerialNumberValidator object at 0x7ff850a51f70>
my_test_harness_helper
<scd_operations.scd_test_harness_helper.SCDTestHarnessHelper object at 0x7ff8515d9130>
my_volumes_validator
<scd_operations.dss_scd_helper.VolumesValidator object at 0x7ff850a46000>
off_nominal_volumes
[]
operation_id_str
'2a82a385-9847-4ba5-ad90-f6646063d4d5'
pre_creation_checks_passed
True
request
<rest_framework.request.Request: PUT '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5'>
scd_test_data
FlightPlanningRequest(intended_flight=FlightPlan(basic_information=BasicFlightPlanInformation(usage_state=<UsageState.Planned: 'Planned'>,
uas_state=<UasState.Nominal: 'Nominal'>,
area=[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
reference='W84',
units='M'),
altitude_upper=Altitude(value=702.0,
reference='W84',
units='M'),
outline_circle=None),
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'))]),
astm_f3548_21=ASTMF354821OpIntentInformation(priority=0),
uspace_flight_authorisation=FlightAuthorisationData(uas_serial_number='1AF49UL5CC5J6K',
operation_mode=<OperationMode.Vlos: 'Vlos'>,
operation_category=<Operati… <trimmed 5544 bytes string>
uspace_flight_authorisation
FlightAuthorisationData(uas_serial_number='1AF49UL5CC5J6K',
operation_mode=<OperationMode.Vlos: 'Vlos'>,
operation_category=<OperationCategory.Open: 'Open'>,
uas_class=<UASClass.C0: 'C0'>,
identification_technologies=['ASTMNetRID'],
uas_type_certificate='',
connectivity_methods=['cellular'],
endurance_minutes=50,
emergency_procedure_url='https://testdummy.interuss.org/interuss/monitoring/uss_qualifier/test_data/flight_intents/standard/flight_auths/standard/emergency',
operator_id='CHEo5kut30e0mt01-qwe',
uas_id='')
view_r_bounds
'-113.84521879456894,53.663210126518166,-113.84435402492981,53.66391416170785'
view_rect_bounds
(-113.84521879456894,
53.663210126518166,
-113.84435402492981,
53.66391416170785)
view_rect_bounds_storage
'-113.84521879456894,53.663210126518166,-113.84435402492981,53.66391416170785'
volumes_valid
True
/app/scd_operations/dss_scd_helper.py, line 1521, in process_peer_uss_notifications
operational_intent_id=operational_intent_id,
operational_intent=operational_intent,
subscriptions=subscriber.subscriptions,
)
audience = generate_audience_from_base_url(base_url=subscriber.uss_base_url)
if audience not in ["host.docker.internal", "flight-blender"]:
self.notify_peer_uss_of_created_updated_operational_intent(
…
^
uss_base_url=subscriber.uss_base_url,
notification_payload=notification_payload,
audience=audience,
)
def process_retrieved_airspace_volumes(
Local vars
Variable
Value
all_subscribers
[SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='e0bcf950-694e-428e-b8c4-b5b296c1e8b6',
notification_index=1)],
uss_base_url='https://rtm.sandbox.stage.flysafe.live'),
SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='14ef6fdc-64d3-45b3-9c2b-15f69e9dd18b',
notification_index=5)],
uss_base_url='https://rtm.sait.stage.flysafe.live'),
SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='31b63fc4-cc61-4a4f-81c0-b620b85862d4',
notification_index=9)],
uss_base_url='https://rtm.airmarket.stage.flysafe.live'),
SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='7270ef5c-d210-4738-b502-4aab04f74763',
notification_index=2)],
uss_base_url='https://testdummy.interuss.org/interuss/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss/down')]
audience
'testdummy.interuss.org'
domain_to_check
ExtractResult(subdomain='testdummy',
domain='interuss',
suffix='org',
is_private=False)
notification_payload
NotifyPeerUSSPostPayload(operational_intent_id='ca7ed5a5-e204-48e0-a775-ee27c7ba3110',
operational_intent=OperationalIntentDetailsUSSResponse(reference=OperationalIntentReferenceDSSResponse(id='ca7ed5a5-e204-48e0-a775-ee27c7ba3110',
manager='Sandbox',
uss_availability='Unknown',
version=1,
state='Accepted',
ovn='x3TJslbv2gOy6LXqW5fA3sWOLS-E8IDJ4tWewpvf9Ag_',
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'),
uss_base_url='https://rtm.sandbox.stage.flysafe.live',
subscription_id='e0bcf950-694e-428e-b8c4-b5b296c1e8b6'),
details=FlightPlanningInjectionData(volumes=[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
… <trimmed 6731 bytes string>
operational_intent
OperationalIntentDetailsUSSResponse(reference=OperationalIntentReferenceDSSResponse(id='ca7ed5a5-e204-48e0-a775-ee27c7ba3110',
manager='Sandbox',
uss_availability='Unknown',
version=1,
state='Accepted',
ovn='x3TJslbv2gOy6LXqW5fA3sWOLS-E8IDJ4tWewpvf9Ag_',
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'),
uss_base_url='https://rtm.sandbox.stage.flysafe.live',
subscription_id='e0bcf950-694e-428e-b8c4-b5b296c1e8b6'),
details=FlightPlanningInjectionData(volumes=[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
reference='W84',
units='M'),
altitude_upper=Altitude(value=702.0,
reference='W84',
units='M'),
outline_circle=None),
time_start=Time(format='RFC3339',
… <trimmed 4863 bytes string>
operational_intent_details
FlightPlanningInjectionData(volumes=[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
reference='W84',
units='M'),
altitude_upper=Altitude(value=702.0,
reference='W84',
units='M'),
outline_circle=None),
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'))],
priority=0,
off_nominal_volumes=[],
uas_state='Nominal',
usage_state='Planned',
state='Accepted')
operational_intent_id
'ca7ed5a5-e204-48e0-a775-ee27c7ba3110'
operational_intent_reference
OperationalIntentReferenceDSSResponse(id='ca7ed5a5-e204-48e0-a775-ee27c7ba3110',
manager='Sandbox',
uss_availability='Unknown',
version=1,
state='Accepted',
ovn='x3TJslbv2gOy6LXqW5fA3sWOLS-E8IDJ4tWewpvf9Ag_',
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'),
uss_base_url='https://rtm.sandbox.stage.flysafe.live',
subscription_id='e0bcf950-694e-428e-b8c4-b5b296c1e8b6')
self
<scd_operations.dss_scd_helper.SCDOperations object at 0x7ff850a2bb60>
subscriber
SubscriberToNotify(subscriptions=[SubscriptionState(subscription_id='7270ef5c-d210-4738-b502-4aab04f74763',
notification_index=2)],
uss_base_url='https://testdummy.interuss.org/interuss/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss/down')
/app/scd_operations/dss_scd_helper.py, line 1471, in notify_peer_uss_of_created_updated_operational_intent
):
"""This method posts operational intent details to peer USS via a POST request to /uss/v1/operational_intents"""
auth_token = self.get_auth_token(audience=audience)
notification_url = uss_base_url + "/uss/v1/operational_intents"
headers = {"Content-Type": "application/json",
"Authorization": "Bearer " + auth_token["access_token"],
…
^^^^^^^^^^^^^^^^^^^^^^^^^^
}
uss_r = requests.post(
notification_url,
json=json.loads(json.dumps(asdict(notification_payload))),
headers=headers,
Local vars
Variable
Value
audience
'testdummy.interuss.org'
auth_token
{'error': 'invalid_request',
'error_description': 'Incorrect audience parameter, you submitted '
'testdummy.interuss.org. Please submit the correct '
'audience assigned to the client.'}
notification_payload
NotifyPeerUSSPostPayload(operational_intent_id='ca7ed5a5-e204-48e0-a775-ee27c7ba3110',
operational_intent=OperationalIntentDetailsUSSResponse(reference=OperationalIntentReferenceDSSResponse(id='ca7ed5a5-e204-48e0-a775-ee27c7ba3110',
manager='Sandbox',
uss_availability='Unknown',
version=1,
state='Accepted',
ovn='x3TJslbv2gOy6LXqW5fA3sWOLS-E8IDJ4tWewpvf9Ag_',
time_start=Time(format='RFC3339',
value='2026-09-08T20:03:36.512519Z'),
time_end=Time(format='RFC3339',
value='2026-09-08T20:48:37.512519Z'),
uss_base_url='https://rtm.sandbox.stage.flysafe.live',
subscription_id='e0bcf950-694e-428e-b8c4-b5b296c1e8b6'),
details=FlightPlanningInjectionData(volumes=[Volume4D(volume=Volume3D(outline_polygon=Polygon(vertices=[LatLngPoint(lat=53.663210126518166,
lng=-113.84472825082258),
LatLngPoint(lat=53.66328439401412,
lng=-113.84521879456894),
LatLngPoint(lat=53.66391416170785,
lng=-113.84494722473144),
LatLngPoint(lat=53.66387595834993,
lng=-113.84435402492981)]),
altitude_lower=Altitude(value=672.01,
… <trimmed 6731 bytes string>
notification_url
'https://testdummy.interuss.org/interuss/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss/down/uss/v1/operational_intents'
self
<scd_operations.dss_scd_helper.SCDOperations object at 0x7ff850a2bb60>
uss_base_url
'https://testdummy.interuss.org/interuss/monitoring/uss_qualifier/scenarios/astm/utm/off_nominal_planning/down_uss/down'
Request information
USER
AnonymousUser
GET
No GET data
POST
No POST data
FILES
No FILES data
COOKIES
No cookie data
META
| Variable | Value |
|---|---|
| CONTENT_LENGTH | '1319' |
| CONTENT_TYPE | 'application/json' |
| HTTP_ACCEPT | '*/*' |
| HTTP_ACCEPT_ENCODING | 'gzip, deflate, br' |
| HTTP_AUTHORIZATION | '********************' |
| HTTP_HOST | 'rtm.sandbox.stage.flysafe.live' |
| HTTP_USER_AGENT | 'python-requests/2.34.2' |
| HTTP_X_FORWARDED_FOR | '10.10.24.187' |
| HTTP_X_FORWARDED_HOST | 'rtm.sandbox.stage.flysafe.live' |
| HTTP_X_FORWARDED_PORT | '443' |
| HTTP_X_FORWARDED_PROTO | 'https' |
| HTTP_X_FORWARDED_SCHEME | 'https' |
| HTTP_X_REAL_IP | '10.10.24.187' |
| HTTP_X_REQUEST_ID | '4ce8625ddb0244e3206ab4614b840f3b' |
| HTTP_X_SCHEME | 'https' |
| PATH_INFO | '/scd/flight_planning/flight_plans/2a82a385-9847-4ba5-ad90-f6646063d4d5' |
| QUERY_STRING | '' |
| REMOTE_ADDR | '10.10.35.249' |
| REMOTE_HOST | '10.10.35.249' |
| REMOTE_PORT | 50198 |
| REQUEST_METHOD | 'PUT' |
| SCRIPT_NAME | '' |
| SERVER_NAME | '10.10.22.146' |
| SERVER_PORT | '8000' |
| wsgi.multiprocess | True |
| wsgi.multithread | True |
Settings
Using settings module flight_blender.settings
| Setting | Value |
|---|---|
| ABSOLUTE_URL_OVERRIDES | {} |
| ADMINS | [] |
| ALLOWED_HOSTS | ['*'] |
| APPEND_SLASH | True |
| ASGI_APPLICATION | 'flight_blender.asgi.application' |
| ASTM_F3623_SDSP_CUSTOM_DATA_FUSER_CLASS | 'surveillance_monitoring_operations.utils.TrafficDataFuser' |
| AUTHENTICATION_BACKENDS | '********************' |
| AUTH_PASSWORD_VALIDATORS | '********************' |
| AUTH_USER_MODEL | '********************' |
| BASE_DIR | PosixPath('/app') |
| BROKER_URL | 'redis://:blender_redis_password@redis-blender:6379' |
| CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
| CACHE_MIDDLEWARE_ALIAS | 'default' |
| CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
| CACHE_MIDDLEWARE_SECONDS | 600 |
| CELERY_ACCEPT_CONTENT | ['json'] |
| CELERY_BEAT_SCHEDULE | {'process-daa-logic-every-second': {'schedule': 1.0, |
| CELERY_BEAT_SCHEDULER | 'django_celery_beat.schedulers:DatabaseScheduler' |
| CELERY_BROKER_URL | 'redis://:blender_redis_password@redis-blender:6379' |
| CELERY_RESULT_BACKEND | 'redis://:blender_redis_password@redis-blender:6379' |
| CELERY_RESULT_SERIALIZER | 'json' |
| CELERY_TASK_SERIALIZER | 'json' |
| CELERY_TIMEZONE | 'UTC' |
| CHANNEL_LAYERS | {'default': {'BACKEND': 'channels_redis.core.RedisChannelLayer', |
| CSRF_COOKIE_AGE | 31449600 |
| CSRF_COOKIE_DOMAIN | None |
| CSRF_COOKIE_HTTPONLY | False |
| CSRF_COOKIE_NAME | 'csrftoken' |
| CSRF_COOKIE_PATH | '/' |
| CSRF_COOKIE_SAMESITE | 'Lax' |
| CSRF_COOKIE_SECURE | False |
| CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
| CSRF_HEADER_NAME | 'HTTP_X_CSRFTOKEN' |
| CSRF_TRUSTED_ORIGINS | [] |
| CSRF_USE_SESSIONS | False |
| CUSTOM_VOLUME_4D_GENERATION_CLASS | '' |
| DATABASES | {'default': {'ATOMIC_REQUESTS': False, |
| DATABASE_ROUTERS | [] |
| DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
| DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
| DATA_UPLOAD_MAX_NUMBER_FILES | 100 |
| DATETIME_FORMAT | 'N j, Y, P' |
| DATETIME_INPUT_FORMATS | ['%Y-%m-%d %H:%M:%S', |
| DATE_FORMAT | 'N j, Y' |
| DATE_INPUT_FORMATS | ['%Y-%m-%d', |
| DEBUG | 1 |
| DEBUG_PROPAGATE_EXCEPTIONS | False |
| DECIMAL_SEPARATOR | '.' |
| DEFAULT_AUTO_FIELD | 'django.db.models.AutoField' |
| DEFAULT_CHARSET | 'utf-8' |
| DEFAULT_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
| DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
| DEFAULT_FROM_EMAIL | 'webmaster@localhost' |
| DEFAULT_INDEX_TABLESPACE | '' |
| DEFAULT_TABLESPACE | '' |
| DISALLOWED_USER_AGENTS | [] |
| EMAIL_BACKEND | 'django.core.mail.backends.smtp.EmailBackend' |
| EMAIL_HOST | 'localhost' |
| EMAIL_HOST_PASSWORD | '********************' |
| EMAIL_HOST_USER | '' |
| EMAIL_PORT | 25 |
| EMAIL_SSL_CERTFILE | None |
| EMAIL_SSL_KEYFILE | '********************' |
| EMAIL_SUBJECT_PREFIX | '[Django] ' |
| EMAIL_TIMEOUT | None |
| EMAIL_USE_LOCALTIME | False |
| EMAIL_USE_SSL | False |
| EMAIL_USE_TLS | False |
| ENV_FILE | '' |
| FILE_UPLOAD_DIRECTORY_PERMISSIONS | None |
| FILE_UPLOAD_HANDLERS | ['django.core.files.uploadhandler.MemoryFileUploadHandler', |
| FILE_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
| FILE_UPLOAD_PERMISSIONS | 420 |
| FILE_UPLOAD_TEMP_DIR | None |
| FIRST_DAY_OF_WEEK | 0 |
| FIXTURE_DIRS | [] |
| FLIGHT_BLENDER_PLUGIN_AVOIDANCE_ENGINE | 'detect_and_avoid_operations.avoidance.engine.DefaultAvoidanceEngine' |
| FLIGHT_BLENDER_PLUGIN_DECONFLICTION_ENGINE | 'flight_declaration_operations.deconfliction_engine.DefaultDeconflictionEngine' |
| FLIGHT_BLENDER_PLUGIN_TRAFFIC_DATA_FUSER | 'surveillance_monitoring_operations.utils.TrafficDataFuser' |
| FLIGHT_BLENDER_PLUGIN_VOLUME_4D_GENERATOR | '' |
| FORCE_SCRIPT_NAME | None |
| FORMAT_MODULE_PATH | None |
| FORMS_URLFIELD_ASSUME_HTTPS | False |
| FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
| IGNORABLE_404_URLS | [] |
| INSTALLED_APPS | ['django.contrib.admin', |
| INTERNAL_IPS | [] |
| LANGUAGES | [('af', 'Afrikaans'), |
| LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur'] |
| LANGUAGE_CODE | 'en-us' |
| LANGUAGE_COOKIE_AGE | None |
| LANGUAGE_COOKIE_DOMAIN | None |
| LANGUAGE_COOKIE_HTTPONLY | False |
| LANGUAGE_COOKIE_NAME | 'django_language' |
| LANGUAGE_COOKIE_PATH | '/' |
| LANGUAGE_COOKIE_SAMESITE | None |
| LANGUAGE_COOKIE_SECURE | False |
| LOCALE_PATHS | [] |
| LOGGING | {'disable_existing_loggers': False, |
| LOGGING_CONFIG | 'logging.config.dictConfig' |
| LOGIN_REDIRECT_URL | '/accounts/profile/' |
| LOGIN_URL | '/accounts/login/' |
| LOGOUT_REDIRECT_URL | None |
| MANAGERS | [] |
| MEDIA_ROOT | '' |
| MEDIA_URL | '/' |
| MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
| MIDDLEWARE | ['django.middleware.security.SecurityMiddleware', |
| MIGRATION_MODULES | {} |
| MONTH_DAY_FORMAT | 'F j' |
| MQTT_CONFIGURATION | {'host': '', |
| NUMBER_GROUPING | 0 |
| PASSWORD_HASHERS | '********************' |
| PASSWORD_RESET_TIMEOUT | '********************' |
| PREPEND_WWW | False |
| REST_FRAMEWORK | {'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']} |
| ROOT_URLCONF | 'flight_blender.urls' |
| SECRET_KEY | '********************' |
| SECRET_KEY_FALLBACKS | '********************' |
| SECURE_CONTENT_TYPE_NOSNIFF | True |
| SECURE_CROSS_ORIGIN_OPENER_POLICY | 'same-origin' |
| SECURE_HSTS_INCLUDE_SUBDOMAINS | False |
| SECURE_HSTS_PRELOAD | False |
| SECURE_HSTS_SECONDS | 0 |
| SECURE_PROXY_SSL_HEADER | None |
| SECURE_REDIRECT_EXEMPT | [] |
| SECURE_REFERRER_POLICY | 'same-origin' |
| SECURE_SSL_HOST | None |
| SECURE_SSL_REDIRECT | False |
| SERVER_EMAIL | 'root@localhost' |
| SESSION_CACHE_ALIAS | 'default' |
| SESSION_COOKIE_AGE | 1209600 |
| SESSION_COOKIE_DOMAIN | None |
| SESSION_COOKIE_HTTPONLY | True |
| SESSION_COOKIE_NAME | 'sessionid' |
| SESSION_COOKIE_PATH | '/' |
| SESSION_COOKIE_SAMESITE | 'Lax' |
| SESSION_COOKIE_SECURE | False |
| SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
| SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
| SESSION_FILE_PATH | None |
| SESSION_SAVE_EVERY_REQUEST | False |
| SESSION_SERIALIZER | 'django.contrib.sessions.serializers.JSONSerializer' |
| SETTINGS_MODULE | 'flight_blender.settings' |
| SHORT_DATETIME_FORMAT | 'm/d/Y P' |
| SHORT_DATE_FORMAT | 'm/d/Y' |
| SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
| SILENCED_SYSTEM_CHECKS | [] |
| STATICFILES_DIRS | [] |
| STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', |
| STATIC_ROOT | None |
| STATIC_URL | '/static/' |
| STORAGES | {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'}, |
| TEMPLATES | [{'APP_DIRS': True, |
| TEST_NON_SERIALIZED_APPS | [] |
| TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
| THOUSAND_SEPARATOR | ',' |
| TIME_FORMAT | 'P' |
| TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
| TIME_ZONE | 'UTC' |
| USE_I18N | True |
| USE_L10N | True |
| USE_LOCAL_SQLITE_DATABASE | 0 |
| USE_THOUSAND_SEPARATOR | False |
| USE_TZ | True |
| USE_X_FORWARDED_HOST | False |
| USE_X_FORWARDED_PORT | False |
| WEATHER_API_BASE_URL | '********************' |
| WSGI_APPLICATION | None |
| X_FRAME_OPTIONS | 'DENY' |
| YEAR_MONTH_FORMAT | 'F Y' |