diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..93b7b093 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,24 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 4 +tab_width = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{yaml,yml,less}] +indent_size = 2 + +[*.md] +indent_size = 2 + +# Makefiles always use tabs for indentation +[Makefile] +indent_style = tab + +[*.bat] +indent_style = tab diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4f5a1024..f5ebed04 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,5 @@ stages: +- pre-commit - gitlab - test - deploy @@ -13,6 +14,18 @@ before_script: - python -V - pip install wheel tox +pre-commit-check: + stage: pre-commit + image: python:3.6-buster + variables: + PRE_COMMIT_HOME: ${CI_PROJECT_DIR}/.cache/pre-commit + cache: + paths: + - ${PRE_COMMIT_HOME} + script: + - pip install pre-commit + - pre-commit run --all-files + sast: stage: gitlab before_script: [] @@ -27,7 +40,7 @@ dependency_scanning: test-3.7-core: image: python:3.7-buster - script: + script: - tox -e py37-core artifacts: when: always @@ -36,7 +49,7 @@ test-3.7-core: test-3.8-core: image: python:3.8-buster - script: + script: - tox -e py38-core artifacts: when: always @@ -45,7 +58,7 @@ test-3.8-core: test-3.9-core: image: python:3.9-buster - script: + script: - tox -e py39-core artifacts: when: always @@ -54,7 +67,7 @@ test-3.9-core: test-3.7-all: image: python:3.7-buster - script: + script: - tox -e py37-all artifacts: when: always @@ -63,7 +76,7 @@ test-3.7-all: test-3.8-all: image: python:3.8-buster - script: + script: - tox -e py38-all artifacts: when: always @@ -72,7 +85,7 @@ test-3.8-all: test-3.9-all: image: python:3.9-buster - script: + script: - tox -e py39-all artifacts: when: always @@ -91,4 +104,4 @@ deploy_production: - twine upload dist/* rules: - - if: $CI_COMMIT_TAG \ No newline at end of file + - if: $CI_COMMIT_TAG diff --git a/.gitlab/issue_templates/Bug.md b/.gitlab/issue_templates/Bug.md index e7d9ffff..9d74dbc1 100644 --- a/.gitlab/issue_templates/Bug.md +++ b/.gitlab/issue_templates/Bug.md @@ -1,8 +1,8 @@ # Bug - I have searched [issues](https://gitlab.com/allianceauth/allianceauth/issues?scope=all&utf8=%E2%9C%93&state=all) (Y/N): -- What Version of Alliance Auth: -- What Operating System: +- What Version of Alliance Auth: +- What Operating System: - Version of other components relevant to issue eg. Service, Database: Please include a brief description of your issue here. @@ -11,4 +11,4 @@ Please include steps to reproduce the issue Please include any tracebacks or logs -Please include the results of the command `pip list` \ No newline at end of file +Please include the results of the command `pip list` diff --git a/.gitlab/issue_templates/Feature Request.md b/.gitlab/issue_templates/Feature Request.md index b3351169..df9d466b 100644 --- a/.gitlab/issue_templates/Feature Request.md +++ b/.gitlab/issue_templates/Feature Request.md @@ -4,4 +4,4 @@ - Is this a Service (external integration), a Module (Alliance Auth extension) or an enhancement to an existing service/module. -- Describe why its useful to you or others. \ No newline at end of file +- Describe why its useful to you or others. diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..63a70cba --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,28 @@ +# Apply to all files without committing: +# pre-commit run --all-files +# Update this file: +# pre-commit autoupdate + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.0.1 + hooks: + - id: check-case-conflict + - id: check-json + - id: check-xml + - id: check-yaml + - id: fix-byte-order-marker + - id: trailing-whitespace + exclude: (\.min\.css|\.min\.js|\.mo|\.po|swagger\.json)$ + - id: end-of-file-fixer + exclude: (\.min\.css|\.min\.js|\.mo|\.po|swagger\.json)$ + - id: mixed-line-ending + args: [ '--fix=lf' ] + - id: fix-encoding-pragma + args: [ '--remove' ] + + - repo: https://github.com/editorconfig-checker/editorconfig-checker.python + rev: 2.3.5 + hooks: + - id: editorconfig-checker + exclude: ^(LICENSE|allianceauth\/static\/css\/themes\/bootstrap-locals.less|allianceauth\/eveonline\/swagger.json|(.*.po)|(.*.mo)) diff --git a/.readthedocs.yml b/.readthedocs.yml index 6f00923b..a36db8a1 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -20,4 +20,4 @@ formats: all python: version: 3.7 install: - - requirements: docs/requirements.txt \ No newline at end of file + - requirements: docs/requirements.txt diff --git a/LICENSE b/LICENSE index d6a93266..d7f10513 100644 --- a/LICENSE +++ b/LICENSE @@ -337,4 +337,3 @@ proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. - diff --git a/allianceauth/authentication/admin.py b/allianceauth/authentication/admin.py index 5191981c..248a0c3c 100644 --- a/allianceauth/authentication/admin.py +++ b/allianceauth/authentication/admin.py @@ -84,7 +84,7 @@ class UserProfileInline(admin.StackedInline): if request.user.is_superuser: query |= Q(userprofile__isnull=True) else: - query |= Q(character_ownership__user=obj) + query |= Q(character_ownership__user=obj) formset = super().get_formset(request, obj=obj, **kwargs) def get_kwargs(self, index): @@ -123,26 +123,26 @@ def user_username(obj): works for both User objects and objects with `user` as FK to User To be used for all user based admin lists - """ + """ link = reverse( 'admin:{}_{}_change'.format( obj._meta.app_label, type(obj).__name__.lower() - ), + ), args=(obj.pk,) ) user_obj = obj.user if hasattr(obj, 'user') else obj if user_obj.profile.main_character: return format_html( '{}
{}', - link, + link, user_obj.username, user_obj.profile.main_character.character_name ) else: return format_html( '{}', - link, + link, user_obj.username, ) @@ -160,16 +160,16 @@ def user_main_organization(obj): user_obj = obj.user if hasattr(obj, 'user') else obj if not user_obj.profile.main_character: result = None - else: + else: corporation = user_obj.profile.main_character.corporation_name - if user_obj.profile.main_character.alliance_id: + if user_obj.profile.main_character.alliance_id: result = format_html( '{}
{}', - corporation, + corporation, user_obj.profile.main_character.alliance_name ) else: - result = corporation + result = corporation return result @@ -200,7 +200,7 @@ class MainCorporationsFilter(admin.SimpleListFilter): def queryset(self, request, qs): if self.value() is None: return qs.all() - else: + else: if qs.model == User: return qs.filter( profile__main_character__corporation_id=self.value() @@ -209,7 +209,7 @@ class MainCorporationsFilter(admin.SimpleListFilter): return qs.filter( user__profile__main_character__corporation_id=self.value() ) - + class MainAllianceFilter(admin.SimpleListFilter): """Custom filter to filter on alliances from mains only @@ -234,16 +234,16 @@ class MainAllianceFilter(admin.SimpleListFilter): def queryset(self, request, qs): if self.value() is None: return qs.all() - else: + else: if qs.model == User: - return qs.filter(profile__main_character__alliance_id=self.value()) + return qs.filter(profile__main_character__alliance_id=self.value()) else: return qs.filter( user__profile__main_character__alliance_id=self.value() ) - -def update_main_character_model(modeladmin, request, queryset): + +def update_main_character_model(modeladmin, request, queryset): tasks_count = 0 for obj in queryset: if obj.profile.main_character: @@ -251,7 +251,7 @@ def update_main_character_model(modeladmin, request, queryset): tasks_count += 1 modeladmin.message_user( - request, + request, 'Update from ESI started for {} characters'.format(tasks_count) ) @@ -262,7 +262,7 @@ update_main_character_model.short_description = \ class UserAdmin(BaseUserAdmin): """Extending Django's UserAdmin model - + Behavior of groups and characters columns can be configured via settings """ @@ -270,7 +270,7 @@ class UserAdmin(BaseUserAdmin): css = { "all": ("authentication/css/admin.css",) } - + def get_queryset(self, request): qs = super().get_queryset(request) return qs.prefetch_related("character_ownerships__character", "groups") @@ -279,8 +279,8 @@ class UserAdmin(BaseUserAdmin): actions = super(BaseUserAdmin, self).get_actions(request) actions[update_main_character_model.__name__] = ( - update_main_character_model, - update_main_character_model.__name__, + update_main_character_model, + update_main_character_model.__name__, update_main_character_model.short_description ) @@ -290,21 +290,21 @@ class UserAdmin(BaseUserAdmin): if svc.update_groups.__module__ != ServicesHook.update_groups.__module__: action = make_service_hooks_update_groups_action(svc) actions[action.__name__] = ( - action, + action, action.__name__, action.short_description ) - + # Create sync nickname action if service implements it if svc.sync_nickname.__module__ != ServicesHook.sync_nickname.__module__: action = make_service_hooks_sync_nickname_action(svc) actions[action.__name__] = ( - action, action.__name__, + action, action.__name__, action.short_description ) return actions - def _list_2_html_w_tooltips(self, my_items: list, max_items: int) -> str: + def _list_2_html_w_tooltips(self, my_items: list, max_items: int) -> str: """converts list of strings into HTML with cutoff and tooltip""" items_truncated_str = ', '.join(my_items[:max_items]) if not my_items: @@ -320,27 +320,27 @@ class UserAdmin(BaseUserAdmin): items_truncated_str ) return result - + inlines = BaseUserAdmin.inlines + [UserProfileInline] - ordering = ('username', ) + ordering = ('username', ) list_select_related = ('profile__state', 'profile__main_character') - show_full_result_count = True + show_full_result_count = True list_display = ( user_profile_pic, - user_username, - '_state', + user_username, + '_state', '_groups', user_main_organization, '_characters', 'is_active', 'date_joined', '_role' - ) + ) list_display_links = None - list_filter = ( + list_filter = ( 'profile__state', - 'groups', - MainCorporationsFilter, + 'groups', + MainCorporationsFilter, MainAllianceFilter, 'is_active', 'date_joined', @@ -348,32 +348,32 @@ class UserAdmin(BaseUserAdmin): 'is_superuser' ) search_fields = ( - 'username', + 'username', 'character_ownerships__character__character_name' ) - + def _characters(self, obj): character_ownerships = list(obj.character_ownerships.all()) characters = [obj.character.character_name for obj in character_ownerships] return self._list_2_html_w_tooltips( - sorted(characters), + sorted(characters), AUTHENTICATION_ADMIN_USERS_MAX_CHARS ) - + _characters.short_description = 'characters' - + def _state(self, obj): return obj.profile.state.name - + _state.short_description = 'state' _state.admin_order_field = 'profile__state' - def _groups(self, obj): + def _groups(self, obj): my_groups = sorted([group.name for group in list(obj.groups.all())]) return self._list_2_html_w_tooltips( my_groups, AUTHENTICATION_ADMIN_USERS_MAX_GROUPS ) - + _groups.short_description = 'groups' def _role(self, obj): @@ -382,11 +382,11 @@ class UserAdmin(BaseUserAdmin): elif obj.is_staff: role = 'Staff' else: - role = 'User' + role = 'User' return role - + _role.short_description = 'role' - + def has_change_permission(self, request, obj=None): return request.user.has_perm('auth.change_user') @@ -404,10 +404,10 @@ class UserAdmin(BaseUserAdmin): @admin.register(State) -class StateAdmin(admin.ModelAdmin): +class StateAdmin(admin.ModelAdmin): list_select_related = True list_display = ('name', 'priority', '_user_count') - + def get_queryset(self, request): qs = super().get_queryset(request) return qs.annotate(user_count=Count("userprofile__id")) @@ -423,17 +423,17 @@ class StateAdmin(admin.ModelAdmin): }), ('Membership', { 'fields': ( - 'public', - 'member_characters', - 'member_corporations', + 'public', + 'member_characters', + 'member_corporations', 'member_alliances' ), }) ) filter_horizontal = [ - 'member_characters', - 'member_corporations', - 'member_alliances', + 'member_characters', + 'member_corporations', + 'member_alliances', 'permissions' ] @@ -463,16 +463,16 @@ class StateAdmin(admin.ModelAdmin): }), ) return super(StateAdmin, self).get_fieldsets(request, obj=obj) - + class BaseOwnershipAdmin(admin.ModelAdmin): class Media: css = { "all": ("authentication/css/admin.css",) } - + list_select_related = ( - 'user__profile__state', 'user__profile__main_character', 'character') + 'user__profile__state', 'user__profile__main_character', 'character') list_display = ( user_profile_pic, user_username, @@ -480,13 +480,13 @@ class BaseOwnershipAdmin(admin.ModelAdmin): 'character', ) search_fields = ( - 'user__username', - 'character__character_name', - 'character__corporation_name', + 'user__username', + 'character__character_name', + 'character__corporation_name', 'character__alliance_name' ) - list_filter = ( - MainCorporationsFilter, + list_filter = ( + MainCorporationsFilter, MainAllianceFilter, ) diff --git a/allianceauth/authentication/app_settings.py b/allianceauth/authentication/app_settings.py index 9494953f..449bef08 100644 --- a/allianceauth/authentication/app_settings.py +++ b/allianceauth/authentication/app_settings.py @@ -2,14 +2,14 @@ from django.conf import settings def _clean_setting( - name: str, - default_value: object, + name: str, + default_value: object, min_value: int = None, max_value: int = None, required_type: type = None ): """cleans the input for a custom setting - + Will use `default_value` if settings does not exit or has the wrong type or is outside define boundaries (for int only) @@ -18,22 +18,22 @@ def _clean_setting( Will assume `min_value` of 0 for int (can be overriden) Returns cleaned value for setting - """ + """ if default_value is None and not required_type: raise ValueError('You must specify a required_type for None defaults') - + if not required_type: required_type = type(default_value) if min_value is None and required_type == int: - min_value = 0 - + min_value = 0 + if (hasattr(settings, name) and isinstance(getattr(settings, name), required_type) and (min_value is None or getattr(settings, name) >= min_value) and (max_value is None or getattr(settings, name) <= max_value) - ): - return getattr(settings, name) + ): + return getattr(settings, name) else: return default_value @@ -43,4 +43,3 @@ AUTHENTICATION_ADMIN_USERS_MAX_GROUPS = \ AUTHENTICATION_ADMIN_USERS_MAX_CHARS = \ _clean_setting('AUTHENTICATION_ADMIN_USERS_MAX_CHARS', 5) - diff --git a/allianceauth/authentication/backends.py b/allianceauth/authentication/backends.py index f6fb2e0d..d0cecf4a 100644 --- a/allianceauth/authentication/backends.py +++ b/allianceauth/authentication/backends.py @@ -12,9 +12,9 @@ logger = logging.getLogger(__name__) class StateBackend(ModelBackend): @staticmethod def _get_state_permissions(user_obj): - """returns permissions for state of given user object""" + """returns permissions for state of given user object""" if hasattr(user_obj, "profile") and user_obj.profile: - return Permission.objects.filter(state=user_obj.profile.state) + return Permission.objects.filter(state=user_obj.profile.state) else: return Permission.objects.none() diff --git a/allianceauth/authentication/hmac_urls.py b/allianceauth/authentication/hmac_urls.py index a4d225d7..edf7b973 100644 --- a/allianceauth/authentication/hmac_urls.py +++ b/allianceauth/authentication/hmac_urls.py @@ -11,4 +11,4 @@ urlpatterns = [ url(r'^register/complete/$', views.registration_complete, name='registration_complete'), url(r'^register/closed/$', views.registration_closed, name='registration_disallowed'), url(r'', include('django.contrib.auth.urls')), -] \ No newline at end of file +] diff --git a/allianceauth/authentication/managers.py b/allianceauth/authentication/managers.py index b97963a6..3b2e8ed0 100755 --- a/allianceauth/authentication/managers.py +++ b/allianceauth/authentication/managers.py @@ -23,8 +23,7 @@ class CharacterOwnershipManager(Manager): def create_by_token(self, token): if not EveCharacter.objects.filter(character_id=token.character_id).exists(): EveCharacter.objects.create_character(token.character_id) - return self.create(character=EveCharacter.objects.get(character_id=token.character_id), user=token.user, - owner_hash=token.character_owner_hash) + return self.create(character=EveCharacter.objects.get(character_id=token.character_id), user=token.user, owner_hash=token.character_owner_hash) class StateQuerySet(QuerySet): diff --git a/allianceauth/authentication/migrations/0001_initial.py b/allianceauth/authentication/migrations/0001_initial.py index 8c5f1f2a..3f9454e6 100644 --- a/allianceauth/authentication/migrations/0001_initial.py +++ b/allianceauth/authentication/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-05 21:38 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0002_auto_20160907_1914.py b/allianceauth/authentication/migrations/0002_auto_20160907_1914.py index c6614a92..8045e83e 100644 --- a/allianceauth/authentication/migrations/0002_auto_20160907_1914.py +++ b/allianceauth/authentication/migrations/0002_auto_20160907_1914.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-07 19:14 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0003_authservicesinfo_state.py b/allianceauth/authentication/migrations/0003_authservicesinfo_state.py index cac17cd3..9ac14c83 100644 --- a/allianceauth/authentication/migrations/0003_authservicesinfo_state.py +++ b/allianceauth/authentication/migrations/0003_authservicesinfo_state.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-09 20:29 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0004_create_permissions.py b/allianceauth/authentication/migrations/0004_create_permissions.py index 3dc4acfb..f63928fa 100644 --- a/allianceauth/authentication/migrations/0004_create_permissions.py +++ b/allianceauth/authentication/migrations/0004_create_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-09 23:19 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0005_delete_perms.py b/allianceauth/authentication/migrations/0005_delete_perms.py index e10f4253..a674c95c 100644 --- a/allianceauth/authentication/migrations/0005_delete_perms.py +++ b/allianceauth/authentication/migrations/0005_delete_perms.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-09 23:11 from __future__ import unicode_literals @@ -17,7 +16,7 @@ def create_permissions(apps, schema_editor): Permission = apps.get_model('auth', 'Permission') ct = ContentType.objects.get_for_model(User) Permission.objects.get_or_create(codename="member", content_type=ct, name="member") - Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member") + Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member") class Migration(migrations.Migration): diff --git a/allianceauth/authentication/migrations/0006_auto_20160910_0542.py b/allianceauth/authentication/migrations/0006_auto_20160910_0542.py index d7a24797..0bdd3498 100644 --- a/allianceauth/authentication/migrations/0006_auto_20160910_0542.py +++ b/allianceauth/authentication/migrations/0006_auto_20160910_0542.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-10 05:42 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0007_remove_authservicesinfo_is_blue.py b/allianceauth/authentication/migrations/0007_remove_authservicesinfo_is_blue.py index 037c2092..8150d6b8 100644 --- a/allianceauth/authentication/migrations/0007_remove_authservicesinfo_is_blue.py +++ b/allianceauth/authentication/migrations/0007_remove_authservicesinfo_is_blue.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-10 21:50 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0008_set_state.py b/allianceauth/authentication/migrations/0008_set_state.py index 8951bcba..039409bd 100644 --- a/allianceauth/authentication/migrations/0008_set_state.py +++ b/allianceauth/authentication/migrations/0008_set_state.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-12 13:04 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0009_auto_20161021_0228.py b/allianceauth/authentication/migrations/0009_auto_20161021_0228.py index 5123ac22..853a01db 100644 --- a/allianceauth/authentication/migrations/0009_auto_20161021_0228.py +++ b/allianceauth/authentication/migrations/0009_auto_20161021_0228.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-10-21 02:28 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0010_only_one_authservicesinfo.py b/allianceauth/authentication/migrations/0010_only_one_authservicesinfo.py index c93c5387..b08e5283 100644 --- a/allianceauth/authentication/migrations/0010_only_one_authservicesinfo.py +++ b/allianceauth/authentication/migrations/0010_only_one_authservicesinfo.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2017-01-07 06:47 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0011_authservicesinfo_user_onetoonefield.py b/allianceauth/authentication/migrations/0011_authservicesinfo_user_onetoonefield.py index ef83dbec..ef694024 100644 --- a/allianceauth/authentication/migrations/0011_authservicesinfo_user_onetoonefield.py +++ b/allianceauth/authentication/migrations/0011_authservicesinfo_user_onetoonefield.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2017-01-07 07:11 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0012_remove_add_delete_authservicesinfo_permissions.py b/allianceauth/authentication/migrations/0012_remove_add_delete_authservicesinfo_permissions.py index 0ba0fdf0..208ea120 100644 --- a/allianceauth/authentication/migrations/0012_remove_add_delete_authservicesinfo_permissions.py +++ b/allianceauth/authentication/migrations/0012_remove_add_delete_authservicesinfo_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-01-12 00:59 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0013_service_modules.py b/allianceauth/authentication/migrations/0013_service_modules.py index 450aa339..c7801dbd 100644 --- a/allianceauth/authentication/migrations/0013_service_modules.py +++ b/allianceauth/authentication/migrations/0013_service_modules.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-11 23:14 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0014_fleetup_permission.py b/allianceauth/authentication/migrations/0014_fleetup_permission.py index 48f1aee1..cfe60109 100644 --- a/allianceauth/authentication/migrations/0014_fleetup_permission.py +++ b/allianceauth/authentication/migrations/0014_fleetup_permission.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-09 23:19 from __future__ import unicode_literals diff --git a/allianceauth/authentication/migrations/0015_user_profiles.py b/allianceauth/authentication/migrations/0015_user_profiles.py index 983871b5..dccd1808 100644 --- a/allianceauth/authentication/migrations/0015_user_profiles.py +++ b/allianceauth/authentication/migrations/0015_user_profiles.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-03-22 23:09 from __future__ import unicode_literals @@ -107,8 +106,8 @@ def populate_ownerships(apps, schema_editor): EveCharacter = apps.get_model('eveonline', 'EveCharacter') unique_character_owners = [t['character_id'] for t in - Token.objects.all().values('character_id').annotate(n=models.Count('user')) if - t['n'] == 1 and EveCharacter.objects.filter(character_id=t['character_id']).exists()] + Token.objects.all().values('character_id').annotate(n=models.Count('user')) if + t['n'] == 1 and EveCharacter.objects.filter(character_id=t['character_id']).exists()] tokens = Token.objects.filter(character_id__in=unique_character_owners) for c_id in unique_character_owners: @@ -171,8 +170,7 @@ def recreate_authservicesinfo(apps, schema_editor): # repopulate main characters for profile in UserProfile.objects.exclude(main_character__isnull=True).select_related('user', 'main_character'): - AuthServicesInfo.objects.update_or_create(user=profile.user, - defaults={'main_char_id': profile.main_character.character_id}) + AuthServicesInfo.objects.update_or_create(user=profile.user, defaults={'main_char_id': profile.main_character.character_id}) # repopulate states we understand for profile in UserProfile.objects.exclude(state__name='Guest').filter( diff --git a/allianceauth/authentication/migrations/0017_remove_fleetup_permission.py b/allianceauth/authentication/migrations/0017_remove_fleetup_permission.py index 819eac7f..f83b7a6a 100644 --- a/allianceauth/authentication/migrations/0017_remove_fleetup_permission.py +++ b/allianceauth/authentication/migrations/0017_remove_fleetup_permission.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import migrations diff --git a/allianceauth/authentication/models.py b/allianceauth/authentication/models.py index c71721ef..3fcb3b44 100755 --- a/allianceauth/authentication/models.py +++ b/allianceauth/authentication/models.py @@ -14,15 +14,11 @@ logger = logging.getLogger(__name__) class State(models.Model): name = models.CharField(max_length=20, unique=True) permissions = models.ManyToManyField(Permission, blank=True) - priority = models.IntegerField(unique=True, - help_text="Users get assigned the state with the highest priority available to them.") + priority = models.IntegerField(unique=True, help_text="Users get assigned the state with the highest priority available to them.") - member_characters = models.ManyToManyField(EveCharacter, blank=True, - help_text="Characters to which this state is available.") - member_corporations = models.ManyToManyField(EveCorporationInfo, blank=True, - help_text="Corporations to whose members this state is available.") - member_alliances = models.ManyToManyField(EveAllianceInfo, blank=True, - help_text="Alliances to whose members this state is available.") + member_characters = models.ManyToManyField(EveCharacter, blank=True, help_text="Characters to which this state is available.") + member_corporations = models.ManyToManyField(EveCorporationInfo, blank=True, help_text="Corporations to whose members this state is available.") + member_alliances = models.ManyToManyField(EveAllianceInfo, blank=True, help_text="Alliances to whose members this state is available.") public = models.BooleanField(default=False, help_text="Make this state available to any character.") objects = StateManager() @@ -74,7 +70,7 @@ class UserProfile(models.Model): logger.info('Updating {} state to {}'.format(self.user, self.state)) self.save(update_fields=['state']) notify( - self.user, + self.user, _('State changed to: %s' % state), _('Your user\'s state is now: %(state)s') % ({'state': state}), @@ -114,4 +110,4 @@ class OwnershipRecord(models.Model): ordering = ['-created'] def __str__(self): - return "%s: %s on %s" % (self.user, self.character, self.created) \ No newline at end of file + return "%s: %s on %s" % (self.user, self.character, self.created) diff --git a/allianceauth/authentication/signals.py b/allianceauth/authentication/signals.py index 2667ec8d..335a1c00 100644 --- a/allianceauth/authentication/signals.py +++ b/allianceauth/authentication/signals.py @@ -75,8 +75,7 @@ def create_required_models(sender, instance, created, *args, **kwargs): @receiver(post_save, sender=Token) def record_character_ownership(sender, instance, created, *args, **kwargs): if created: - logger.debug('New token for {0} character {1} saved. Evaluating ownership.'.format(instance.user, - instance.character_name)) + logger.debug('New token for {0} character {1} saved. Evaluating ownership.'.format(instance.user, instance.character_name)) if instance.user: query = Q(owner_hash=instance.character_owner_hash) & Q(user=instance.user) else: @@ -85,18 +84,14 @@ def record_character_ownership(sender, instance, created, *args, **kwargs): CharacterOwnership.objects.filter(character__character_id=instance.character_id).exclude(query).delete() # create character if needed if EveCharacter.objects.filter(character_id=instance.character_id).exists() is False: - logger.debug('Token is for a new character. Creating model for {0} ({1})'.format(instance.character_name, - instance.character_id)) + logger.debug('Token is for a new character. Creating model for {0} ({1})'.format(instance.character_name, instance.character_id)) EveCharacter.objects.create_character(instance.character_id) char = EveCharacter.objects.get(character_id=instance.character_id) # check if we need to create ownership if instance.user and not CharacterOwnership.objects.filter( character__character_id=instance.character_id).exists(): - logger.debug("Character {0} is not yet owned. Assigning ownership to {1}".format(instance.character_name, - instance.user)) - CharacterOwnership.objects.update_or_create(character=char, - defaults={'owner_hash': instance.character_owner_hash, - 'user': instance.user}) + logger.debug("Character {0} is not yet owned. Assigning ownership to {1}".format(instance.character_name, instance.user)) + CharacterOwnership.objects.update_or_create(character=char, defaults={'owner_hash': instance.character_owner_hash, 'user': instance.user}) @receiver(pre_delete, sender=CharacterOwnership) @@ -156,4 +151,4 @@ def ownership_record_creation(sender, instance, created, *args, **kwargs): logger.debug("Already have ownership record of {0} by user {1}".format(instance.character, instance.user)) return logger.info("Character {0} has a new owner {1}. Creating ownership record.".format(instance.character, instance.user)) - OwnershipRecord.objects.create(user=instance.user, character=instance.character, owner_hash=instance.owner_hash) \ No newline at end of file + OwnershipRecord.objects.create(user=instance.user, character=instance.character, owner_hash=instance.owner_hash) diff --git a/allianceauth/authentication/static/authentication/css/admin.css b/allianceauth/authentication/static/authentication/css/admin.css index 489edd2e..7ea91049 100644 --- a/allianceauth/authentication/static/authentication/css/admin.css +++ b/allianceauth/authentication/static/authentication/css/admin.css @@ -1,12 +1,12 @@ -/* -CSS for allianceauth admin site +/* +CSS for allianceauth admin site */ /* styling for profile pic */ -.img-circle { - border-radius: 50%; +.img-circle { + border-radius: 50%; } -.column-user_profile_pic { +.column-user_profile_pic { width: 1px; white-space: nowrap; } @@ -26,4 +26,4 @@ CSS for allianceauth admin site color: black ; background-color: rgb(255, 255, 204) ; z-index: 1 ; -} \ No newline at end of file +} diff --git a/allianceauth/authentication/templates/authentication/dashboard.html b/allianceauth/authentication/templates/authentication/dashboard.html index d4401aa1..49dfa762 100644 --- a/allianceauth/authentication/templates/authentication/dashboard.html +++ b/allianceauth/authentication/templates/authentication/dashboard.html @@ -63,7 +63,7 @@ {% endif %} -
+

@@ -74,7 +74,7 @@ {{ main.corporation_name }}
{{ main.alliance_name }}

-
+
{% endwith %} {% else %} -
+
@@ -132,20 +132,20 @@ - {% for char in characters %} + {% for char in characters %} - + {% endfor %} - {% for char in characters %} + {% for char in characters %} + {% endfor %} diff --git a/allianceauth/authentication/templates/public/login.html b/allianceauth/authentication/templates/public/login.html index 80d31979..9a7921e7 100644 --- a/allianceauth/authentication/templates/public/login.html +++ b/allianceauth/authentication/templates/public/login.html @@ -1,8 +1,8 @@ {% extends 'public/middle_box.html' %} {% load static %} {% block page_title %}Login{% endblock %} -{% block middle_box_content %} +{% block middle_box_content %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/allianceauth/authentication/templates/public/middle_box.html b/allianceauth/authentication/templates/public/middle_box.html index ab478cbc..005e86bf 100644 --- a/allianceauth/authentication/templates/public/middle_box.html +++ b/allianceauth/authentication/templates/public/middle_box.html @@ -21,4 +21,4 @@ {% endblock %} {% block extra_include %} {% include 'bundles/bootstrap-js.html' %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/allianceauth/authentication/templates/registration/activation_email.txt b/allianceauth/authentication/templates/registration/activation_email.txt index f43505db..028fbd2b 100644 --- a/allianceauth/authentication/templates/registration/activation_email.txt +++ b/allianceauth/authentication/templates/registration/activation_email.txt @@ -10,4 +10,4 @@ Link not working? Try copy/pasting this URL into your browser: This link will expire in {{ expiration_days }} day(s). -If this was not you, it is safe to ignore this email. \ No newline at end of file +If this was not you, it is safe to ignore this email. diff --git a/allianceauth/authentication/templates/registration/activation_email_subject.txt b/allianceauth/authentication/templates/registration/activation_email_subject.txt index 5719bb9a..18f7c162 100644 --- a/allianceauth/authentication/templates/registration/activation_email_subject.txt +++ b/allianceauth/authentication/templates/registration/activation_email_subject.txt @@ -1 +1 @@ -Confirm your Alliance Auth account email address \ No newline at end of file +Confirm your Alliance Auth account email address diff --git a/allianceauth/authentication/tests/test_admin.py b/allianceauth/authentication/tests/test_admin.py index b43da12b..41d5a88b 100644 --- a/allianceauth/authentication/tests/test_admin.py +++ b/allianceauth/authentication/tests/test_admin.py @@ -16,15 +16,15 @@ from allianceauth.tests.auth_utils import AuthUtils from ..admin import ( BaseUserAdmin, - CharacterOwnershipAdmin, + CharacterOwnershipAdmin, StateAdmin, MainCorporationsFilter, MainAllianceFilter, OwnershipRecordAdmin, User, - UserAdmin, + UserAdmin, user_main_organization, - user_profile_pic, + user_profile_pic, user_username, update_main_character_model, make_service_hooks_update_groups_action, @@ -36,7 +36,7 @@ from . import get_admin_change_view_url, get_admin_search_url MODULE_PATH = 'allianceauth.authentication.admin' -class MockRequest(object): +class MockRequest(object): def __init__(self, user=None): self.user = user @@ -51,7 +51,7 @@ class TestCaseWithTestData(TestCase): EveAllianceInfo, EveCorporationInfo, EveCharacter, Group, User ]: MyModel.objects.all().delete() - + # groups cls.group_1 = Group.objects.create( name='Group 1' @@ -84,16 +84,16 @@ class TestCaseWithTestData(TestCase): alliance = EveAllianceInfo.objects.create( alliance_id=3001, alliance_name='Wayne Enterprises', - alliance_ticker='WE', + alliance_ticker='WE', executor_corp_id=2001 ) EveCorporationInfo.objects.create( corporation_id=2001, corporation_name='Wayne Technologies', - corporation_ticker='WT', + corporation_ticker='WT', member_count=42, alliance=alliance - ) + ) cls.user_1 = User.objects.create_user( character_1.character_name.replace(' ', '_'), 'abc@example.com', @@ -111,7 +111,7 @@ class TestCaseWithTestData(TestCase): ) cls.user_1.profile.main_character = character_1 cls.user_1.profile.save() - cls.user_1.groups.add(cls.group_1) + cls.user_1.groups.add(cls.group_1) # user 2 - corp only, staff character_2 = EveCharacter.objects.create( @@ -125,7 +125,7 @@ class TestCaseWithTestData(TestCase): EveCorporationInfo.objects.create( corporation_id=2002, corporation_name='Daily Plane', - corporation_ticker='DP', + corporation_ticker='DP', member_count=99, alliance=None ) @@ -144,7 +144,7 @@ class TestCaseWithTestData(TestCase): cls.user_2.groups.add(cls.group_2) cls.user_2.is_staff = True cls.user_2.save() - + # user 3 - no main, no group, superuser character_3 = EveCharacter.objects.create( character_id=1101, @@ -157,7 +157,7 @@ class TestCaseWithTestData(TestCase): EveCorporationInfo.objects.create( corporation_id=2101, corporation_name='Lex Corp', - corporation_ticker='LC', + corporation_ticker='LC', member_count=666, alliance=None ) @@ -186,25 +186,25 @@ def make_generic_search_request(ModelClass: type, search_term: str): username='superuser', password='secret', email='admin@example.com' ) c = Client() - c.login(username='superuser', password='secret') + c.login(username='superuser', password='secret') return c.get( '%s?q=%s' % (get_admin_search_url(ModelClass), quote(search_term)) - ) + ) class TestCharacterOwnershipAdmin(TestCaseWithTestData): - + def setUp(self): self.modeladmin = CharacterOwnershipAdmin( model=User, admin_site=AdminSite() ) - def test_change_view_loads_normally(self): + def test_change_view_loads_normally(self): User.objects.create_superuser( username='superuser', password='secret', email='admin@example.com' ) c = Client() - c.login(username='superuser', password='secret') + c.login(username='superuser', password='secret') ownership = self.user_1.character_ownerships.first() response = c.get(get_admin_change_view_url(ownership)) self.assertEqual(response.status_code, 200) @@ -219,18 +219,18 @@ class TestCharacterOwnershipAdmin(TestCaseWithTestData): class TestOwnershipRecordAdmin(TestCaseWithTestData): - + def setUp(self): self.modeladmin = OwnershipRecordAdmin( model=User, admin_site=AdminSite() ) - def test_change_view_loads_normally(self): + def test_change_view_loads_normally(self): User.objects.create_superuser( username='superuser', password='secret', email='admin@example.com' ) c = Client() - c.login(username='superuser', password='secret') + c.login(username='superuser', password='secret') ownership_record = OwnershipRecord.objects\ .filter(user=self.user_1)\ .first() @@ -245,23 +245,23 @@ class TestOwnershipRecordAdmin(TestCaseWithTestData): class TestStateAdmin(TestCaseWithTestData): - + def setUp(self): self.modeladmin = StateAdmin( model=User, admin_site=AdminSite() ) - def test_change_view_loads_normally(self): + def test_change_view_loads_normally(self): User.objects.create_superuser( username='superuser', password='secret', email='admin@example.com' ) c = Client() - c.login(username='superuser', password='secret') - + c.login(username='superuser', password='secret') + guest_state = AuthUtils.get_guest_state() response = c.get(get_admin_change_view_url(guest_state)) self.assertEqual(response.status_code, 200) - + member_state = AuthUtils.get_member_state() response = c.get(get_admin_change_view_url(member_state)) self.assertEqual(response.status_code, 200) @@ -281,12 +281,12 @@ class TestUserAdmin(TestCaseWithTestData): model=User, admin_site=AdminSite() ) self.character_1 = self.user_1.character_ownerships.first().character - + def test_user_profile_pic_u1(self): expected = ( '' - ) + ) self.assertEqual(user_profile_pic(self.user_1), expected) def test_user_profile_pic_u3(self): @@ -332,18 +332,18 @@ class TestUserAdmin(TestCaseWithTestData): expected = 'Lex Luthor' result = self.modeladmin._characters(self.user_3) self.assertEqual(result, expected) - - def test_groups_u1(self): + + def test_groups_u1(self): expected = 'Group 1' result = self.modeladmin._groups(self.user_1) self.assertEqual(result, expected) - def test_groups_u2(self): + def test_groups_u2(self): expected = 'Group 2' result = self.modeladmin._groups(self.user_2) self.assertEqual(result, expected) - - def test_groups_u3(self): + + def test_groups_u3(self): result = self.modeladmin._groups(self.user_3) self.assertIsNone(result) @@ -387,7 +387,7 @@ class TestUserAdmin(TestCaseWithTestData): expected = None result = self.modeladmin._list_2_html_w_tooltips(items, 5) self.assertEqual(expected, result) - + # actions @patch(MODULE_PATH + '.UserAdmin.message_user', auto_spec=True) @@ -401,14 +401,14 @@ class TestUserAdmin(TestCaseWithTestData): ) self.assertEqual(mock_task.delay.call_count, 2) self.assertTrue(mock_message_user.called) - + # filters - + def test_filter_main_corporations(self): - - class UserAdminTest(BaseUserAdmin): + + class UserAdminTest(BaseUserAdmin): list_filter = (MainCorporationsFilter,) - + my_modeladmin = UserAdminTest(User, AdminSite()) # Make sure the lookups are correct @@ -417,7 +417,7 @@ class TestUserAdmin(TestCaseWithTestData): changelist = my_modeladmin.get_changelist_instance(request) filters = changelist.get_filters(request) filterspec = filters[0][0] - expected = [ + expected = [ (2002, 'Daily Planet'), (2001, 'Wayne Technologies'), ] @@ -425,20 +425,20 @@ class TestUserAdmin(TestCaseWithTestData): # Make sure the correct queryset is returned request = self.factory.get( - '/', + '/', {'main_corporation_id__exact': self.character_1.corporation_id} ) - request.user = self.user_1 + request.user = self.user_1 changelist = my_modeladmin.get_changelist_instance(request) queryset = changelist.get_queryset(request) expected = [self.user_1] self.assertSetEqual(set(queryset), set(expected)) def test_filter_main_alliances(self): - - class UserAdminTest(BaseUserAdmin): + + class UserAdminTest(BaseUserAdmin): list_filter = (MainAllianceFilter,) - + my_modeladmin = UserAdminTest(User, AdminSite()) # Make sure the lookups are correct @@ -447,17 +447,17 @@ class TestUserAdmin(TestCaseWithTestData): changelist = my_modeladmin.get_changelist_instance(request) filters = changelist.get_filters(request) filterspec = filters[0][0] - expected = [ - (3001, 'Wayne Enterprises'), + expected = [ + (3001, 'Wayne Enterprises'), ] self.assertEqual(filterspec.lookup_choices, expected) # Make sure the correct queryset is returned request = self.factory.get( - '/', + '/', {'main_alliance_id__exact': self.character_1.alliance_id} ) - request.user = self.user_1 + request.user = self.user_1 changelist = my_modeladmin.get_changelist_instance(request) queryset = changelist.get_queryset(request) expected = [self.user_1] @@ -468,7 +468,7 @@ class TestUserAdmin(TestCaseWithTestData): username='superuser', password='secret', email='admin@example.com' ) c = Client() - c.login(username='superuser', password='secret') + c.login(username='superuser', password='secret') response = c.get(get_admin_change_view_url(self.user_1)) self.assertEqual(response.status_code, 200) @@ -485,8 +485,8 @@ class TestMakeServicesHooksActions(TestCaseWithTestData): def __init__(self): super().__init__() - self.name = 'My Service A' - + self.name = 'My Service A' + def update_groups(self, user): pass @@ -498,7 +498,7 @@ class TestMakeServicesHooksActions(TestCaseWithTestData): def __init__(self): super().__init__() self.name = 'My Service B' - + def update_groups(self, user): pass @@ -510,32 +510,32 @@ class TestMakeServicesHooksActions(TestCaseWithTestData): def sync_nicknames_bulk(self, user): pass - - def test_service_has_update_groups_only(self): + + def test_service_has_update_groups_only(self): service = self.MyServicesHookTypeA() - mock_service = MagicMock(spec=service) + mock_service = MagicMock(spec=service) action = make_service_hooks_update_groups_action(mock_service) action(MagicMock(), MagicMock(), [self.user_1]) self.assertTrue(mock_service.update_groups.called) - def test_service_has_update_groups_bulk(self): + def test_service_has_update_groups_bulk(self): service = self.MyServicesHookTypeB() - mock_service = MagicMock(spec=service) + mock_service = MagicMock(spec=service) action = make_service_hooks_update_groups_action(mock_service) action(MagicMock(), MagicMock(), [self.user_1]) self.assertFalse(mock_service.update_groups.called) self.assertTrue(mock_service.update_groups_bulk.called) - def test_service_has_sync_nickname_only(self): + def test_service_has_sync_nickname_only(self): service = self.MyServicesHookTypeA() - mock_service = MagicMock(spec=service) + mock_service = MagicMock(spec=service) action = make_service_hooks_sync_nickname_action(mock_service) action(MagicMock(), MagicMock(), [self.user_1]) self.assertTrue(mock_service.sync_nickname.called) - def test_service_has_sync_nicknames_bulk(self): + def test_service_has_sync_nicknames_bulk(self): service = self.MyServicesHookTypeB() - mock_service = MagicMock(spec=service) + mock_service = MagicMock(spec=service) action = make_service_hooks_sync_nickname_action(mock_service) action(MagicMock(), MagicMock(), [self.user_1]) self.assertFalse(mock_service.sync_nickname.called) diff --git a/allianceauth/authentication/tests/test_app_settings.py b/allianceauth/authentication/tests/test_app_settings.py index f941e411..8fa9d368 100644 --- a/allianceauth/authentication/tests/test_app_settings.py +++ b/allianceauth/authentication/tests/test_app_settings.py @@ -9,19 +9,19 @@ MODULE_PATH = 'allianceauth.authentication' class TestSetAppSetting(TestCase): @patch(MODULE_PATH + '.app_settings.settings') - def test_default_if_not_set(self, mock_settings): + def test_default_if_not_set(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = Mock(spec=None) result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', - False, + 'TEST_SETTING_DUMMY', + False, ) self.assertEqual(result, False) @patch(MODULE_PATH + '.app_settings.settings') - def test_default_if_not_set_for_none(self, mock_settings): + def test_default_if_not_set_for_none(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = Mock(spec=None) result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', None, required_type=int ) @@ -31,8 +31,8 @@ class TestSetAppSetting(TestCase): def test_true_stays_true(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = True result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', - False, + 'TEST_SETTING_DUMMY', + False, ) self.assertEqual(result, True) @@ -40,7 +40,7 @@ class TestSetAppSetting(TestCase): def test_false_stays_false(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = False result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', False ) self.assertEqual(result, False) @@ -49,7 +49,7 @@ class TestSetAppSetting(TestCase): def test_default_for_invalid_type_bool(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = 'invalid type' result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', False ) self.assertEqual(result, False) @@ -58,7 +58,7 @@ class TestSetAppSetting(TestCase): def test_default_for_invalid_type_int(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = 'invalid type' result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', 50 ) self.assertEqual(result, 50) @@ -67,7 +67,7 @@ class TestSetAppSetting(TestCase): def test_default_if_below_minimum_1(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = -5 result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', default_value=50 ) self.assertEqual(result, 50) @@ -76,7 +76,7 @@ class TestSetAppSetting(TestCase): def test_default_if_below_minimum_2(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = -50 result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', default_value=50, min_value=-10 ) @@ -86,7 +86,7 @@ class TestSetAppSetting(TestCase): def test_default_for_invalid_type_int(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = 1000 result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', default_value=50, max_value=100 ) @@ -97,6 +97,6 @@ class TestSetAppSetting(TestCase): mock_settings.TEST_SETTING_DUMMY = 'invalid type' with self.assertRaises(ValueError): result = app_settings._clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', default_value=None ) diff --git a/allianceauth/authentication/tests/test_backend.py b/allianceauth/authentication/tests/test_backend.py index 2a846c7c..212cae46 100644 --- a/allianceauth/authentication/tests/test_backend.py +++ b/allianceauth/authentication/tests/test_backend.py @@ -23,27 +23,27 @@ class TestStatePermissions(TestCase): self.permission_2 = AuthUtils.get_permission_by_name(PERMISSION_2) # group - self.group_1 = Group.objects.create(name="Group 1") + self.group_1 = Group.objects.create(name="Group 1") self.group_2 = Group.objects.create(name="Group 2") # state - self.state_1 = AuthUtils.get_member_state() + self.state_1 = AuthUtils.get_member_state() self.state_2 = AuthUtils.create_state("Other State", 75) - + # user self.user = AuthUtils.create_user("Bruce Wayne") self.main = AuthUtils.add_main_character_2(self.user, self.user.username, 123) def test_user_has_user_permissions(self): self.user.user_permissions.add(self.permission_1) - + user = User.objects.get(pk=self.user.pk) self.assertTrue(user.has_perm(PERMISSION_1)) - def test_user_has_group_permissions(self): + def test_user_has_group_permissions(self): self.group_1.permissions.add(self.permission_1) self.user.groups.add(self.group_1) - + user = User.objects.get(pk=self.user.pk) self.assertTrue(user.has_perm(PERMISSION_1)) @@ -55,7 +55,7 @@ class TestStatePermissions(TestCase): self.assertTrue(user.has_perm(PERMISSION_1)) def test_when_user_changes_state_perms_change_accordingly(self): - self.state_1.permissions.add(self.permission_1) + self.state_1.permissions.add(self.permission_1) self.state_1.member_characters.add(self.main) user = User.objects.get(pk=self.user.pk) self.assertTrue(user.has_perm(PERMISSION_1)) @@ -68,16 +68,16 @@ class TestStatePermissions(TestCase): self.assertTrue(user.has_perm(PERMISSION_2)) def test_state_permissions_are_returned_for_current_user_object(self): - # verify state permissions are returns for the current user object - # and not for it's instance in the database, which might be outdated + # verify state permissions are returns for the current user object + # and not for it's instance in the database, which might be outdated self.state_1.permissions.add(self.permission_1) - self.state_2.permissions.add(self.permission_2) + self.state_2.permissions.add(self.permission_2) self.state_1.member_characters.add(self.main) user = User.objects.get(pk=self.user.pk) user.profile.state = self.state_2 self.assertFalse(user.has_perm(PERMISSION_1)) self.assertTrue(user.has_perm(PERMISSION_2)) - + class TestAuthenticate(TestCase): @classmethod @@ -138,7 +138,7 @@ class TestAuthenticate(TestCase): def test_iterate_username(self): t = Token(character_id=self.unclaimed_character.character_id, - character_name=self.unclaimed_character.character_name, character_owner_hash='3') + character_name=self.unclaimed_character.character_name, character_owner_hash='3') username = StateBackend().authenticate(token=t).username t.character_owner_hash = '4' username_1 = StateBackend().authenticate(token=t).username diff --git a/allianceauth/authentication/tests/test_models.py b/allianceauth/authentication/tests/test_models.py index 60338806..485a3413 100644 --- a/allianceauth/authentication/tests/test_models.py +++ b/allianceauth/authentication/tests/test_models.py @@ -80,11 +80,11 @@ class StateTestCase(TestCase): def setUpTestData(cls): cls.user = AuthUtils.create_user('test_user', disconnect_signals=True) AuthUtils.add_main_character(cls.user, 'Test Character', '1', corp_id='1', alliance_id='1', - corp_name='Test Corp', alliance_name='Test Alliance') + corp_name='Test Corp', alliance_name='Test Alliance') cls.guest_state = get_guest_state() cls.test_character = EveCharacter.objects.get(character_id='1') cls.test_corporation = EveCorporationInfo.objects.create(corporation_id='1', corporation_name='Test Corp', - corporation_ticker='TEST', member_count=1) + corporation_ticker='TEST', member_count=1) cls.test_alliance = EveAllianceInfo.objects.create(alliance_id='1', alliance_name='Test Alliance', alliance_ticker='TEST', executor_corp_id='1') cls.member_state = State.objects.create( @@ -215,7 +215,7 @@ class CharacterOwnershipCheckTestCase(TestCase): def setUpTestData(cls): cls.user = AuthUtils.create_user('test_user', disconnect_signals=True) AuthUtils.add_main_character(cls.user, 'Test Character', '1', corp_id='1', alliance_id='1', - corp_name='Test Corp', alliance_name='Test Alliance') + corp_name='Test Corp', alliance_name='Test Alliance') cls.character = EveCharacter.objects.get(character_id=1) cls.token = Token.objects.create( user=cls.user, diff --git a/allianceauth/authentication/tests/test_templatetags.py b/allianceauth/authentication/tests/test_templatetags.py index 57b315b6..5409f840 100644 --- a/allianceauth/authentication/tests/test_templatetags.py +++ b/allianceauth/authentication/tests/test_templatetags.py @@ -10,9 +10,9 @@ from django.test import TestCase from allianceauth.templatetags.admin_status import ( status_overview, _fetch_list_from_gitlab, - _current_notifications, - _current_version_summary, - _fetch_notification_issues_from_gitlab, + _current_notifications, + _current_version_summary, + _fetch_notification_issues_from_gitlab, _latests_versions ) @@ -58,10 +58,10 @@ class TestStatusOverviewTag(TestCase): @patch(MODULE_PATH + '.admin_status.__version__', TEST_VERSION) @patch(MODULE_PATH + '.admin_status._fetch_celery_queue_length') @patch(MODULE_PATH + '.admin_status._current_version_summary') - @patch(MODULE_PATH + '.admin_status._current_notifications') + @patch(MODULE_PATH + '.admin_status._current_notifications') def test_status_overview( - self, - mock_current_notifications, + self, + mock_current_notifications, mock_current_version_info, mock_fetch_celery_queue_length ): @@ -82,7 +82,7 @@ class TestStatusOverviewTag(TestCase): } mock_current_version_info.return_value = version_info mock_fetch_celery_queue_length.return_value = 3 - + result = status_overview() expected = { 'notifications': GITHUB_NOTIFICATION_ISSUES[:5], @@ -111,7 +111,7 @@ class TestNotifications(TestCase): url = ( 'https://gitlab.com/api/v4/projects/allianceauth%2Fallianceauth/issues' '?labels=announcement' - ) + ) requests_mocker.get(url, json=GITHUB_NOTIFICATION_ISSUES) # when result = _fetch_notification_issues_from_gitlab() @@ -127,13 +127,13 @@ class TestNotifications(TestCase): # then self.assertEqual(result['notifications'], GITHUB_NOTIFICATION_ISSUES[:5]) - @requests_mock.mock() + @requests_mock.mock() def test_current_notifications_failed(self, requests_mocker): # given url = ( 'https://gitlab.com/api/v4/projects/allianceauth%2Fallianceauth/issues' '?labels=announcement' - ) + ) requests_mocker.get(url, status_code=404) # when result = _current_notifications() @@ -163,7 +163,7 @@ class TestVersionTags(TestCase): @patch(MODULE_PATH + '.admin_status.__version__', TEST_VERSION) @patch(MODULE_PATH + '.admin_status.cache') - def test_current_version_info_normal(self, mock_cache): + def test_current_version_info_normal(self, mock_cache): # given mock_cache.get_or_set.return_value = GITHUB_TAGS # when @@ -184,7 +184,7 @@ class TestVersionTags(TestCase): url = ( 'https://gitlab.com/api/v4/projects/allianceauth%2Fallianceauth' '/repository/tags' - ) + ) requests_mocker.get(url, status_code=500) # when result = _current_version_summary() @@ -197,7 +197,7 @@ class TestVersionTags(TestCase): url = ( 'https://gitlab.com/api/v4/projects/allianceauth%2Fallianceauth' '/repository/tags' - ) + ) requests_mocker.get(url, json=GITHUB_TAGS) # when result = _current_version_summary() @@ -208,7 +208,7 @@ class TestVersionTags(TestCase): @patch(MODULE_PATH + '.admin_status.cache') def test_current_version_info_return_no_data(self, mock_cache): # given - mock_cache.get_or_set.return_value = None + mock_cache.get_or_set.return_value = None # when result = _current_version_summary() # then @@ -218,7 +218,7 @@ class TestVersionTags(TestCase): class TestLatestsVersion(TestCase): def test_all_version_types_defined(self): - + tags = create_tags_list( ['2.1.1', '2.1.0', '2.0.0', '2.1.1a1', '1.1.1', '1.1.0', '1.0.0'] ) @@ -229,7 +229,7 @@ class TestLatestsVersion(TestCase): self.assertEqual(beta, Pep440Version('2.1.1a1')) def test_major_and_minor_not_defined_with_zero(self): - + tags = create_tags_list( ['2.1.2', '2.1.1', '2.0.1', '2.1.1a1', '1.1.1', '1.1.0', '1.0.0'] ) @@ -238,9 +238,9 @@ class TestLatestsVersion(TestCase): self.assertEqual(minor, Pep440Version('2.1.1')) self.assertEqual(patch, Pep440Version('2.1.2')) self.assertEqual(beta, Pep440Version('2.1.1a1')) - + def test_can_ignore_invalid_versions(self): - + tags = create_tags_list( ['2.1.1', '2.1.0', '2.0.0', '2.1.1a1', 'invalid'] ) @@ -252,9 +252,9 @@ class TestLatestsVersion(TestCase): class TestFetchListFromGitlab(TestCase): - + page_size = 2 - + def setUp(self): self.url = ( 'https://gitlab.com/api/v4/projects/allianceauth%2Fallianceauth' @@ -266,8 +266,8 @@ class TestFetchListFromGitlab(TestCase): page = int(request.qs['page'][0]) start = (page - 1) * cls.page_size end = start + cls.page_size - return GITHUB_TAGS[start:end] - + return GITHUB_TAGS[start:end] + @requests_mock.mock() def test_can_fetch_one_page_with_header(self, requests_mocker): headers = { @@ -279,7 +279,7 @@ class TestFetchListFromGitlab(TestCase): self.assertEqual(requests_mocker.call_count, 1) @requests_mock.mock() - def test_can_fetch_one_page_wo_header(self, requests_mocker): + def test_can_fetch_one_page_wo_header(self, requests_mocker): requests_mocker.get(self.url, json=GITHUB_TAGS) result = _fetch_list_from_gitlab(self.url) self.assertEqual(result, GITHUB_TAGS) @@ -296,7 +296,7 @@ class TestFetchListFromGitlab(TestCase): self.assertEqual(requests_mocker.call_count, 1) @requests_mock.mock() - def test_can_fetch_multiple_pages(self, requests_mocker): + def test_can_fetch_multiple_pages(self, requests_mocker): total_pages = ceil(len(GITHUB_TAGS) / self.page_size) headers = { 'x-total-pages': str(total_pages) @@ -307,7 +307,7 @@ class TestFetchListFromGitlab(TestCase): self.assertEqual(requests_mocker.call_count, total_pages) @requests_mock.mock() - def test_can_fetch_given_number_of_pages_only(self, requests_mocker): + def test_can_fetch_given_number_of_pages_only(self, requests_mocker): total_pages = ceil(len(GITHUB_TAGS) / self.page_size) headers = { 'x-total-pages': str(total_pages) diff --git a/allianceauth/authentication/urls.py b/allianceauth/authentication/urls.py index 11fee0b9..3f917f45 100644 --- a/allianceauth/authentication/urls.py +++ b/allianceauth/authentication/urls.py @@ -9,8 +9,8 @@ app_name = 'authentication' urlpatterns = [ url(r'^$', views.index, name='index'), url( - r'^account/login/$', - TemplateView.as_view(template_name='public/login.html'), + r'^account/login/$', + TemplateView.as_view(template_name='public/login.html'), name='login' ), url( @@ -19,9 +19,9 @@ urlpatterns = [ name='change_main_character' ), url( - r'^account/characters/add/$', - views.add_character, + r'^account/characters/add/$', + views.add_character, name='add_character' - ), + ), url(r'^dashboard/$', views.dashboard, name='dashboard'), ] diff --git a/allianceauth/authentication/views.py b/allianceauth/authentication/views.py index 7645193b..b173ec9f 100644 --- a/allianceauth/authentication/views.py +++ b/allianceauth/authentication/views.py @@ -16,8 +16,8 @@ from esi.decorators import token_required from esi.models import Token from django_registration.backends.activation.views import ( - RegistrationView as BaseRegistrationView, - ActivationView as BaseActivationView, + RegistrationView as BaseRegistrationView, + ActivationView as BaseActivationView, REGISTRATION_SALT ) from django_registration.signals import user_registered @@ -52,7 +52,7 @@ def dashboard(request): .filter(character_ownership__user=request.user)\ .select_related()\ .order_by('character_name') - + context = { 'groups': groups, 'characters': characters @@ -71,7 +71,7 @@ def main_character_change(request, token): co = CharacterOwnership.objects.create_by_token(token) else: messages.error( - request, + request, _('Cannot change main character to %(char)s: character owned by a different account.') % ({'char': token.character_name}) ) co = None @@ -138,7 +138,7 @@ class RegistrationView(BaseRegistrationView): template_name = "public/register.html" email_body_template = "registration/activation_email.txt" email_subject_template = "registration/activation_email_subject.txt" - success_url = reverse_lazy('registration_complete') + success_url = reverse_lazy('registration_complete') def get_success_url(self, user): if not getattr(settings, 'REGISTRATION_VERIFY_EMAIL', True): @@ -181,12 +181,12 @@ class RegistrationView(BaseRegistrationView): # Step 3 class ActivationView(BaseActivationView): template_name = "registration/activate.html" - success_url = reverse_lazy('registration_activation_complete') - + success_url = reverse_lazy('registration_activation_complete') + def validate_key(self, activation_key): try: dump = signing.loads(activation_key, salt=REGISTRATION_SALT, - max_age=settings.ACCOUNT_ACTIVATION_DAYS * 86400) + max_age=settings.ACCOUNT_ACTIVATION_DAYS * 86400) return dump except signing.BadSignature: return None diff --git a/allianceauth/corputils/admin.py b/allianceauth/corputils/admin.py index 10a112ee..e0cdda66 100644 --- a/allianceauth/corputils/admin.py +++ b/allianceauth/corputils/admin.py @@ -3,4 +3,4 @@ from django.contrib import admin from .models import CorpStats, CorpMember admin.site.register(CorpStats) -admin.site.register(CorpMember) \ No newline at end of file +admin.site.register(CorpMember) diff --git a/allianceauth/corputils/auth_hooks.py b/allianceauth/corputils/auth_hooks.py index e7e419b5..e8afc8b6 100644 --- a/allianceauth/corputils/auth_hooks.py +++ b/allianceauth/corputils/auth_hooks.py @@ -6,11 +6,13 @@ from allianceauth.corputils import urls class CorpStats(MenuItemHook): def __init__(self): - MenuItemHook.__init__(self, - _('Corporation Stats'), - 'fas fa-share-alt fa-fw', - 'corputils:view', - navactive=['corputils:']) + MenuItemHook.__init__( + self, + _('Corporation Stats'), + 'fas fa-share-alt fa-fw', + 'corputils:view', + navactive=['corputils:'] + ) def render(self, request): if request.user.has_perm('corputils.view_corp_corpstats') or request.user.has_perm( diff --git a/allianceauth/corputils/managers.py b/allianceauth/corputils/managers.py index 640cf170..8607b613 100644 --- a/allianceauth/corputils/managers.py +++ b/allianceauth/corputils/managers.py @@ -37,7 +37,7 @@ class CorpStatsQuerySet(models.QuerySet): return self.filter(query) except AssertionError: logger.debug('User %s has no main character. No corpstats visible.' % user) - return self.none() + return self.none() class CorpStatsManager(models.Manager): diff --git a/allianceauth/corputils/migrations/0001_initial.py b/allianceauth/corputils/migrations/0001_initial.py index 4fa10a4a..7da61bdd 100644 --- a/allianceauth/corputils/migrations/0001_initial.py +++ b/allianceauth/corputils/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-12-14 21:36 from __future__ import unicode_literals diff --git a/allianceauth/corputils/migrations/0002_migrate_permissions.py b/allianceauth/corputils/migrations/0002_migrate_permissions.py index 4650bbc9..2c0e462d 100644 --- a/allianceauth/corputils/migrations/0002_migrate_permissions.py +++ b/allianceauth/corputils/migrations/0002_migrate_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-12-14 21:48 from __future__ import unicode_literals diff --git a/allianceauth/corputils/migrations/0003_granular_permissions.py b/allianceauth/corputils/migrations/0003_granular_permissions.py index ad985985..8256106d 100644 --- a/allianceauth/corputils/migrations/0003_granular_permissions.py +++ b/allianceauth/corputils/migrations/0003_granular_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-03-22 23:35 from __future__ import unicode_literals diff --git a/allianceauth/corputils/migrations/0004_member_models.py b/allianceauth/corputils/migrations/0004_member_models.py index d73c4f61..83b6b546 100644 --- a/allianceauth/corputils/migrations/0004_member_models.py +++ b/allianceauth/corputils/migrations/0004_member_models.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-03-26 20:13 from __future__ import unicode_literals @@ -13,8 +12,7 @@ def convert_json_to_members(apps, schema_editor): for cs in CorpStats.objects.all(): members = json.loads(cs._members) CorpMember.objects.bulk_create( - [CorpMember(corpstats=cs, character_id=member_id, character_name=member_name) for member_id, member_name in - members.items()] + [CorpMember(corpstats=cs, character_id=member_id, character_name=member_name) for member_id, member_name in members.items()] ) diff --git a/allianceauth/corputils/migrations/0005_cleanup_permissions.py b/allianceauth/corputils/migrations/0005_cleanup_permissions.py index 21676e9e..27f8d73f 100644 --- a/allianceauth/corputils/migrations/0005_cleanup_permissions.py +++ b/allianceauth/corputils/migrations/0005_cleanup_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.2 on 2017-06-10 15:34 from __future__ import unicode_literals diff --git a/allianceauth/corputils/models.py b/allianceauth/corputils/models.py index d39e819b..8d7c6628 100644 --- a/allianceauth/corputils/models.py +++ b/allianceauth/corputils/models.py @@ -6,8 +6,7 @@ from bravado.exception import HTTPForbidden from django.db import models from esi.errors import TokenError from esi.models import Token -from allianceauth.eveonline.models import EveCorporationInfo, EveCharacter,\ - EveAllianceInfo +from allianceauth.eveonline.models import EveCorporationInfo, EveCharacter, EveAllianceInfo from allianceauth.notifications import notify from allianceauth.corputils.managers import CorpStatsManager @@ -49,8 +48,7 @@ class CorpStats(models.Model): def update(self): try: c = self.token.get_esi_client(spec_file=SWAGGER_SPEC_PATH) - assert c.Character.get_characters_character_id(character_id=self.token.character_id).result()[ - 'corporation_id'] == int(self.corp.corporation_id) + assert c.Character.get_characters_character_id(character_id=self.token.character_id).result()['corporation_id'] == int(self.corp.corporation_id) member_ids = c.Corporation.get_corporations_corporation_id_members( corporation_id=self.corp.corporation_id).result() @@ -58,18 +56,15 @@ class CorpStats(models.Model): # the swagger spec doesn't have a maxItems count # manual testing says we can do over 350, but let's not risk it member_id_chunks = [member_ids[i:i + 255] for i in range(0, len(member_ids), 255)] - member_name_chunks = [c.Universe.post_universe_names(ids=id_chunk).result() for id_chunk in - member_id_chunks] + member_name_chunks = [c.Universe.post_universe_names(ids=id_chunk).result() for id_chunk in member_id_chunks] member_list = {} for name_chunk in member_name_chunks: member_list.update({m['id']: m['name'] for m in name_chunk}) # bulk create new member models - missing_members = [m_id for m_id in member_ids if - not CorpMember.objects.filter(corpstats=self, character_id=m_id).exists()] + missing_members = [m_id for m_id in member_ids if not CorpMember.objects.filter(corpstats=self, character_id=m_id).exists()] CorpMember.objects.bulk_create( - [CorpMember(character_id=m_id, character_name=member_list[m_id], corpstats=self) for m_id in - missing_members]) + [CorpMember(character_id=m_id, character_name=member_list[m_id], corpstats=self) for m_id in missing_members]) # purge old members self.members.exclude(character_id__in=member_ids).delete() @@ -80,21 +75,22 @@ class CorpStats(models.Model): except TokenError as e: logger.warning("%s failed to update: %s" % (self, e)) if self.token.user: - notify(self.token.user, "%s failed to update with your ESI token." % self, - message="Your token has expired or is no longer valid. Please add a new one to create a new CorpStats.", - level="error") + notify( + self.token.user, "%s failed to update with your ESI token." % self, + message="Your token has expired or is no longer valid. Please add a new one to create a new CorpStats.", + level="error") self.delete() except HTTPForbidden as e: logger.warning("%s failed to update: %s" % (self, e)) if self.token.user: - notify(self.token.user, "%s failed to update with your ESI token." % self, - message="%s: %s" % (e.status_code, e.message), level="error") + notify(self.token.user, "%s failed to update with your ESI token." % self, message="%s: %s" % (e.status_code, e.message), level="error") self.delete() except AssertionError: logger.warning("%s token character no longer in corp." % self) if self.token.user: - notify(self.token.user, "%s cannot update with your ESI token." % self, - message="%s cannot update with your ESI token as you have left corp." % self, level="error") + notify( + self.token.user, "%s cannot update with your ESI token." % self, + message="%s cannot update with your ESI token as you have left corp." % self, level="error") self.delete() @property @@ -127,9 +123,7 @@ class CorpStats(models.Model): @property def mains(self): - return self.members.filter(pk__in=[m.pk for m in self.members.all() if - m.main_character and int(m.main_character.character_id) == int( - m.character_id)]) + return self.members.filter(pk__in=[m.pk for m in self.members.all() if m.main_character and int(m.main_character.character_id) == int(m.character_id)]) def visible_to(self, user): return CorpStats.objects.filter(pk=self.pk).visible_to(user).exists() diff --git a/allianceauth/corputils/swagger.json b/allianceauth/corputils/swagger.json index c28a479c..501ae192 100644 --- a/allianceauth/corputils/swagger.json +++ b/allianceauth/corputils/swagger.json @@ -1 +1 @@ -{"basePath":"/latest","consumes":["application/json"],"definitions":{"bad_request":{"description":"Bad request model","properties":{"error":{"description":"Bad request message","type":"string"}},"required":["error"],"title":"Bad request","type":"object"},"error_limited":{"description":"Error limited model","properties":{"error":{"description":"Error limited message","type":"string"}},"required":["error"],"title":"Error limited","type":"object"},"forbidden":{"description":"Forbidden model","properties":{"error":{"description":"Forbidden message","type":"string"},"sso_status":{"description":"status code received from SSO","type":"integer"}},"required":["error"],"title":"Forbidden","type":"object"},"gateway_timeout":{"description":"Gateway timeout model","properties":{"error":{"description":"Gateway timeout message","type":"string"},"timeout":{"description":"number of seconds the request was given","type":"integer"}},"required":["error"],"title":"Gateway timeout","type":"object"},"internal_server_error":{"description":"Internal server error model","properties":{"error":{"description":"Internal server error message","type":"string"}},"required":["error"],"title":"Internal server error","type":"object"},"service_unavailable":{"description":"Service unavailable model","properties":{"error":{"description":"Service unavailable message","type":"string"}},"required":["error"],"title":"Service unavailable","type":"object"},"unauthorized":{"description":"Unauthorized model","properties":{"error":{"description":"Unauthorized message","type":"string"}},"required":["error"],"title":"Unauthorized","type":"object"}},"host":"esi.evetech.net","info":{"description":"An OpenAPI for EVE Online","title":"EVE Swagger Interface","version":"1.3.8"},"parameters":{"Accept-Language":{"default":"en-us","description":"Language to use in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"in":"header","name":"Accept-Language","type":"string"},"If-None-Match":{"description":"ETag from a previous request. A 304 will be returned if this matches the current ETag","in":"header","name":"If-None-Match","type":"string"},"alliance_id":{"description":"An EVE alliance ID","format":"int32","in":"path","minimum":1,"name":"alliance_id","required":true,"type":"integer"},"character_id":{"description":"An EVE character ID","format":"int32","in":"path","minimum":1,"name":"character_id","required":true,"type":"integer"},"corporation_id":{"description":"An EVE corporation ID","format":"int32","in":"path","minimum":1,"name":"corporation_id","required":true,"type":"integer"},"datasource":{"default":"tranquility","description":"The server name you would like data from","enum":["tranquility"],"in":"query","name":"datasource","type":"string"},"language":{"default":"en-us","description":"Language to use in the response, takes precedence over Accept-Language","enum":["de","en-us","fr","ja","ru","zh","ko"],"in":"query","name":"language","type":"string"},"page":{"default":1,"description":"Which page of results to return","format":"int32","in":"query","minimum":1,"name":"page","type":"integer"},"token":{"description":"Access token to use if unable to set a header","in":"query","name":"token","type":"string"}},"paths":{"/alliances/":{"get":{"description":"List all active player alliances\n\n---\nAlternate route: `/dev/alliances/`\n\nAlternate route: `/legacy/alliances/`\n\nAlternate route: `/v1/alliances/`\n\nAlternate route: `/v2/alliances/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_alliances","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"List of Alliance IDs","examples":{"application/json":[99000001,99000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","minimum":0,"title":"get_alliances_200_ok","type":"integer","uniqueItems":true},"maxItems":5000,"title":"get_alliances_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List all alliances","tags":["Alliance"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":3600}},"/alliances/{alliance_id}/":{"get":{"description":"Public information about an alliance\n\n---\nAlternate route: `/dev/alliances/{alliance_id}/`\n\nAlternate route: `/v3/alliances/{alliance_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_alliances_alliance_id","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Public data about an alliance","examples":{"application/json":{"creator_corporation_id":45678,"creator_id":12345,"date_founded":"2016-06-26T21:00:00Z","executor_corporation_id":98356193,"name":"C C P Alliance","ticker":""}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"creator_corporation_id":{"description":"ID of the corporation that created the alliance","format":"int32","title":"get_alliances_alliance_id_creator_corporation_id","type":"integer"},"creator_id":{"description":"ID of the character that created the alliance","format":"int32","title":"get_alliances_alliance_id_creator_id","type":"integer"},"date_founded":{"description":"date_founded string","format":"date-time","title":"get_alliances_alliance_id_date_founded","type":"string"},"executor_corporation_id":{"description":"the executor corporation ID, if this alliance is not closed","format":"int32","title":"get_alliances_alliance_id_executor_corporation_id","type":"integer"},"faction_id":{"description":"Faction ID this alliance is fighting for, if this alliance is enlisted in factional warfare","format":"int32","title":"get_alliances_alliance_id_faction_id","type":"integer"},"name":{"description":"the full name of the alliance","title":"get_alliances_alliance_id_name","type":"string"},"ticker":{"description":"the short name of the alliance","title":"get_alliances_alliance_id_ticker","type":"string"}},"required":["name","creator_id","creator_corporation_id","ticker","date_founded"],"title":"get_alliances_alliance_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Alliance not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_alliances_alliance_id_404_not_found","type":"string"}},"title":"get_alliances_alliance_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get alliance information","tags":["Alliance"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":3600}},"/alliances/{alliance_id}/contacts/":{"get":{"description":"Return contacts of an alliance\n\n---\nAlternate route: `/dev/alliances/{alliance_id}/contacts/`\n\nAlternate route: `/v2/alliances/{alliance_id}/contacts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_alliances_alliance_id_contacts","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contacts","examples":{"application/json":[{"contact_id":2112625428,"contact_type":"character","standing":9.9}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"contact_id":{"description":"contact_id integer","format":"int32","title":"get_alliances_alliance_id_contacts_contact_id","type":"integer"},"contact_type":{"description":"contact_type string","enum":["character","corporation","alliance","faction"],"title":"get_alliances_alliance_id_contacts_contact_type","type":"string"},"label_ids":{"description":"label_ids array","items":{"description":"Label IDs applied to the contact","format":"int64","title":"get_alliances_alliance_id_contacts_label_id","type":"integer"},"maxItems":63,"title":"get_alliances_alliance_id_contacts_label_ids","type":"array"},"standing":{"description":"Standing of the contact","format":"float","title":"get_alliances_alliance_id_contacts_standing","type":"number"}},"required":["standing","contact_type","contact_id"],"title":"get_alliances_alliance_id_contacts_200_ok","type":"object"},"maxItems":1000,"title":"get_alliances_alliance_id_contacts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-alliances.read_contacts.v1"]}],"summary":"Get alliance contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":300}},"/alliances/{alliance_id}/contacts/labels/":{"get":{"description":"Return custom labels for an alliance's contacts\n\n---\nAlternate route: `/dev/alliances/{alliance_id}/contacts/labels/`\n\nAlternate route: `/legacy/alliances/{alliance_id}/contacts/labels/`\n\nAlternate route: `/v1/alliances/{alliance_id}/contacts/labels/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_alliances_alliance_id_contacts_labels","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of alliance contact labels","examples":{"application/json":[{"label_id":1,"label_name":"Alliance Friends"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"label_id":{"description":"label_id integer","format":"int64","title":"get_alliances_alliance_id_contacts_labels_label_id","type":"integer"},"label_name":{"description":"label_name string","title":"get_alliances_alliance_id_contacts_labels_label_name","type":"string"}},"required":["label_id","label_name"],"title":"get_alliances_alliance_id_contacts_labels_200_ok","type":"object"},"maxItems":64,"title":"get_alliances_alliance_id_contacts_labels_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-alliances.read_contacts.v1"]}],"summary":"Get alliance contact labels","tags":["Contacts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/alliances/{alliance_id}/corporations/":{"get":{"description":"List all current member corporations of an alliance\n\n---\nAlternate route: `/dev/alliances/{alliance_id}/corporations/`\n\nAlternate route: `/v1/alliances/{alliance_id}/corporations/`\n\nAlternate route: `/v2/alliances/{alliance_id}/corporations/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_alliances_alliance_id_corporations","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"List of corporation IDs","examples":{"application/json":[98000001]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","minimum":0,"title":"get_alliances_alliance_id_corporations_200_ok","type":"integer","uniqueItems":true},"maxItems":1000,"title":"get_alliances_alliance_id_corporations_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List alliance's corporations","tags":["Alliance"],"x-alternate-versions":["dev","v1","v2"],"x-cached-seconds":3600}},"/alliances/{alliance_id}/icons/":{"get":{"description":"Get the icon urls for a alliance\n\n---\nAlternate route: `/legacy/alliances/{alliance_id}/icons/`\n\nAlternate route: `/v1/alliances/{alliance_id}/icons/`\n\n---\nThis route expires daily at 11:05\n\n---\n[Diff of the upcoming changes](https://esi.evetech.net/diff/latest/dev/#GET-/alliances/{alliance_id}/icons/)","operationId":"get_alliances_alliance_id_icons","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Icon URLs for the given alliance id and server","examples":{"application/json":{"px128x128":"https://images.evetech.net/Alliance/503818424_128.png","px64x64":"https://images.evetech.net/Alliance/503818424_64.png"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"px128x128":{"description":"px128x128 string","title":"get_alliances_alliance_id_icons_px128x128","type":"string"},"px64x64":{"description":"px64x64 string","title":"get_alliances_alliance_id_icons_px64x64","type":"string"}},"title":"get_alliances_alliance_id_icons_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No image server for this datasource","examples":{"application/json":{"error":"No image server for this datasource"}},"schema":{"description":"No image server for this datasource","properties":{"error":{"description":"error message","title":"get_alliances_alliance_id_icons_error","type":"string"}},"title":"get_alliances_alliance_id_icons_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get alliance icon","tags":["Alliance"],"x-alternate-versions":["legacy","v1"]}},"/characters/affiliation/":{"post":{"description":"Bulk lookup of character IDs to corporation, alliance and faction\n\n---\nAlternate route: `/dev/characters/affiliation/`\n\nAlternate route: `/legacy/characters/affiliation/`\n\nAlternate route: `/v1/characters/affiliation/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"post_characters_affiliation","parameters":[{"description":"The character IDs to fetch affiliations for. All characters must exist, or none will be returned","in":"body","name":"characters","required":true,"schema":{"description":"characters array","items":{"description":"character integer","format":"int32","title":"post_characters_affiliation_character","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_characters_affiliation_characters","type":"array","uniqueItems":true}},{"$ref":"#/parameters/datasource"}],"responses":{"200":{"description":"Character corporation, alliance and faction IDs","examples":{"application/json":[{"alliance_id":434243723,"character_id":95538921,"corporation_id":109299958}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"The character's alliance ID, if their corporation is in an alliance","format":"int32","title":"post_characters_affiliation_alliance_id","type":"integer"},"character_id":{"description":"The character's ID","format":"int32","title":"post_characters_affiliation_character_id","type":"integer"},"corporation_id":{"description":"The character's corporation ID","format":"int32","title":"post_characters_affiliation_corporation_id","type":"integer"},"faction_id":{"description":"The character's faction ID, if their corporation is in a faction","format":"int32","title":"post_characters_affiliation_faction_id","type":"integer"}},"required":["character_id","corporation_id"],"title":"post_characters_affiliation_200_ok","type":"object"},"maxItems":1000,"title":"post_characters_affiliation_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No characters found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_characters_affiliation_404_not_found","type":"string"}},"title":"post_characters_affiliation_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Character affiliation","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/":{"get":{"description":"Public information about a character\n\n---\nAlternate route: `/dev/characters/{character_id}/`\n\nAlternate route: `/v4/characters/{character_id}/`\n\n---\nThis route is cached for up to 86400 seconds","operationId":"get_characters_character_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Public data for the given character","examples":{"application/json":{"ancestry_id":19,"birthday":"2015-03-24T11:37:00Z","bloodline_id":3,"corporation_id":109299958,"description":"","gender":"male","name":"CCP Bartender","race_id":2,"title":"All round pretty awesome guy"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"alliance_id":{"description":"The character's alliance ID","format":"int32","title":"get_characters_character_id_alliance_id","type":"integer"},"ancestry_id":{"description":"ancestry_id integer","format":"int32","title":"get_characters_character_id_ancestry_id","type":"integer"},"birthday":{"description":"Creation date of the character","format":"date-time","title":"get_characters_character_id_birthday","type":"string"},"bloodline_id":{"description":"bloodline_id integer","format":"int32","title":"get_characters_character_id_bloodline_id","type":"integer"},"corporation_id":{"description":"The character's corporation ID","format":"int32","title":"get_characters_character_id_corporation_id","type":"integer"},"description":{"description":"description string","title":"get_characters_character_id_description","type":"string"},"faction_id":{"description":"ID of the faction the character is fighting for, if the character is enlisted in Factional Warfare","format":"int32","title":"get_characters_character_id_faction_id","type":"integer"},"gender":{"description":"gender string","enum":["female","male"],"title":"get_characters_character_id_gender","type":"string"},"name":{"description":"name string","title":"get_characters_character_id_name","type":"string"},"race_id":{"description":"race_id integer","format":"int32","title":"get_characters_character_id_race_id","type":"integer"},"security_status":{"description":"security_status number","format":"float","maximum":10,"minimum":-10,"title":"get_characters_character_id_security_status","type":"number"},"title":{"description":"The individual title of the character","title":"get_characters_character_id_title","type":"string"}},"required":["corporation_id","birthday","name","gender","race_id","bloodline_id"],"title":"get_characters_character_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Character not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_404_not_found","type":"string"}},"title":"get_characters_character_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get character's public information","tags":["Character"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":86400}},"/characters/{character_id}/agents_research/":{"get":{"description":"Return a list of agents research information for a character. The formula for finding the current research points with an agent is: currentPoints = remainderPoints + pointsPerDay * days(currentTime - researchStartDate)\n\n---\nAlternate route: `/dev/characters/{character_id}/agents_research/`\n\nAlternate route: `/legacy/characters/{character_id}/agents_research/`\n\nAlternate route: `/v1/characters/{character_id}/agents_research/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_agents_research","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of agents research information","examples":{"application/json":[{"agent_id":3009358,"points_per_day":53.5346162146776,"remainder_points":53604.0634303189,"skill_type_id":11450,"started_at":"2017-03-23T14:47:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"agent_id":{"description":"agent_id integer","format":"int32","title":"get_characters_character_id_agents_research_agent_id","type":"integer"},"points_per_day":{"description":"points_per_day number","format":"float","title":"get_characters_character_id_agents_research_points_per_day","type":"number"},"remainder_points":{"description":"remainder_points number","format":"float","title":"get_characters_character_id_agents_research_remainder_points","type":"number"},"skill_type_id":{"description":"skill_type_id integer","format":"int32","title":"get_characters_character_id_agents_research_skill_type_id","type":"integer"},"started_at":{"description":"started_at string","format":"date-time","title":"get_characters_character_id_agents_research_started_at","type":"string"}},"required":["agent_id","skill_type_id","started_at","points_per_day","remainder_points"],"title":"get_characters_character_id_agents_research_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_agents_research_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_agents_research.v1"]}],"summary":"Get agents research","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/assets/":{"get":{"description":"Return a list of the characters assets\n\n---\nAlternate route: `/dev/characters/{character_id}/assets/`\n\nAlternate route: `/v4/characters/{character_id}/assets/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_assets","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A flat list of the users assets","examples":{"application/json":[{"is_blueprint_copy":true,"is_singleton":true,"item_id":1000000016835,"location_flag":"Hangar","location_id":60002959,"location_type":"station","quantity":1,"type_id":3516}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_blueprint_copy":{"description":"is_blueprint_copy boolean","title":"get_characters_character_id_assets_is_blueprint_copy","type":"boolean"},"is_singleton":{"description":"is_singleton boolean","title":"get_characters_character_id_assets_is_singleton","type":"boolean"},"item_id":{"description":"item_id integer","format":"int64","title":"get_characters_character_id_assets_item_id","type":"integer"},"location_flag":{"description":"location_flag string","enum":["AssetSafety","AutoFit","BoosterBay","Cargo","CorpseBay","Deliveries","DroneBay","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","FleetHangar","FrigateEscapeBay","Hangar","HangarAll","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","HiddenModifiers","Implant","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","Locked","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","QuafeBay","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","ShipHangar","Skill","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedFuelBay","SpecializedGasHold","SpecializedIndustrialShipHold","SpecializedLargeShipHold","SpecializedMaterialBay","SpecializedMediumShipHold","SpecializedMineralHold","SpecializedOreHold","SpecializedPlanetaryCommoditiesHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","SubSystemBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","Unlocked","Wardrobe"],"title":"get_characters_character_id_assets_location_flag","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_characters_character_id_assets_location_id","type":"integer"},"location_type":{"description":"location_type string","enum":["station","solar_system","item","other"],"title":"get_characters_character_id_assets_location_type","type":"string"},"quantity":{"description":"quantity integer","format":"int32","title":"get_characters_character_id_assets_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_assets_type_id","type":"integer"}},"required":["type_id","quantity","location_id","location_type","item_id","location_flag","is_singleton"],"title":"get_characters_character_id_assets_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_assets_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_assets.v1"]}],"summary":"Get character assets","tags":["Assets"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":3600}},"/characters/{character_id}/assets/locations/":{"post":{"description":"Return locations for a set of item ids, which you can get from character assets endpoint. Coordinates for items in hangars or stations are set to (0,0,0)\n\n---\nAlternate route: `/dev/characters/{character_id}/assets/locations/`\n\nAlternate route: `/v2/characters/{character_id}/assets/locations/`\n","operationId":"post_characters_character_id_assets_locations","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"A list of item ids","in":"body","name":"item_ids","required":true,"schema":{"description":"item_ids array","items":{"description":"item_id integer","format":"int64","title":"post_characters_character_id_assets_locations_item_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_characters_character_id_assets_locations_item_ids","type":"array","uniqueItems":true}},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of asset locations","examples":{"application/json":[{"item_id":12345,"position":{"x":1.2,"y":2.3,"z":-3.4}}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"post_characters_character_id_assets_locations_item_id","type":"integer"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"post_characters_character_id_assets_locations_x","type":"number"},"y":{"description":"y number","format":"double","title":"post_characters_character_id_assets_locations_y","type":"number"},"z":{"description":"z number","format":"double","title":"post_characters_character_id_assets_locations_z","type":"number"}},"required":["x","y","z"],"title":"post_characters_character_id_assets_locations_position","type":"object"}},"required":["item_id","position"],"title":"post_characters_character_id_assets_locations_200_ok","type":"object"},"maxItems":1000,"title":"post_characters_character_id_assets_locations_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_assets.v1"]}],"summary":"Get character asset locations","tags":["Assets"],"x-alternate-versions":["dev","v2"]}},"/characters/{character_id}/assets/names/":{"post":{"description":"Return names for a set of item ids, which you can get from character assets endpoint. Typically used for items that can customize names, like containers or ships.\n\n---\nAlternate route: `/dev/characters/{character_id}/assets/names/`\n\nAlternate route: `/legacy/characters/{character_id}/assets/names/`\n\nAlternate route: `/v1/characters/{character_id}/assets/names/`\n","operationId":"post_characters_character_id_assets_names","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"A list of item ids","in":"body","name":"item_ids","required":true,"schema":{"description":"item_ids array","items":{"description":"item_id integer","format":"int64","title":"post_characters_character_id_assets_names_item_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_characters_character_id_assets_names_item_ids","type":"array","uniqueItems":true}},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of asset names","examples":{"application/json":[{"item_id":12345,"name":"Awesome Name"}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"post_characters_character_id_assets_names_item_id","type":"integer"},"name":{"description":"name string","title":"post_characters_character_id_assets_names_name","type":"string"}},"required":["item_id","name"],"title":"post_characters_character_id_assets_names_200_ok","type":"object"},"maxItems":1000,"title":"post_characters_character_id_assets_names_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_assets.v1"]}],"summary":"Get character asset names","tags":["Assets"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/attributes/":{"get":{"description":"Return attributes of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/attributes/`\n\nAlternate route: `/legacy/characters/{character_id}/attributes/`\n\nAlternate route: `/v1/characters/{character_id}/attributes/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_attributes","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Attributes of a character","examples":{"application/json":{"charisma":20,"intelligence":20,"memory":20,"perception":20,"willpower":20}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"accrued_remap_cooldown_date":{"description":"Neural remapping cooldown after a character uses remap accrued over time","format":"date-time","title":"get_characters_character_id_attributes_accrued_remap_cooldown_date","type":"string"},"bonus_remaps":{"description":"Number of available bonus character neural remaps","format":"int32","title":"get_characters_character_id_attributes_bonus_remaps","type":"integer"},"charisma":{"description":"charisma integer","format":"int32","title":"get_characters_character_id_attributes_charisma","type":"integer"},"intelligence":{"description":"intelligence integer","format":"int32","title":"get_characters_character_id_attributes_intelligence","type":"integer"},"last_remap_date":{"description":"Datetime of last neural remap, including usage of bonus remaps","format":"date-time","title":"get_characters_character_id_attributes_last_remap_date","type":"string"},"memory":{"description":"memory integer","format":"int32","title":"get_characters_character_id_attributes_memory","type":"integer"},"perception":{"description":"perception integer","format":"int32","title":"get_characters_character_id_attributes_perception","type":"integer"},"willpower":{"description":"willpower integer","format":"int32","title":"get_characters_character_id_attributes_willpower","type":"integer"}},"required":["charisma","intelligence","memory","perception","willpower"],"title":"get_characters_character_id_attributes_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-skills.read_skills.v1"]}],"summary":"Get character attributes","tags":["Skills"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":120}},"/characters/{character_id}/blueprints/":{"get":{"description":"Return a list of blueprints the character owns\n\n---\nAlternate route: `/dev/characters/{character_id}/blueprints/`\n\nAlternate route: `/v2/characters/{character_id}/blueprints/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_blueprints","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of blueprints","examples":{"application/json":[{"item_id":1000000010495,"location_flag":"Hangar","location_id":60014719,"material_efficiency":0,"quantity":1,"runs":-1,"time_efficiency":0,"type_id":691}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"Unique ID for this item.","format":"int64","title":"get_characters_character_id_blueprints_item_id","type":"integer"},"location_flag":{"description":"Type of the location_id","enum":["AutoFit","Cargo","CorpseBay","DroneBay","FleetHangar","Deliveries","HiddenModifiers","Hangar","HangarAll","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","AssetSafety","Locked","Unlocked","Implant","QuafeBay","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","ShipHangar","SpecializedFuelBay","SpecializedOreHold","SpecializedGasHold","SpecializedMineralHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","SpecializedMediumShipHold","SpecializedLargeShipHold","SpecializedIndustrialShipHold","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedPlanetaryCommoditiesHold","SpecializedMaterialBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","Module"],"title":"get_characters_character_id_blueprints_location_flag","type":"string"},"location_id":{"description":"References a station, a ship or an item_id if this blueprint is located within a container. If the return value is an item_id, then the Character AssetList API must be queried to find the container using the given item_id to determine the correct location of the Blueprint.","format":"int64","title":"get_characters_character_id_blueprints_location_id","type":"integer"},"material_efficiency":{"description":"Material Efficiency Level of the blueprint.","format":"int32","maximum":25,"minimum":0,"title":"get_characters_character_id_blueprints_material_efficiency","type":"integer"},"quantity":{"description":"A range of numbers with a minimum of -2 and no maximum value where -1 is an original and -2 is a copy. It can be a positive integer if it is a stack of blueprint originals fresh from the market (e.g. no activities performed on them yet).","format":"int32","minimum":-2,"title":"get_characters_character_id_blueprints_quantity","type":"integer"},"runs":{"description":"Number of runs remaining if the blueprint is a copy, -1 if it is an original.","format":"int32","minimum":-1,"title":"get_characters_character_id_blueprints_runs","type":"integer"},"time_efficiency":{"description":"Time Efficiency Level of the blueprint.","format":"int32","maximum":20,"minimum":0,"title":"get_characters_character_id_blueprints_time_efficiency","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_blueprints_type_id","type":"integer"}},"required":["item_id","type_id","location_id","location_flag","quantity","time_efficiency","material_efficiency","runs"],"title":"get_characters_character_id_blueprints_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_blueprints_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_blueprints.v1"]}],"summary":"Get blueprints","tags":["Character"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/characters/{character_id}/bookmarks/":{"get":{"description":"A list of your character's personal bookmarks\n\n---\nAlternate route: `/dev/characters/{character_id}/bookmarks/`\n\nAlternate route: `/v2/characters/{character_id}/bookmarks/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_bookmarks","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of bookmarks","examples":{"application/json":[{"bookmark_id":4,"created":"2016-08-09T11:57:47Z","creator_id":2112625428,"folder_id":5,"item":{"item_id":50006722,"type_id":29633},"label":"Stargate","location_id":30003430,"notes":"This is a stargate"},{"bookmark_id":5,"coordinates":{"x":-2958928814000,"y":-338367275823,"z":2114538075090},"created":"2016-08-09T11:57:47Z","creator_id":2112625428,"folder_id":5,"label":"Random location","location_id":30003430,"notes":"This is a random location in space"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"bookmark_id":{"description":"bookmark_id integer","format":"int32","title":"get_characters_character_id_bookmarks_bookmark_id","type":"integer"},"coordinates":{"description":"Optional object that is returned if a bookmark was made on a planet or a random location in space.","properties":{"x":{"description":"x number","format":"double","title":"get_characters_character_id_bookmarks_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_characters_character_id_bookmarks_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_characters_character_id_bookmarks_z","type":"number"}},"required":["x","y","z"],"title":"get_characters_character_id_bookmarks_coordinates","type":"object"},"created":{"description":"created string","format":"date-time","title":"get_characters_character_id_bookmarks_created","type":"string"},"creator_id":{"description":"creator_id integer","format":"int32","title":"get_characters_character_id_bookmarks_creator_id","type":"integer"},"folder_id":{"description":"folder_id integer","format":"int32","title":"get_characters_character_id_bookmarks_folder_id","type":"integer"},"item":{"description":"Optional object that is returned if a bookmark was made on a particular item.","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"get_characters_character_id_bookmarks_item_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_bookmarks_type_id","type":"integer"}},"required":["item_id","type_id"],"title":"get_characters_character_id_bookmarks_item","type":"object"},"label":{"description":"label string","title":"get_characters_character_id_bookmarks_label","type":"string"},"location_id":{"description":"location_id integer","format":"int32","title":"get_characters_character_id_bookmarks_location_id","type":"integer"},"notes":{"description":"notes string","title":"get_characters_character_id_bookmarks_notes","type":"string"}},"required":["bookmark_id","created","label","notes","location_id","creator_id"],"title":"get_characters_character_id_bookmarks_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_bookmarks_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-bookmarks.read_character_bookmarks.v1"]}],"summary":"List bookmarks","tags":["Bookmarks"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/characters/{character_id}/bookmarks/folders/":{"get":{"description":"A list of your character's personal bookmark folders\n\n---\nAlternate route: `/dev/characters/{character_id}/bookmarks/folders/`\n\nAlternate route: `/v2/characters/{character_id}/bookmarks/folders/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_bookmarks_folders","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of bookmark folders","examples":{"application/json":[{"folder_id":5,"name":"Icecream"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"folder_id":{"description":"folder_id integer","format":"int32","title":"get_characters_character_id_bookmarks_folders_folder_id","type":"integer"},"name":{"description":"name string","title":"get_characters_character_id_bookmarks_folders_name","type":"string"}},"required":["folder_id","name"],"title":"get_characters_character_id_bookmarks_folders_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_bookmarks_folders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-bookmarks.read_character_bookmarks.v1"]}],"summary":"List bookmark folders","tags":["Bookmarks"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/characters/{character_id}/calendar/":{"get":{"description":"Get 50 event summaries from the calendar. If no from_event ID is given, the resource will return the next 50 chronological event summaries from now. If a from_event ID is specified, it will return the next 50 chronological event summaries from after that event\n\n---\nAlternate route: `/dev/characters/{character_id}/calendar/`\n\nAlternate route: `/legacy/characters/{character_id}/calendar/`\n\nAlternate route: `/v1/characters/{character_id}/calendar/`\n\nAlternate route: `/v2/characters/{character_id}/calendar/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_characters_character_id_calendar","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The event ID to retrieve events from","format":"int32","in":"query","name":"from_event","required":false,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A collection of event summaries","examples":{"application/json":[{"event_date":"2016-06-26T20:00:00Z","event_id":1386435,"event_response":"accepted","importance":0,"title":"o7 The EVE Online Show"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Up to 50 events from now or the event you requested","items":{"description":"event","properties":{"event_date":{"description":"event_date string","format":"date-time","title":"get_characters_character_id_calendar_event_date","type":"string"},"event_id":{"description":"event_id integer","format":"int32","title":"get_characters_character_id_calendar_event_id","type":"integer"},"event_response":{"description":"event_response string","enum":["declined","not_responded","accepted","tentative"],"title":"get_characters_character_id_calendar_event_response","type":"string"},"importance":{"description":"importance integer","format":"int32","title":"get_characters_character_id_calendar_importance","type":"integer"},"title":{"description":"title string","title":"get_characters_character_id_calendar_title","type":"string"}},"title":"get_characters_character_id_calendar_200_ok","type":"object"},"maxItems":50,"title":"get_characters_character_id_calendar_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-calendar.read_calendar_events.v1"]}],"summary":"List calendar event summaries","tags":["Calendar"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":5}},"/characters/{character_id}/calendar/{event_id}/":{"get":{"description":"Get all the information for a specific event\n\n---\nAlternate route: `/dev/characters/{character_id}/calendar/{event_id}/`\n\nAlternate route: `/v3/characters/{character_id}/calendar/{event_id}/`\n\nAlternate route: `/v4/characters/{character_id}/calendar/{event_id}/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_characters_character_id_calendar_event_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The id of the event requested","format":"int32","in":"path","name":"event_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Full details of a specific event","examples":{"application/json":{"date":"2016-06-26T21:00:00Z","duration":60,"event_id":1386435,"importance":1,"owner_id":1,"owner_name":"EVE System","owner_type":"eve_server","response":"Undecided","text":"o7: The EVE Online Show features latest developer news, fast paced action, community overviews and a lot more with CCP Guard and CCP Mimic. Join the thrilling o7 live broadcast at 20:00 EVE time (=UTC) on EVE TV. Don't miss it!","title":"o7 The EVE Online Show"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Full details of a specific event","properties":{"date":{"description":"date string","format":"date-time","title":"get_characters_character_id_calendar_event_id_date","type":"string"},"duration":{"description":"Length in minutes","format":"int32","title":"get_characters_character_id_calendar_event_id_duration","type":"integer"},"event_id":{"description":"event_id integer","format":"int32","title":"get_characters_character_id_calendar_event_id_event_id","type":"integer"},"importance":{"description":"importance integer","format":"int32","title":"get_characters_character_id_calendar_event_id_importance","type":"integer"},"owner_id":{"description":"owner_id integer","format":"int32","title":"get_characters_character_id_calendar_event_id_owner_id","type":"integer"},"owner_name":{"description":"owner_name string","title":"get_characters_character_id_calendar_event_id_owner_name","type":"string"},"owner_type":{"description":"owner_type string","enum":["eve_server","corporation","faction","character","alliance"],"title":"get_characters_character_id_calendar_event_id_owner_type","type":"string"},"response":{"description":"response string","title":"get_characters_character_id_calendar_event_id_response","type":"string"},"text":{"description":"text string","title":"get_characters_character_id_calendar_event_id_text","type":"string"},"title":{"description":"title string","title":"get_characters_character_id_calendar_event_id_title","type":"string"}},"required":["event_id","owner_id","owner_name","date","title","duration","importance","response","text","owner_type"],"title":"get_characters_character_id_calendar_event_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_calendar_event_id_404_not_found","type":"string"}},"title":"get_characters_character_id_calendar_event_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-calendar.read_calendar_events.v1"]}],"summary":"Get an event","tags":["Calendar"],"x-alternate-versions":["dev","v3","v4"],"x-cached-seconds":5},"put":{"description":"Set your response status to an event\n\n---\nAlternate route: `/dev/characters/{character_id}/calendar/{event_id}/`\n\nAlternate route: `/v3/characters/{character_id}/calendar/{event_id}/`\n\nAlternate route: `/v4/characters/{character_id}/calendar/{event_id}/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"put_characters_character_id_calendar_event_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The ID of the event requested","format":"int32","in":"path","name":"event_id","required":true,"type":"integer"},{"description":"The response value to set, overriding current value","in":"body","name":"response","required":true,"schema":{"description":"response object","properties":{"response":{"description":"response string","enum":["accepted","declined","tentative"],"title":"put_characters_character_id_calendar_event_id_response_response","type":"string"}},"required":["response"],"title":"put_characters_character_id_calendar_event_id_response","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Event updated"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-calendar.respond_calendar_events.v1"]}],"summary":"Respond to an event","tags":["Calendar"],"x-alternate-versions":["dev","v3","v4"],"x-cached-seconds":5}},"/characters/{character_id}/calendar/{event_id}/attendees/":{"get":{"description":"Get all invited attendees for a given event\n\n---\nAlternate route: `/dev/characters/{character_id}/calendar/{event_id}/attendees/`\n\nAlternate route: `/legacy/characters/{character_id}/calendar/{event_id}/attendees/`\n\nAlternate route: `/v1/characters/{character_id}/calendar/{event_id}/attendees/`\n\nAlternate route: `/v2/characters/{character_id}/calendar/{event_id}/attendees/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_calendar_event_id_attendees","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The id of the event requested","format":"int32","in":"path","name":"event_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of attendees","examples":{"application/json":[{"character_id":2112625428,"event_response":"accepted"},{"character_id":95465499,"event_response":"tentative"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"List of attendees for a given event","items":{"description":"character_id and response of an attendee","properties":{"character_id":{"description":"character_id integer","format":"int32","title":"get_characters_character_id_calendar_event_id_attendees_character_id","type":"integer"},"event_response":{"description":"event_response string","enum":["declined","not_responded","accepted","tentative"],"title":"get_characters_character_id_calendar_event_id_attendees_event_response","type":"string"}},"title":"get_characters_character_id_calendar_event_id_attendees_200_ok","type":"object"},"maxItems":100,"title":"get_characters_character_id_calendar_event_id_attendees_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_calendar_event_id_attendees_404_not_found","type":"string"}},"title":"get_characters_character_id_calendar_event_id_attendees_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-calendar.read_calendar_events.v1"]}],"summary":"Get attendees","tags":["Calendar"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":600}},"/characters/{character_id}/clones/":{"get":{"description":"A list of the character's clones\n\n---\nAlternate route: `/dev/characters/{character_id}/clones/`\n\nAlternate route: `/v3/characters/{character_id}/clones/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_clones","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Clone information for the given character","examples":{"application/json":{"home_location":{"location_id":1021348135816,"location_type":"structure"},"jump_clones":[{"implants":[22118],"jump_clone_id":12345,"location_id":60003463,"location_type":"station"}]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"home_location":{"description":"home_location object","properties":{"location_id":{"description":"location_id integer","format":"int64","title":"get_characters_character_id_clones_location_id","type":"integer"},"location_type":{"description":"location_type string","enum":["station","structure"],"title":"get_characters_character_id_clones_location_type","type":"string"}},"title":"get_characters_character_id_clones_home_location","type":"object"},"jump_clones":{"description":"jump_clones array","items":{"description":"jump_clone object","properties":{"implants":{"description":"implants array","items":{"description":"implant integer","format":"int32","title":"get_characters_character_id_clones_implant","type":"integer"},"maxItems":11,"title":"get_characters_character_id_clones_implants","type":"array"},"jump_clone_id":{"description":"jump_clone_id integer","format":"int32","title":"get_characters_character_id_clones_jump_clone_id","type":"integer"},"location_id":{"description":"location_id integer","format":"int64","title":"get_characters_character_id_clones_jump_clone_location_id","type":"integer"},"location_type":{"description":"location_type string","enum":["station","structure"],"title":"get_characters_character_id_clones_jump_clone_location_type","type":"string"},"name":{"description":"name string","title":"get_characters_character_id_clones_name","type":"string"}},"required":["jump_clone_id","location_id","location_type","implants"],"title":"get_characters_character_id_clones_jump_clone","type":"object"},"maxItems":10,"title":"get_characters_character_id_clones_jump_clones","type":"array"},"last_clone_jump_date":{"description":"last_clone_jump_date string","format":"date-time","title":"get_characters_character_id_clones_last_clone_jump_date","type":"string"},"last_station_change_date":{"description":"last_station_change_date string","format":"date-time","title":"get_characters_character_id_clones_last_station_change_date","type":"string"}},"required":["jump_clones"],"title":"get_characters_character_id_clones_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-clones.read_clones.v1"]}],"summary":"Get clones","tags":["Clones"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":120}},"/characters/{character_id}/contacts/":{"delete":{"description":"Bulk delete contacts\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/`\n\nAlternate route: `/v2/characters/{character_id}/contacts/`\n","operationId":"delete_characters_character_id_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"description":"A list of contacts to delete","in":"query","items":{"format":"int32","type":"integer"},"maxItems":20,"minItems":1,"name":"contact_ids","required":true,"type":"array"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Contacts deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.write_contacts.v1"]}],"summary":"Delete contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"]},"get":{"description":"Return contacts of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/`\n\nAlternate route: `/v2/characters/{character_id}/contacts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contacts","examples":{"application/json":[{"contact_id":123,"contact_type":"character","is_blocked":true,"is_watched":true,"standing":9.9}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"contact_id":{"description":"contact_id integer","format":"int32","title":"get_characters_character_id_contacts_contact_id","type":"integer"},"contact_type":{"description":"contact_type string","enum":["character","corporation","alliance","faction"],"title":"get_characters_character_id_contacts_contact_type","type":"string"},"is_blocked":{"description":"Whether this contact is in the blocked list. Note a missing value denotes unknown, not true or false","title":"get_characters_character_id_contacts_is_blocked","type":"boolean"},"is_watched":{"description":"Whether this contact is being watched","title":"get_characters_character_id_contacts_is_watched","type":"boolean"},"label_ids":{"description":"label_ids array","items":{"description":"Label IDs applied to the contact","format":"int64","title":"get_characters_character_id_contacts_label_id","type":"integer"},"maxItems":63,"title":"get_characters_character_id_contacts_label_ids","type":"array"},"standing":{"description":"Standing of the contact","format":"float","title":"get_characters_character_id_contacts_standing","type":"number"}},"required":["standing","contact_type","contact_id"],"title":"get_characters_character_id_contacts_200_ok","type":"object"},"maxItems":1024,"title":"get_characters_character_id_contacts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_contacts.v1"]}],"summary":"Get contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":300},"post":{"description":"Bulk add contacts with same settings\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/`\n\nAlternate route: `/v2/characters/{character_id}/contacts/`\n","operationId":"post_characters_character_id_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"description":"A list of contacts","in":"body","name":"contact_ids","required":true,"schema":{"description":"contact_ids array","items":{"description":"ID of the contact to edit","format":"int32","title":"post_characters_character_id_contacts_contact_id","type":"integer"},"maxItems":100,"minItems":1,"title":"post_characters_character_id_contacts_contact_ids","type":"array"}},{"$ref":"#/parameters/datasource"},{"description":"Add custom labels to the new contact","in":"query","items":{"format":"int64","type":"integer"},"maxItems":63,"name":"label_ids","required":false,"type":"array"},{"description":"Standing for the contact","format":"float","in":"query","maximum":10,"minimum":-10,"name":"standing","required":true,"type":"number"},{"$ref":"#/parameters/token"},{"default":false,"description":"Whether the contact should be watched, note this is only effective on characters","in":"query","name":"watched","required":false,"type":"boolean"}],"responses":{"201":{"description":"A list of contact ids that successfully created","examples":{"application/json":[123,456]},"schema":{"description":"201 created array","items":{"description":"201 created integer","format":"int32","title":"post_characters_character_id_contacts_201_created","type":"integer"},"maxItems":100,"title":"post_characters_character_id_contacts_created","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}},"520":{"description":"Internal error thrown from the EVE server","examples":{"application/json":{"error":"Error 520 message"}},"schema":{"description":"Error 520","properties":{"error":{"description":"Error 520 message","title":"post_characters_character_id_contacts_520_error_520","type":"string"}},"title":"post_characters_character_id_contacts_error_520","type":"object"}}},"security":[{"evesso":["esi-characters.write_contacts.v1"]}],"summary":"Add contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"]},"put":{"description":"Bulk edit contacts with same settings\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/`\n\nAlternate route: `/v2/characters/{character_id}/contacts/`\n","operationId":"put_characters_character_id_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"description":"A list of contacts","in":"body","name":"contact_ids","required":true,"schema":{"description":"contact_ids array","items":{"description":"ID of the contact to edit","format":"int32","title":"put_characters_character_id_contacts_contact_id","type":"integer"},"maxItems":100,"minItems":1,"title":"put_characters_character_id_contacts_contact_ids","type":"array"}},{"$ref":"#/parameters/datasource"},{"description":"Add custom labels to the contact","in":"query","items":{"format":"int64","type":"integer"},"maxItems":63,"name":"label_ids","required":false,"type":"array"},{"description":"Standing for the contact","format":"float","in":"query","maximum":10,"minimum":-10,"name":"standing","required":true,"type":"number"},{"$ref":"#/parameters/token"},{"default":false,"description":"Whether the contact should be watched, note this is only effective on characters","in":"query","name":"watched","required":false,"type":"boolean"}],"responses":{"204":{"description":"Contacts updated"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.write_contacts.v1"]}],"summary":"Edit contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"]}},"/characters/{character_id}/contacts/labels/":{"get":{"description":"Return custom labels for a character's contacts\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/labels/`\n\nAlternate route: `/legacy/characters/{character_id}/contacts/labels/`\n\nAlternate route: `/v1/characters/{character_id}/contacts/labels/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_contacts_labels","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contact labels","examples":{"application/json":[{"label_id":123,"label_name":"Friends"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"label_id":{"description":"label_id integer","format":"int64","title":"get_characters_character_id_contacts_labels_label_id","type":"integer"},"label_name":{"description":"label_name string","title":"get_characters_character_id_contacts_labels_label_name","type":"string"}},"required":["label_id","label_name"],"title":"get_characters_character_id_contacts_labels_200_ok","type":"object"},"maxItems":64,"title":"get_characters_character_id_contacts_labels_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_contacts.v1"]}],"summary":"Get contact labels","tags":["Contacts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/contracts/":{"get":{"description":"Returns contracts available to a character, only if the character is issuer, acceptor or assignee. Only returns contracts no older than 30 days, or if the status is \"in_progress\".\n\n---\nAlternate route: `/dev/characters/{character_id}/contracts/`\n\nAlternate route: `/legacy/characters/{character_id}/contracts/`\n\nAlternate route: `/v1/characters/{character_id}/contracts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_contracts","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contracts","examples":{"application/json":[{"acceptor_id":0,"assignee_id":0,"availability":"public","buyout":10000000000.01,"contract_id":1,"date_accepted":"2017-06-06T13:12:32Z","date_completed":"2017-06-06T13:12:32Z","date_expired":"2017-06-13T13:12:32Z","date_issued":"2017-06-06T13:12:32Z","days_to_complete":0,"end_location_id":60014719,"for_corporation":true,"issuer_corporation_id":456,"issuer_id":123,"price":1000000.01,"reward":0.01,"start_location_id":60014719,"status":"outstanding","type":"auction","volume":0.01}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"acceptor_id":{"description":"Who will accept the contract","format":"int32","title":"get_characters_character_id_contracts_acceptor_id","type":"integer"},"assignee_id":{"description":"ID to whom the contract is assigned, can be corporation or character ID","format":"int32","title":"get_characters_character_id_contracts_assignee_id","type":"integer"},"availability":{"description":"To whom the contract is available","enum":["public","personal","corporation","alliance"],"title":"get_characters_character_id_contracts_availability","type":"string"},"buyout":{"description":"Buyout price (for Auctions only)","format":"double","title":"get_characters_character_id_contracts_buyout","type":"number"},"collateral":{"description":"Collateral price (for Couriers only)","format":"double","title":"get_characters_character_id_contracts_collateral","type":"number"},"contract_id":{"description":"contract_id integer","format":"int32","title":"get_characters_character_id_contracts_contract_id","type":"integer"},"date_accepted":{"description":"Date of confirmation of contract","format":"date-time","title":"get_characters_character_id_contracts_date_accepted","type":"string"},"date_completed":{"description":"Date of completed of contract","format":"date-time","title":"get_characters_character_id_contracts_date_completed","type":"string"},"date_expired":{"description":"Expiration date of the contract","format":"date-time","title":"get_characters_character_id_contracts_date_expired","type":"string"},"date_issued":{"description":"\u0421reation date of the contract","format":"date-time","title":"get_characters_character_id_contracts_date_issued","type":"string"},"days_to_complete":{"description":"Number of days to perform the contract","format":"int32","title":"get_characters_character_id_contracts_days_to_complete","type":"integer"},"end_location_id":{"description":"End location ID (for Couriers contract)","format":"int64","title":"get_characters_character_id_contracts_end_location_id","type":"integer"},"for_corporation":{"description":"true if the contract was issued on behalf of the issuer's corporation","title":"get_characters_character_id_contracts_for_corporation","type":"boolean"},"issuer_corporation_id":{"description":"Character's corporation ID for the issuer","format":"int32","title":"get_characters_character_id_contracts_issuer_corporation_id","type":"integer"},"issuer_id":{"description":"Character ID for the issuer","format":"int32","title":"get_characters_character_id_contracts_issuer_id","type":"integer"},"price":{"description":"Price of contract (for ItemsExchange and Auctions)","format":"double","title":"get_characters_character_id_contracts_price","type":"number"},"reward":{"description":"Remuneration for contract (for Couriers only)","format":"double","title":"get_characters_character_id_contracts_reward","type":"number"},"start_location_id":{"description":"Start location ID (for Couriers contract)","format":"int64","title":"get_characters_character_id_contracts_start_location_id","type":"integer"},"status":{"description":"Status of the the contract","enum":["outstanding","in_progress","finished_issuer","finished_contractor","finished","cancelled","rejected","failed","deleted","reversed"],"title":"get_characters_character_id_contracts_status","type":"string"},"title":{"description":"Title of the contract","title":"get_characters_character_id_contracts_title","type":"string"},"type":{"description":"Type of the contract","enum":["unknown","item_exchange","auction","courier","loan"],"title":"get_characters_character_id_contracts_type","type":"string"},"volume":{"description":"Volume of items in the contract","format":"double","title":"get_characters_character_id_contracts_volume","type":"number"}},"required":["contract_id","issuer_id","issuer_corporation_id","assignee_id","acceptor_id","type","status","for_corporation","availability","date_issued","date_expired"],"title":"get_characters_character_id_contracts_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_contracts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_character_contracts.v1"]}],"summary":"Get contracts","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/contracts/{contract_id}/bids/":{"get":{"description":"Lists bids on a particular auction contract\n\n---\nAlternate route: `/dev/characters/{character_id}/contracts/{contract_id}/bids/`\n\nAlternate route: `/legacy/characters/{character_id}/contracts/{contract_id}/bids/`\n\nAlternate route: `/v1/characters/{character_id}/contracts/{contract_id}/bids/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_contracts_contract_id_bids","parameters":[{"$ref":"#/parameters/character_id"},{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of bids","examples":{"application/json":[{"amount":1.23,"bid_id":1,"bidder_id":123,"date_bid":"2017-01-01T10:10:10Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount bid, in ISK","format":"float","title":"get_characters_character_id_contracts_contract_id_bids_amount","type":"number"},"bid_id":{"description":"Unique ID for the bid","format":"int32","title":"get_characters_character_id_contracts_contract_id_bids_bid_id","type":"integer"},"bidder_id":{"description":"Character ID of the bidder","format":"int32","title":"get_characters_character_id_contracts_contract_id_bids_bidder_id","type":"integer"},"date_bid":{"description":"Datetime when the bid was placed","format":"date-time","title":"get_characters_character_id_contracts_contract_id_bids_date_bid","type":"string"}},"required":["bid_id","bidder_id","date_bid","amount"],"title":"get_characters_character_id_contracts_contract_id_bids_200_ok","type":"object"},"maxItems":2000,"title":"get_characters_character_id_contracts_contract_id_bids_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_contracts_contract_id_bids_404_not_found","type":"string"}},"title":"get_characters_character_id_contracts_contract_id_bids_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_character_contracts.v1"]}],"summary":"Get contract bids","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/contracts/{contract_id}/items/":{"get":{"description":"Lists items of a particular contract\n\n---\nAlternate route: `/dev/characters/{character_id}/contracts/{contract_id}/items/`\n\nAlternate route: `/legacy/characters/{character_id}/contracts/{contract_id}/items/`\n\nAlternate route: `/v1/characters/{character_id}/contracts/{contract_id}/items/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_contracts_contract_id_items","parameters":[{"$ref":"#/parameters/character_id"},{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of items in this contract","examples":{"application/json":[{"is_included":true,"is_singleton":false,"quantity":1,"record_id":123456,"type_id":587}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_included":{"description":"true if the contract issuer has submitted this item with the contract, false if the isser is asking for this item in the contract","title":"get_characters_character_id_contracts_contract_id_items_is_included","type":"boolean"},"is_singleton":{"description":"is_singleton boolean","title":"get_characters_character_id_contracts_contract_id_items_is_singleton","type":"boolean"},"quantity":{"description":"Number of items in the stack","format":"int32","title":"get_characters_character_id_contracts_contract_id_items_quantity","type":"integer"},"raw_quantity":{"description":"-1 indicates that the item is a singleton (non-stackable). If the item happens to be a Blueprint, -1 is an Original and -2 is a Blueprint Copy","format":"int32","title":"get_characters_character_id_contracts_contract_id_items_raw_quantity","type":"integer"},"record_id":{"description":"Unique ID for the item","format":"int64","title":"get_characters_character_id_contracts_contract_id_items_record_id","type":"integer"},"type_id":{"description":"Type ID for item","format":"int32","title":"get_characters_character_id_contracts_contract_id_items_type_id","type":"integer"}},"required":["record_id","type_id","quantity","is_singleton","is_included"],"title":"get_characters_character_id_contracts_contract_id_items_200_ok","type":"object"},"maxItems":2000,"title":"get_characters_character_id_contracts_contract_id_items_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_contracts_contract_id_items_404_not_found","type":"string"}},"title":"get_characters_character_id_contracts_contract_id_items_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_character_contracts.v1"]}],"summary":"Get contract items","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/corporationhistory/":{"get":{"description":"Get a list of all the corporations a character has been a member of\n\n---\nAlternate route: `/dev/characters/{character_id}/corporationhistory/`\n\nAlternate route: `/legacy/characters/{character_id}/corporationhistory/`\n\nAlternate route: `/v1/characters/{character_id}/corporationhistory/`\n\n---\nThis route is cached for up to 86400 seconds","operationId":"get_characters_character_id_corporationhistory","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Corporation history for the given character","examples":{"application/json":[{"corporation_id":90000001,"is_deleted":true,"record_id":500,"start_date":"2016-06-26T20:00:00Z"},{"corporation_id":90000002,"record_id":501,"start_date":"2016-07-26T20:00:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_characters_character_id_corporationhistory_corporation_id","type":"integer"},"is_deleted":{"description":"True if the corporation has been deleted","title":"get_characters_character_id_corporationhistory_is_deleted","type":"boolean"},"record_id":{"description":"An incrementing ID that can be used to canonically establish order of records in cases where dates may be ambiguous","format":"int32","title":"get_characters_character_id_corporationhistory_record_id","type":"integer"},"start_date":{"description":"start_date string","format":"date-time","title":"get_characters_character_id_corporationhistory_start_date","type":"string"}},"required":["start_date","corporation_id","record_id"],"title":"get_characters_character_id_corporationhistory_200_ok","type":"object"},"maxItems":10000,"title":"get_characters_character_id_corporationhistory_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get corporation history","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":86400}},"/characters/{character_id}/cspa/":{"post":{"description":"Takes a source character ID in the url and a set of target character ID's in the body, returns a CSPA charge cost\n\n---\nAlternate route: `/dev/characters/{character_id}/cspa/`\n\nAlternate route: `/v4/characters/{character_id}/cspa/`\n","operationId":"post_characters_character_id_cspa","parameters":[{"$ref":"#/parameters/character_id"},{"description":"The target characters to calculate the charge for","in":"body","name":"characters","required":true,"schema":{"description":"characters array","items":{"description":"character integer","format":"int32","title":"post_characters_character_id_cspa_character","type":"integer"},"maxItems":100,"minItems":1,"title":"post_characters_character_id_cspa_characters","type":"array","uniqueItems":true}},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"Aggregate cost of sending a mail from the source character to the target characters, in ISK","examples":{"application/json":2950.0},"schema":{"description":"201 created number","format":"float","title":"post_characters_character_id_cspa_created","type":"number"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_contacts.v1"]}],"summary":"Calculate a CSPA charge cost","tags":["Character"],"x-alternate-versions":["dev","v4"]}},"/characters/{character_id}/fatigue/":{"get":{"description":"Return a character's jump activation and fatigue information\n\n---\nAlternate route: `/dev/characters/{character_id}/fatigue/`\n\nAlternate route: `/legacy/characters/{character_id}/fatigue/`\n\nAlternate route: `/v1/characters/{character_id}/fatigue/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_fatigue","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Jump activation and fatigue information","examples":{"application/json":{"jump_fatigue_expire_date":"2017-07-06T15:47:00Z","last_jump_date":"2017-07-05T15:47:00Z","last_update_date":"2017-07-05T15:42:00Z"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"jump_fatigue_expire_date":{"description":"Character's jump fatigue expiry","format":"date-time","title":"get_characters_character_id_fatigue_jump_fatigue_expire_date","type":"string"},"last_jump_date":{"description":"Character's last jump activation","format":"date-time","title":"get_characters_character_id_fatigue_last_jump_date","type":"string"},"last_update_date":{"description":"Character's last jump update","format":"date-time","title":"get_characters_character_id_fatigue_last_update_date","type":"string"}},"title":"get_characters_character_id_fatigue_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_fatigue.v1"]}],"summary":"Get jump fatigue","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/fittings/":{"get":{"description":"Return fittings of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/fittings/`\n\nAlternate route: `/v2/characters/{character_id}/fittings/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_fittings","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of fittings","examples":{"application/json":[{"description":"Awesome Vindi fitting","fitting_id":1,"items":[{"flag":"Cargo","quantity":1,"type_id":1234}],"name":"Best Vindicator","ship_type_id":123}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"description":{"description":"description string","title":"get_characters_character_id_fittings_description","type":"string"},"fitting_id":{"description":"fitting_id integer","format":"int32","title":"get_characters_character_id_fittings_fitting_id","type":"integer"},"items":{"description":"items array","items":{"description":"item object","properties":{"flag":{"description":"flag string","enum":["Cargo","DroneBay","FighterBay","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","Invalid","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","RigSlot0","RigSlot1","RigSlot2","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3"],"title":"get_characters_character_id_fittings_flag","type":"string"},"quantity":{"description":"quantity integer","format":"int32","title":"get_characters_character_id_fittings_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_fittings_type_id","type":"integer"}},"required":["type_id","flag","quantity"],"title":"get_characters_character_id_fittings_item","type":"object"},"maxItems":255,"title":"get_characters_character_id_fittings_items","type":"array"},"name":{"description":"name string","title":"get_characters_character_id_fittings_name","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_characters_character_id_fittings_ship_type_id","type":"integer"}},"required":["fitting_id","name","description","ship_type_id","items"],"title":"get_characters_character_id_fittings_200_ok","type":"object"},"maxItems":250,"title":"get_characters_character_id_fittings_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fittings.read_fittings.v1"]}],"summary":"Get fittings","tags":["Fittings"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":300},"post":{"description":"Save a new fitting for a character\n\n---\nAlternate route: `/dev/characters/{character_id}/fittings/`\n\nAlternate route: `/v2/characters/{character_id}/fittings/`\n","operationId":"post_characters_character_id_fittings","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"Details about the new fitting","in":"body","name":"fitting","required":true,"schema":{"description":"fitting object","properties":{"description":{"description":"description string","maxLength":500,"minLength":0,"title":"post_characters_character_id_fittings_description","type":"string"},"items":{"description":"items array","items":{"description":"item object","properties":{"flag":{"description":"Fitting location for the item. Entries placed in 'Invalid' will be discarded. If this leaves the fitting with nothing, it will cause an error.","enum":["Cargo","DroneBay","FighterBay","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","Invalid","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","RigSlot0","RigSlot1","RigSlot2","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3"],"title":"post_characters_character_id_fittings_flag","type":"string"},"quantity":{"description":"quantity integer","format":"int32","title":"post_characters_character_id_fittings_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"post_characters_character_id_fittings_type_id","type":"integer"}},"required":["type_id","flag","quantity"],"title":"post_characters_character_id_fittings_item","type":"object"},"maxItems":255,"minItems":1,"title":"post_characters_character_id_fittings_items","type":"array"},"name":{"description":"name string","maxLength":50,"minLength":1,"title":"post_characters_character_id_fittings_name","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"post_characters_character_id_fittings_ship_type_id","type":"integer"}},"required":["name","description","ship_type_id","items"],"title":"post_characters_character_id_fittings_fitting","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"A list of fittings","examples":{"application/json":{"fitting_id":2}},"schema":{"description":"201 created object","properties":{"fitting_id":{"description":"fitting_id integer","format":"int32","title":"post_characters_character_id_fittings_fitting_id","type":"integer"}},"required":["fitting_id"],"title":"post_characters_character_id_fittings_created","type":"object"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fittings.write_fittings.v1"]}],"summary":"Create fitting","tags":["Fittings"],"x-alternate-versions":["dev","v2"]}},"/characters/{character_id}/fittings/{fitting_id}/":{"delete":{"description":"Delete a fitting from a character\n\n---\nAlternate route: `/dev/characters/{character_id}/fittings/{fitting_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/fittings/{fitting_id}/`\n\nAlternate route: `/v1/characters/{character_id}/fittings/{fitting_id}/`\n","operationId":"delete_characters_character_id_fittings_fitting_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"ID for a fitting of this character","format":"int32","in":"path","name":"fitting_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fitting deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fittings.write_fittings.v1"]}],"summary":"Delete fitting","tags":["Fittings"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/fleet/":{"get":{"description":"Return the fleet ID the character is in, if any.\n\n---\nAlternate route: `/legacy/characters/{character_id}/fleet/`\n\nAlternate route: `/v1/characters/{character_id}/fleet/`\n\n---\nThis route is cached for up to 60 seconds\n\n---\nWarning: This route has an upgrade available\n\n---\n[Diff of the upcoming changes](https://esi.evetech.net/diff/latest/dev/#GET-/characters/{character_id}/fleet/)","operationId":"get_characters_character_id_fleet","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Details about the character's fleet","examples":{"application/json":{"fleet_id":1234567890,"role":"fleet_commander","squad_id":-1,"wing_id":-1}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"fleet_id":{"description":"The character's current fleet ID","format":"int64","title":"get_characters_character_id_fleet_fleet_id","type":"integer"},"role":{"description":"Member\u2019s role in fleet","enum":["fleet_commander","squad_commander","squad_member","wing_commander"],"title":"get_characters_character_id_fleet_role","type":"string"},"squad_id":{"description":"ID of the squad the member is in. If not applicable, will be set to -1","format":"int64","title":"get_characters_character_id_fleet_squad_id","type":"integer"},"wing_id":{"description":"ID of the wing the member is in. If not applicable, will be set to -1","format":"int64","title":"get_characters_character_id_fleet_wing_id","type":"integer"}},"required":["fleet_id","wing_id","squad_id","role"],"title":"get_characters_character_id_fleet_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The character is not in a fleet","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_fleet_404_not_found","type":"string"}},"title":"get_characters_character_id_fleet_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.read_fleet.v1"]}],"summary":"Get character fleet info","tags":["Fleets"],"x-alternate-versions":["legacy","v1"],"x-cached-seconds":60}},"/characters/{character_id}/fw/stats/":{"get":{"description":"Statistical overview of a character involved in faction warfare\n\n---\nAlternate route: `/dev/characters/{character_id}/fw/stats/`\n\nAlternate route: `/legacy/characters/{character_id}/fw/stats/`\n\nAlternate route: `/v1/characters/{character_id}/fw/stats/`\n\nAlternate route: `/v2/characters/{character_id}/fw/stats/`\n\n---\nThis route expires daily at 11:05","operationId":"get_characters_character_id_fw_stats","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Faction warfare statistics for a given character","examples":{"application/json":{"enlisted_on":"2017-10-17T00:00:00Z","faction_id":500001,"kills":{"last_week":893,"total":684350,"yesterday":136},"victory_points":{"last_week":102640,"total":52658260,"yesterday":15980}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"current_rank":{"description":"The given character's current faction rank","format":"int32","maximum":9,"minimum":0,"title":"get_characters_character_id_fw_stats_current_rank","type":"integer"},"enlisted_on":{"description":"The enlistment date of the given character into faction warfare. Will not be included if character is not enlisted in faction warfare","format":"date-time","title":"get_characters_character_id_fw_stats_enlisted_on","type":"string"},"faction_id":{"description":"The faction the given character is enlisted to fight for. Will not be included if character is not enlisted in faction warfare","format":"int32","title":"get_characters_character_id_fw_stats_faction_id","type":"integer"},"highest_rank":{"description":"The given character's highest faction rank achieved","format":"int32","maximum":9,"minimum":0,"title":"get_characters_character_id_fw_stats_highest_rank","type":"integer"},"kills":{"description":"Summary of kills done by the given character against enemy factions","properties":{"last_week":{"description":"Last week's total number of kills by a given character against enemy factions","format":"int32","title":"get_characters_character_id_fw_stats_last_week","type":"integer"},"total":{"description":"Total number of kills by a given character against enemy factions since the character enlisted","format":"int32","title":"get_characters_character_id_fw_stats_total","type":"integer"},"yesterday":{"description":"Yesterday's total number of kills by a given character against enemy factions","format":"int32","title":"get_characters_character_id_fw_stats_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_characters_character_id_fw_stats_kills","type":"object"},"victory_points":{"description":"Summary of victory points gained by the given character for the enlisted faction","properties":{"last_week":{"description":"Last week's victory points gained by the given character","format":"int32","title":"get_characters_character_id_fw_stats_victory_points_last_week","type":"integer"},"total":{"description":"Total victory points gained since the given character enlisted","format":"int32","title":"get_characters_character_id_fw_stats_victory_points_total","type":"integer"},"yesterday":{"description":"Yesterday's victory points gained by the given character","format":"int32","title":"get_characters_character_id_fw_stats_victory_points_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_characters_character_id_fw_stats_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_characters_character_id_fw_stats_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_fw_stats.v1"]}],"summary":"Overview of a character involved in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/characters/{character_id}/implants/":{"get":{"description":"Return implants on the active clone of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/implants/`\n\nAlternate route: `/legacy/characters/{character_id}/implants/`\n\nAlternate route: `/v1/characters/{character_id}/implants/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_implants","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of implant type ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_characters_character_id_implants_200_ok","type":"integer"},"maxItems":11,"title":"get_characters_character_id_implants_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-clones.read_implants.v1"]}],"summary":"Get active implants","tags":["Clones"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":120}},"/characters/{character_id}/industry/jobs/":{"get":{"description":"List industry jobs placed by a character\n\n---\nAlternate route: `/dev/characters/{character_id}/industry/jobs/`\n\nAlternate route: `/legacy/characters/{character_id}/industry/jobs/`\n\nAlternate route: `/v1/characters/{character_id}/industry/jobs/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_industry_jobs","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Whether to retrieve completed character industry jobs. Only includes jobs from the past 90 days","in":"query","name":"include_completed","required":false,"type":"boolean"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Industry jobs placed by a character","examples":{"application/json":[{"activity_id":1,"blueprint_id":1015116533326,"blueprint_location_id":60006382,"blueprint_type_id":2047,"cost":118.01,"duration":548,"end_date":"2014-07-19T15:56:14Z","facility_id":60006382,"installer_id":498338451,"job_id":229136101,"licensed_runs":200,"output_location_id":60006382,"runs":1,"start_date":"2014-07-19T15:47:06Z","station_id":60006382,"status":"active"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"activity_id":{"description":"Job activity ID","format":"int32","title":"get_characters_character_id_industry_jobs_activity_id","type":"integer"},"blueprint_id":{"description":"blueprint_id integer","format":"int64","title":"get_characters_character_id_industry_jobs_blueprint_id","type":"integer"},"blueprint_location_id":{"description":"Location ID of the location from which the blueprint was installed. Normally a station ID, but can also be an asset (e.g. container) or corporation facility","format":"int64","title":"get_characters_character_id_industry_jobs_blueprint_location_id","type":"integer"},"blueprint_type_id":{"description":"blueprint_type_id integer","format":"int32","title":"get_characters_character_id_industry_jobs_blueprint_type_id","type":"integer"},"completed_character_id":{"description":"ID of the character which completed this job","format":"int32","title":"get_characters_character_id_industry_jobs_completed_character_id","type":"integer"},"completed_date":{"description":"Date and time when this job was completed","format":"date-time","title":"get_characters_character_id_industry_jobs_completed_date","type":"string"},"cost":{"description":"The sume of job installation fee and industry facility tax","format":"double","title":"get_characters_character_id_industry_jobs_cost","type":"number"},"duration":{"description":"Job duration in seconds","format":"int32","title":"get_characters_character_id_industry_jobs_duration","type":"integer"},"end_date":{"description":"Date and time when this job finished","format":"date-time","title":"get_characters_character_id_industry_jobs_end_date","type":"string"},"facility_id":{"description":"ID of the facility where this job is running","format":"int64","title":"get_characters_character_id_industry_jobs_facility_id","type":"integer"},"installer_id":{"description":"ID of the character which installed this job","format":"int32","title":"get_characters_character_id_industry_jobs_installer_id","type":"integer"},"job_id":{"description":"Unique job ID","format":"int32","title":"get_characters_character_id_industry_jobs_job_id","type":"integer"},"licensed_runs":{"description":"Number of runs blueprint is licensed for","format":"int32","title":"get_characters_character_id_industry_jobs_licensed_runs","type":"integer"},"output_location_id":{"description":"Location ID of the location to which the output of the job will be delivered. Normally a station ID, but can also be a corporation facility","format":"int64","title":"get_characters_character_id_industry_jobs_output_location_id","type":"integer"},"pause_date":{"description":"Date and time when this job was paused (i.e. time when the facility where this job was installed went offline)","format":"date-time","title":"get_characters_character_id_industry_jobs_pause_date","type":"string"},"probability":{"description":"Chance of success for invention","format":"float","title":"get_characters_character_id_industry_jobs_probability","type":"number"},"product_type_id":{"description":"Type ID of product (manufactured, copied or invented)","format":"int32","title":"get_characters_character_id_industry_jobs_product_type_id","type":"integer"},"runs":{"description":"Number of runs for a manufacturing job, or number of copies to make for a blueprint copy","format":"int32","title":"get_characters_character_id_industry_jobs_runs","type":"integer"},"start_date":{"description":"Date and time when this job started","format":"date-time","title":"get_characters_character_id_industry_jobs_start_date","type":"string"},"station_id":{"description":"ID of the station where industry facility is located","format":"int64","title":"get_characters_character_id_industry_jobs_station_id","type":"integer"},"status":{"description":"status string","enum":["active","cancelled","delivered","paused","ready","reverted"],"title":"get_characters_character_id_industry_jobs_status","type":"string"},"successful_runs":{"description":"Number of successful runs for this job. Equal to runs unless this is an invention job","format":"int32","title":"get_characters_character_id_industry_jobs_successful_runs","type":"integer"}},"required":["job_id","installer_id","facility_id","station_id","activity_id","blueprint_id","blueprint_type_id","blueprint_location_id","output_location_id","runs","status","duration","start_date","end_date"],"title":"get_characters_character_id_industry_jobs_200_ok","type":"object"},"maxItems":2000,"title":"get_characters_character_id_industry_jobs_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_character_jobs.v1"]}],"summary":"List character industry jobs","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/killmails/recent/":{"get":{"description":"Return a list of a character's kills and losses going back 90 days\n\n---\nAlternate route: `/dev/characters/{character_id}/killmails/recent/`\n\nAlternate route: `/legacy/characters/{character_id}/killmails/recent/`\n\nAlternate route: `/v1/characters/{character_id}/killmails/recent/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_killmails_recent","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of killmail IDs and hashes","examples":{"application/json":[{"killmail_hash":"8eef5e8fb6b88fe3407c489df33822b2e3b57a5e","killmail_id":2},{"killmail_hash":"b41ccb498ece33d64019f64c0db392aa3aa701fb","killmail_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"killmail_hash":{"description":"A hash of this killmail","title":"get_characters_character_id_killmails_recent_killmail_hash","type":"string"},"killmail_id":{"description":"ID of this killmail","format":"int32","title":"get_characters_character_id_killmails_recent_killmail_id","type":"integer"}},"required":["killmail_id","killmail_hash"],"title":"get_characters_character_id_killmails_recent_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_killmails_recent_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-killmails.read_killmails.v1"]}],"summary":"Get a character's recent kills and losses","tags":["Killmails"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/location/":{"get":{"description":"Information about the characters current location. Returns the current solar system id, and also the current station or structure ID if applicable\n\n---\nAlternate route: `/dev/characters/{character_id}/location/`\n\nAlternate route: `/legacy/characters/{character_id}/location/`\n\nAlternate route: `/v1/characters/{character_id}/location/`\n\nAlternate route: `/v2/characters/{character_id}/location/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_characters_character_id_location","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Information about the characters current location. Returns the current solar system id, and also the current station or structure ID if applicable","examples":{"application/json":{"solar_system_id":30002505,"structure_id":1000000016989}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_characters_character_id_location_solar_system_id","type":"integer"},"station_id":{"description":"station_id integer","format":"int32","title":"get_characters_character_id_location_station_id","type":"integer"},"structure_id":{"description":"structure_id integer","format":"int64","title":"get_characters_character_id_location_structure_id","type":"integer"}},"required":["solar_system_id"],"title":"get_characters_character_id_location_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-location.read_location.v1"]}],"summary":"Get character location","tags":["Location"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":5}},"/characters/{character_id}/loyalty/points/":{"get":{"description":"Return a list of loyalty points for all corporations the character has worked for\n\n---\nAlternate route: `/dev/characters/{character_id}/loyalty/points/`\n\nAlternate route: `/legacy/characters/{character_id}/loyalty/points/`\n\nAlternate route: `/v1/characters/{character_id}/loyalty/points/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_loyalty_points","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of loyalty points","examples":{"application/json":[{"corporation_id":123,"loyalty_points":100}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_characters_character_id_loyalty_points_corporation_id","type":"integer"},"loyalty_points":{"description":"loyalty_points integer","format":"int32","title":"get_characters_character_id_loyalty_points_loyalty_points","type":"integer"}},"required":["corporation_id","loyalty_points"],"title":"get_characters_character_id_loyalty_points_200_ok","type":"object"},"maxItems":500,"title":"get_characters_character_id_loyalty_points_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_loyalty.v1"]}],"summary":"Get loyalty points","tags":["Loyalty"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/mail/":{"get":{"description":"Return the 50 most recent mail headers belonging to the character that match the query criteria. Queries can be filtered by label, and last_mail_id can be used to paginate backwards\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/`\n\nAlternate route: `/v1/characters/{character_id}/mail/`\n\n---\nThis route is cached for up to 30 seconds","operationId":"get_characters_character_id_mail","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Fetch only mails that match one or more of the given labels","in":"query","items":{"format":"int32","minimum":0,"type":"integer"},"maxItems":25,"minItems":1,"name":"labels","required":false,"type":"array","uniqueItems":true},{"description":"List only mail with an ID lower than the given ID, if present","format":"int32","in":"query","name":"last_mail_id","type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"The requested mail","examples":{"application/json":[{"from":90000001,"is_read":true,"labels":[3],"mail_id":7,"recipients":[{"recipient_id":90000002,"recipient_type":"character"}],"subject":"Title for EVE Mail","timestamp":"2015-09-30T16:07:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"from":{"description":"From whom the mail was sent","format":"int32","title":"get_characters_character_id_mail_from","type":"integer"},"is_read":{"description":"is_read boolean","title":"get_characters_character_id_mail_is_read","type":"boolean"},"labels":{"description":"labels array","items":{"description":"label integer","format":"int32","title":"get_characters_character_id_mail_label","type":"integer"},"maxItems":25,"minimum":0,"title":"get_characters_character_id_mail_labels","type":"array","uniqueItems":true},"mail_id":{"description":"mail_id integer","format":"int32","title":"get_characters_character_id_mail_mail_id","type":"integer"},"recipients":{"description":"Recipients of the mail","items":{"description":"recipient object","properties":{"recipient_id":{"description":"recipient_id integer","format":"int32","title":"get_characters_character_id_mail_recipient_id","type":"integer"},"recipient_type":{"description":"recipient_type string","enum":["alliance","character","corporation","mailing_list"],"title":"get_characters_character_id_mail_recipient_type","type":"string"}},"required":["recipient_type","recipient_id"],"title":"get_characters_character_id_mail_recipient","type":"object"},"maxItems":52,"minItems":1,"title":"get_characters_character_id_mail_recipients","type":"array","uniqueItems":true},"subject":{"description":"Mail subject","title":"get_characters_character_id_mail_subject","type":"string"},"timestamp":{"description":"When the mail was sent","format":"date-time","title":"get_characters_character_id_mail_timestamp","type":"string"}},"title":"get_characters_character_id_mail_200_ok","type":"object"},"maxItems":50,"title":"get_characters_character_id_mail_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.read_mail.v1"]}],"summary":"Return mail headers","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":30},"post":{"description":"Create and send a new mail\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/`\n\nAlternate route: `/v1/characters/{character_id}/mail/`\n","operationId":"post_characters_character_id_mail","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The mail to send","in":"body","name":"mail","required":true,"schema":{"description":"mail object","properties":{"approved_cost":{"default":0,"description":"approved_cost integer","format":"int64","title":"post_characters_character_id_mail_approved_cost","type":"integer"},"body":{"description":"body string","maxLength":10000,"title":"post_characters_character_id_mail_body","type":"string"},"recipients":{"description":"recipients array","items":{"description":"recipient object","properties":{"recipient_id":{"description":"recipient_id integer","format":"int32","title":"post_characters_character_id_mail_recipient_id","type":"integer"},"recipient_type":{"description":"recipient_type string","enum":["alliance","character","corporation","mailing_list"],"title":"post_characters_character_id_mail_recipient_type","type":"string"}},"required":["recipient_type","recipient_id"],"title":"post_characters_character_id_mail_recipient","type":"object"},"maxItems":50,"minItems":1,"title":"post_characters_character_id_mail_recipients","type":"array"},"subject":{"description":"subject string","maxLength":1000,"title":"post_characters_character_id_mail_subject","type":"string"}},"required":["recipients","subject","body"],"title":"post_characters_character_id_mail_mail","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"Mail created","examples":{"application/json":13},"schema":{"description":"Mail ID","format":"int32","title":"post_characters_character_id_mail_created","type":"integer"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}},"520":{"description":"Internal error thrown from the EVE server. Most of the time this means you have hit an EVE server rate limit","examples":{"application/json":{"error":"Error 520 message"}},"schema":{"description":"Error 520","properties":{"error":{"description":"Error 520 message","title":"post_characters_character_id_mail_520_error_520","type":"string"}},"title":"post_characters_character_id_mail_error_520","type":"object"}}},"security":[{"evesso":["esi-mail.send_mail.v1"]}],"summary":"Send a new mail","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/mail/labels/":{"get":{"description":"Return a list of the users mail labels, unread counts for each label and a total unread count.\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/labels/`\n\nAlternate route: `/v3/characters/{character_id}/mail/labels/`\n\n---\nThis route is cached for up to 30 seconds","operationId":"get_characters_character_id_mail_labels","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of mail labels and unread counts","examples":{"application/json":{"labels":[{"color":"#660066","label_id":16,"name":"PINK","unread_count":4},{"color":"#ffffff","label_id":17,"name":"WHITE","unread_count":1}],"total_unread_count":5}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"labels":{"description":"labels array","items":{"description":"label object","properties":{"color":{"default":"#ffffff","description":"color string","enum":["#0000fe","#006634","#0099ff","#00ff33","#01ffff","#349800","#660066","#666666","#999999","#99ffff","#9a0000","#ccff9a","#e6e6e6","#fe0000","#ff6600","#ffff01","#ffffcd","#ffffff"],"title":"get_characters_character_id_mail_labels_color","type":"string"},"label_id":{"description":"label_id integer","format":"int32","minimum":0,"title":"get_characters_character_id_mail_labels_label_id","type":"integer"},"name":{"description":"name string","maxLength":40,"title":"get_characters_character_id_mail_labels_name","type":"string"},"unread_count":{"description":"unread_count integer","format":"int32","minimum":0,"title":"get_characters_character_id_mail_labels_unread_count","type":"integer"}},"title":"get_characters_character_id_mail_labels_label","type":"object"},"maxItems":30,"title":"get_characters_character_id_mail_labels_labels","type":"array"},"total_unread_count":{"description":"total_unread_count integer","format":"int32","minimum":0,"title":"get_characters_character_id_mail_labels_total_unread_count","type":"integer"}},"title":"get_characters_character_id_mail_labels_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.read_mail.v1"]}],"summary":"Get mail labels and unread counts","tags":["Mail"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":30},"post":{"description":"Create a mail label\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/labels/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/labels/`\n\nAlternate route: `/v2/characters/{character_id}/mail/labels/`\n","operationId":"post_characters_character_id_mail_labels","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"Label to create","in":"body","name":"label","required":true,"schema":{"description":"label object","properties":{"color":{"default":"#ffffff","description":"Hexadecimal string representing label color, in RGB format","enum":["#0000fe","#006634","#0099ff","#00ff33","#01ffff","#349800","#660066","#666666","#999999","#99ffff","#9a0000","#ccff9a","#e6e6e6","#fe0000","#ff6600","#ffff01","#ffffcd","#ffffff"],"title":"post_characters_character_id_mail_labels_color","type":"string"},"name":{"description":"name string","maxLength":40,"minLength":1,"title":"post_characters_character_id_mail_labels_name","type":"string"}},"required":["name"],"title":"post_characters_character_id_mail_labels_label","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"Label created","examples":{"application/json":128},"schema":{"description":"Label ID","format":"int32","title":"post_characters_character_id_mail_labels_created","type":"integer"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.organize_mail.v1"]}],"summary":"Create a mail label","tags":["Mail"],"x-alternate-versions":["dev","legacy","v2"]}},"/characters/{character_id}/mail/labels/{label_id}/":{"delete":{"description":"Delete a mail label\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/labels/{label_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/labels/{label_id}/`\n\nAlternate route: `/v1/characters/{character_id}/mail/labels/{label_id}/`\n","operationId":"delete_characters_character_id_mail_labels_label_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"An EVE label id","format":"int32","in":"path","name":"label_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Label deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Default labels cannot be deleted","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"delete_characters_character_id_mail_labels_label_id_422_unprocessable_entity","type":"string"}},"title":"delete_characters_character_id_mail_labels_label_id_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.organize_mail.v1"]}],"summary":"Delete a mail label","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/mail/lists/":{"get":{"description":"Return all mailing lists that the character is subscribed to\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/lists/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/lists/`\n\nAlternate route: `/v1/characters/{character_id}/mail/lists/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_mail_lists","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Mailing lists","examples":{"application/json":[{"mailing_list_id":1,"name":"test_mailing_list"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"mailing_list_id":{"description":"Mailing list ID","format":"int32","title":"get_characters_character_id_mail_lists_mailing_list_id","type":"integer"},"name":{"description":"name string","title":"get_characters_character_id_mail_lists_name","type":"string"}},"required":["mailing_list_id","name"],"title":"get_characters_character_id_mail_lists_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_mail_lists_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.read_mail.v1"]}],"summary":"Return mailing list subscriptions","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":120}},"/characters/{character_id}/mail/{mail_id}/":{"delete":{"description":"Delete a mail\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/v1/characters/{character_id}/mail/{mail_id}/`\n","operationId":"delete_characters_character_id_mail_mail_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"An EVE mail ID","format":"int32","in":"path","name":"mail_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Mail deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.organize_mail.v1"]}],"summary":"Delete a mail","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"]},"get":{"description":"Return the contents of an EVE mail\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/v1/characters/{character_id}/mail/{mail_id}/`\n\n---\nThis route is cached for up to 30 seconds","operationId":"get_characters_character_id_mail_mail_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"An EVE mail ID","format":"int32","in":"path","name":"mail_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Contents of a mail","examples":{"application/json":{"body":"blah blah blah","from":90000001,"labels":[2,32],"read":true,"subject":"test","timestamp":"2015-09-30T16:07:00Z"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"body":{"description":"Mail's body","title":"get_characters_character_id_mail_mail_id_body","type":"string"},"from":{"description":"From whom the mail was sent","format":"int32","title":"get_characters_character_id_mail_mail_id_from","type":"integer"},"labels":{"description":"Labels attached to the mail","items":{"description":"label integer","format":"int32","minimum":0,"title":"get_characters_character_id_mail_mail_id_label","type":"integer","uniqueItems":true},"maxItems":25,"title":"get_characters_character_id_mail_mail_id_labels","type":"array"},"read":{"description":"Whether the mail is flagged as read","title":"get_characters_character_id_mail_mail_id_read","type":"boolean"},"recipients":{"description":"Recipients of the mail","items":{"description":"recipient object","properties":{"recipient_id":{"description":"recipient_id integer","format":"int32","title":"get_characters_character_id_mail_mail_id_recipient_id","type":"integer"},"recipient_type":{"description":"recipient_type string","enum":["alliance","character","corporation","mailing_list"],"title":"get_characters_character_id_mail_mail_id_recipient_type","type":"string"}},"required":["recipient_type","recipient_id"],"title":"get_characters_character_id_mail_mail_id_recipient","type":"object"},"maxItems":52,"minItems":1,"title":"get_characters_character_id_mail_mail_id_recipients","type":"array","uniqueItems":true},"subject":{"description":"Mail subject","title":"get_characters_character_id_mail_mail_id_subject","type":"string"},"timestamp":{"description":"When the mail was sent","format":"date-time","title":"get_characters_character_id_mail_mail_id_timestamp","type":"string"}},"title":"get_characters_character_id_mail_mail_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Mail not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_mail_mail_id_404_not_found","type":"string"}},"title":"get_characters_character_id_mail_mail_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.read_mail.v1"]}],"summary":"Return a mail","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":30},"put":{"description":"Update metadata about a mail\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/v1/characters/{character_id}/mail/{mail_id}/`\n","operationId":"put_characters_character_id_mail_mail_id","parameters":[{"$ref":"#/parameters/character_id"},{"description":"Data used to update the mail","in":"body","name":"contents","required":true,"schema":{"description":"contents object","properties":{"labels":{"description":"Labels to assign to the mail. Pre-existing labels are unassigned.","items":{"description":"label integer","format":"int32","minimum":0,"title":"put_characters_character_id_mail_mail_id_label","type":"integer","uniqueItems":true},"maxItems":25,"title":"put_characters_character_id_mail_mail_id_labels","type":"array"},"read":{"description":"Whether the mail is flagged as read","title":"put_characters_character_id_mail_mail_id_read","type":"boolean"}},"title":"put_characters_character_id_mail_mail_id_contents","type":"object"}},{"$ref":"#/parameters/datasource"},{"description":"An EVE mail ID","format":"int32","in":"path","name":"mail_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Mail updated"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.organize_mail.v1"]}],"summary":"Update metadata about a mail","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/medals/":{"get":{"description":"Return a list of medals the character has\n\n---\nAlternate route: `/dev/characters/{character_id}/medals/`\n\nAlternate route: `/legacy/characters/{character_id}/medals/`\n\nAlternate route: `/v1/characters/{character_id}/medals/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_medals","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of medals","examples":{"application/json":[{"corporation_id":98000001,"date":"2017-03-16T15:01:45Z","description":"For 33 corp!","graphics":[{"color":-1,"graphic":"caldari.1_1","layer":0,"part":1},{"color":-330271,"graphic":"caldari.1_2","layer":1,"part":1},{"color":-1,"graphic":"compass.1_2","layer":0,"part":2}],"issuer_id":2112000002,"medal_id":3,"reason":"Thanks!","status":"private","title":"33 tester medal"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_characters_character_id_medals_corporation_id","type":"integer"},"date":{"description":"date string","format":"date-time","title":"get_characters_character_id_medals_date","type":"string"},"description":{"description":"description string","title":"get_characters_character_id_medals_description","type":"string"},"graphics":{"description":"graphics array","items":{"description":"graphic object","properties":{"color":{"description":"color integer","format":"int32","title":"get_characters_character_id_medals_color","type":"integer"},"graphic":{"description":"graphic string","title":"get_characters_character_id_medals_graphic_graphic","type":"string"},"layer":{"description":"layer integer","format":"int32","title":"get_characters_character_id_medals_layer","type":"integer"},"part":{"description":"part integer","format":"int32","title":"get_characters_character_id_medals_part","type":"integer"}},"required":["part","layer","graphic"],"title":"get_characters_character_id_medals_graphic","type":"object"},"maxItems":9,"minItems":3,"title":"get_characters_character_id_medals_graphics","type":"array"},"issuer_id":{"description":"issuer_id integer","format":"int32","title":"get_characters_character_id_medals_issuer_id","type":"integer"},"medal_id":{"description":"medal_id integer","format":"int32","title":"get_characters_character_id_medals_medal_id","type":"integer"},"reason":{"description":"reason string","title":"get_characters_character_id_medals_reason","type":"string"},"status":{"description":"status string","enum":["public","private"],"title":"get_characters_character_id_medals_status","type":"string"},"title":{"description":"title string","title":"get_characters_character_id_medals_title","type":"string"}},"required":["medal_id","title","description","corporation_id","issuer_id","date","reason","status","graphics"],"title":"get_characters_character_id_medals_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_medals_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_medals.v1"]}],"summary":"Get medals","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/mining/":{"get":{"description":"Paginated record of all mining done by a character for the past 30 days\n\n\n---\nAlternate route: `/dev/characters/{character_id}/mining/`\n\nAlternate route: `/legacy/characters/{character_id}/mining/`\n\nAlternate route: `/v1/characters/{character_id}/mining/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_mining","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Mining ledger of a character","examples":{"application/json":[{"date":"2017-09-19","quantity":7004,"solar_system_id":30003707,"type_id":17471},{"date":"2017-09-18","quantity":5199,"solar_system_id":30003707,"type_id":17471}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"date":{"description":"date string","format":"date","title":"get_characters_character_id_mining_date","type":"string"},"quantity":{"description":"quantity integer","format":"int64","title":"get_characters_character_id_mining_quantity","type":"integer"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_characters_character_id_mining_solar_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_mining_type_id","type":"integer"}},"required":["date","solar_system_id","type_id","quantity"],"title":"get_characters_character_id_mining_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_mining_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_character_mining.v1"]}],"summary":"Character mining ledger","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":600}},"/characters/{character_id}/notifications/":{"get":{"description":"Return character notifications\n\n---\nAlternate route: `/dev/characters/{character_id}/notifications/`\n\nAlternate route: `/v5/characters/{character_id}/notifications/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_notifications","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Returns your recent notifications","examples":{"application/json":[{"is_read":true,"notification_id":1,"sender_id":1000132,"sender_type":"corporation","text":"amount: 3731016.4000000004\\nitemID: 1024881021663\\npayout: 1\\n","timestamp":"2017-08-16T10:08:00Z","type":"InsurancePayoutMsg"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_read":{"description":"is_read boolean","title":"get_characters_character_id_notifications_is_read","type":"boolean"},"notification_id":{"description":"notification_id integer","format":"int64","title":"get_characters_character_id_notifications_notification_id","type":"integer"},"sender_id":{"description":"sender_id integer","format":"int32","title":"get_characters_character_id_notifications_sender_id","type":"integer"},"sender_type":{"description":"sender_type string","enum":["character","corporation","alliance","faction","other"],"title":"get_characters_character_id_notifications_sender_type","type":"string"},"text":{"description":"text string","title":"get_characters_character_id_notifications_text","type":"string"},"timestamp":{"description":"timestamp string","format":"date-time","title":"get_characters_character_id_notifications_timestamp","type":"string"},"type":{"description":"type string","enum":["AcceptedAlly","AcceptedSurrender","AllAnchoringMsg","AllMaintenanceBillMsg","AllStrucInvulnerableMsg","AllStructVulnerableMsg","AllWarCorpJoinedAllianceMsg","AllWarDeclaredMsg","AllWarInvalidatedMsg","AllWarRetractedMsg","AllWarSurrenderMsg","AllianceCapitalChanged","AllianceWarDeclaredV2","AllyContractCancelled","AllyJoinedWarAggressorMsg","AllyJoinedWarAllyMsg","AllyJoinedWarDefenderMsg","BattlePunishFriendlyFire","BillOutOfMoneyMsg","BillPaidCorpAllMsg","BountyClaimMsg","BountyESSShared","BountyESSTaken","BountyPlacedAlliance","BountyPlacedChar","BountyPlacedCorp","BountyYourBountyClaimed","BuddyConnectContactAdd","CharAppAcceptMsg","CharAppRejectMsg","CharAppWithdrawMsg","CharLeftCorpMsg","CharMedalMsg","CharTerminationMsg","CloneActivationMsg","CloneActivationMsg2","CloneMovedMsg","CloneRevokedMsg1","CloneRevokedMsg2","CombatOperationFinished","ContactAdd","ContactEdit","ContainerPasswordMsg","CorpAllBillMsg","CorpAppAcceptMsg","CorpAppInvitedMsg","CorpAppNewMsg","CorpAppRejectCustomMsg","CorpAppRejectMsg","CorpBecameWarEligible","CorpDividendMsg","CorpFriendlyFireDisableTimerCompleted","CorpFriendlyFireDisableTimerStarted","CorpFriendlyFireEnableTimerCompleted","CorpFriendlyFireEnableTimerStarted","CorpKicked","CorpLiquidationMsg","CorpNewCEOMsg","CorpNewsMsg","CorpNoLongerWarEligible","CorpOfficeExpirationMsg","CorpStructLostMsg","CorpTaxChangeMsg","CorpVoteCEORevokedMsg","CorpVoteMsg","CorpWarDeclaredMsg","CorpWarDeclaredV2","CorpWarFightingLegalMsg","CorpWarInvalidatedMsg","CorpWarRetractedMsg","CorpWarSurrenderMsg","CustomsMsg","DeclareWar","DistrictAttacked","DustAppAcceptedMsg","EntosisCaptureStarted","FWAllianceKickMsg","FWAllianceWarningMsg","FWCharKickMsg","FWCharRankGainMsg","FWCharRankLossMsg","FWCharWarningMsg","FWCorpJoinMsg","FWCorpKickMsg","FWCorpLeaveMsg","FWCorpWarningMsg","FacWarCorpJoinRequestMsg","FacWarCorpJoinWithdrawMsg","FacWarCorpLeaveRequestMsg","FacWarCorpLeaveWithdrawMsg","FacWarLPDisqualifiedEvent","FacWarLPDisqualifiedKill","FacWarLPPayoutEvent","FacWarLPPayoutKill","GameTimeAdded","GameTimeReceived","GameTimeSent","GiftReceived","IHubDestroyedByBillFailure","IncursionCompletedMsg","IndustryOperationFinished","IndustryTeamAuctionLost","IndustryTeamAuctionWon","InfrastructureHubBillAboutToExpire","InsuranceExpirationMsg","InsuranceFirstShipMsg","InsuranceInvalidatedMsg","InsuranceIssuedMsg","InsurancePayoutMsg","InvasionSystemLogin","JumpCloneDeletedMsg1","JumpCloneDeletedMsg2","KillReportFinalBlow","KillReportVictim","KillRightAvailable","KillRightAvailableOpen","KillRightEarned","KillRightUnavailable","KillRightUnavailableOpen","KillRightUsed","LocateCharMsg","MadeWarMutual","MercOfferRetractedMsg","MercOfferedNegotiationMsg","MissionOfferExpirationMsg","MissionTimeoutMsg","MoonminingAutomaticFracture","MoonminingExtractionCancelled","MoonminingExtractionFinished","MoonminingExtractionStarted","MoonminingLaserFired","MutualWarExpired","MutualWarInviteAccepted","MutualWarInviteRejected","MutualWarInviteSent","NPCStandingsGained","NPCStandingsLost","OfferToAllyRetracted","OfferedSurrender","OfferedToAlly","OldLscMessages","OperationFinished","OrbitalAttacked","OrbitalReinforced","OwnershipTransferred","RaffleCreated","RaffleExpired","RaffleFinished","ReimbursementMsg","ResearchMissionAvailableMsg","RetractsWar","SeasonalChallengeCompleted","SovAllClaimAquiredMsg","SovAllClaimLostMsg","SovCommandNodeEventStarted","SovCorpBillLateMsg","SovCorpClaimFailMsg","SovDisruptorMsg","SovStationEnteredFreeport","SovStructureDestroyed","SovStructureReinforced","SovStructureSelfDestructCancel","SovStructureSelfDestructFinished","SovStructureSelfDestructRequested","SovereigntyIHDamageMsg","SovereigntySBUDamageMsg","SovereigntyTCUDamageMsg","StationAggressionMsg1","StationAggressionMsg2","StationConquerMsg","StationServiceDisabled","StationServiceEnabled","StationStateChangeMsg","StoryLineMissionAvailableMsg","StructureAnchoring","StructureCourierContractChanged","StructureDestroyed","StructureFuelAlert","StructureItemsDelivered","StructureItemsMovedToSafety","StructureLostArmor","StructureLostShields","StructureOnline","StructureServicesOffline","StructureUnanchoring","StructureUnderAttack","StructureWentHighPower","StructureWentLowPower","StructuresJobsCancelled","StructuresJobsPaused","StructuresReinforcementChanged","TowerAlertMsg","TowerResourceAlertMsg","TransactionReversalMsg","TutorialMsg","WarAdopted ","WarAllyInherited","WarAllyOfferDeclinedMsg","WarConcordInvalidates","WarDeclared","WarHQRemovedFromSpace","WarInherited","WarInvalid","WarRetracted","WarRetractedByConcord","WarSurrenderDeclinedMsg","WarSurrenderOfferMsg"],"title":"get_characters_character_id_notifications_type","type":"string"}},"required":["notification_id","type","sender_id","sender_type","timestamp"],"title":"get_characters_character_id_notifications_200_ok","type":"object"},"maxItems":500,"title":"get_characters_character_id_notifications_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_notifications.v1"]}],"summary":"Get character notifications","tags":["Character"],"x-alternate-versions":["dev","v5"],"x-cached-seconds":600}},"/characters/{character_id}/notifications/contacts/":{"get":{"description":"Return notifications about having been added to someone's contact list\n\n---\nAlternate route: `/dev/characters/{character_id}/notifications/contacts/`\n\nAlternate route: `/legacy/characters/{character_id}/notifications/contacts/`\n\nAlternate route: `/v1/characters/{character_id}/notifications/contacts/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_notifications_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contact notifications","examples":{"application/json":[{"message":"hello friend :3","notification_id":1,"send_date":"2017-08-16T10:08:00Z","sender_character_id":95465499,"standing_level":1.5}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"message":{"description":"message string","title":"get_characters_character_id_notifications_contacts_message","type":"string"},"notification_id":{"description":"notification_id integer","format":"int32","title":"get_characters_character_id_notifications_contacts_notification_id","type":"integer"},"send_date":{"description":"send_date string","format":"date-time","title":"get_characters_character_id_notifications_contacts_send_date","type":"string"},"sender_character_id":{"description":"sender_character_id integer","format":"int32","title":"get_characters_character_id_notifications_contacts_sender_character_id","type":"integer"},"standing_level":{"description":"A number representing the standing level the receiver has been added at by the sender. The standing levels are as follows: -10 -> Terrible | -5 -> Bad | 0 -> Neutral | 5 -> Good | 10 -> Excellent","format":"float","title":"get_characters_character_id_notifications_contacts_standing_level","type":"number"}},"required":["notification_id","send_date","standing_level","message","sender_character_id"],"title":"get_characters_character_id_notifications_contacts_200_ok","type":"object"},"maxItems":50,"title":"get_characters_character_id_notifications_contacts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_notifications.v1"]}],"summary":"Get new contact notifications","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":600}},"/characters/{character_id}/online/":{"get":{"description":"Checks if the character is currently online\n\n---\nAlternate route: `/dev/characters/{character_id}/online/`\n\nAlternate route: `/v2/characters/{character_id}/online/`\n\nAlternate route: `/v3/characters/{character_id}/online/`\n\n---\nThis route is cached for up to 60 seconds","operationId":"get_characters_character_id_online","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Object describing the character's online status","examples":{"application/json":{"last_login":"2017-01-02T03:04:05Z","last_logout":"2017-01-02T04:05:06Z","logins":9001,"online":true}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"last_login":{"description":"Timestamp of the last login","format":"date-time","title":"get_characters_character_id_online_last_login","type":"string"},"last_logout":{"description":"Timestamp of the last logout","format":"date-time","title":"get_characters_character_id_online_last_logout","type":"string"},"logins":{"description":"Total number of times the character has logged in","format":"int32","title":"get_characters_character_id_online_logins","type":"integer"},"online":{"description":"If the character is online","title":"get_characters_character_id_online_online","type":"boolean"}},"required":["online"],"title":"get_characters_character_id_online_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-location.read_online.v1"]}],"summary":"Get character online","tags":["Location"],"x-alternate-versions":["dev","v2","v3"],"x-cached-seconds":60}},"/characters/{character_id}/opportunities/":{"get":{"description":"Return a list of tasks finished by a character\n\n---\nAlternate route: `/dev/characters/{character_id}/opportunities/`\n\nAlternate route: `/legacy/characters/{character_id}/opportunities/`\n\nAlternate route: `/v1/characters/{character_id}/opportunities/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_opportunities","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of opportunities task ids","examples":{"application/json":[{"completed_at":"2016-04-29T12:34:56Z","task_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"completed_at":{"description":"completed_at string","format":"date-time","title":"get_characters_character_id_opportunities_completed_at","type":"string"},"task_id":{"description":"task_id integer","format":"int32","title":"get_characters_character_id_opportunities_task_id","type":"integer"}},"required":["task_id","completed_at"],"title":"get_characters_character_id_opportunities_200_ok","type":"object"},"maxItems":100,"title":"get_characters_character_id_opportunities_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_opportunities.v1"]}],"summary":"Get a character's completed tasks","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/orders/":{"get":{"description":"List open market orders placed by a character\n\n---\nAlternate route: `/dev/characters/{character_id}/orders/`\n\nAlternate route: `/v2/characters/{character_id}/orders/`\n\n---\nThis route is cached for up to 1200 seconds","operationId":"get_characters_character_id_orders","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Open market orders placed by a character","examples":{"application/json":[{"duration":30,"escrow":45.6,"is_buy_order":true,"is_corporation":false,"issued":"2016-09-03T05:12:25Z","location_id":456,"min_volume":1,"order_id":123,"price":33.3,"range":"station","region_id":123,"type_id":456,"volume_remain":4422,"volume_total":123456}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"Number of days for which order is valid (starting from the issued date). An order expires at time issued + duration","format":"int32","title":"get_characters_character_id_orders_duration","type":"integer"},"escrow":{"description":"For buy orders, the amount of ISK in escrow","format":"double","title":"get_characters_character_id_orders_escrow","type":"number"},"is_buy_order":{"description":"True if the order is a bid (buy) order","title":"get_characters_character_id_orders_is_buy_order","type":"boolean"},"is_corporation":{"description":"Signifies whether the buy/sell order was placed on behalf of a corporation.","title":"get_characters_character_id_orders_is_corporation","type":"boolean"},"issued":{"description":"Date and time when this order was issued","format":"date-time","title":"get_characters_character_id_orders_issued","type":"string"},"location_id":{"description":"ID of the location where order was placed","format":"int64","title":"get_characters_character_id_orders_location_id","type":"integer"},"min_volume":{"description":"For buy orders, the minimum quantity that will be accepted in a matching sell order","format":"int32","title":"get_characters_character_id_orders_min_volume","type":"integer"},"order_id":{"description":"Unique order ID","format":"int64","title":"get_characters_character_id_orders_order_id","type":"integer"},"price":{"description":"Cost per unit for this order","format":"double","title":"get_characters_character_id_orders_price","type":"number"},"range":{"description":"Valid order range, numbers are ranges in jumps","enum":["1","10","2","20","3","30","4","40","5","region","solarsystem","station"],"title":"get_characters_character_id_orders_range","type":"string"},"region_id":{"description":"ID of the region where order was placed","format":"int32","title":"get_characters_character_id_orders_region_id","type":"integer"},"type_id":{"description":"The type ID of the item transacted in this order","format":"int32","title":"get_characters_character_id_orders_type_id","type":"integer"},"volume_remain":{"description":"Quantity of items still required or offered","format":"int32","title":"get_characters_character_id_orders_volume_remain","type":"integer"},"volume_total":{"description":"Quantity of items required or offered at time order was placed","format":"int32","title":"get_characters_character_id_orders_volume_total","type":"integer"}},"required":["is_corporation","duration","order_id","type_id","region_id","location_id","range","price","volume_total","volume_remain","issued"],"title":"get_characters_character_id_orders_200_ok","type":"object"},"maxItems":305,"title":"get_characters_character_id_orders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.read_character_orders.v1"]}],"summary":"List open orders from a character","tags":["Market"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":1200}},"/characters/{character_id}/orders/history/":{"get":{"description":"List cancelled and expired market orders placed by a character up to 90 days in the past.\n\n---\nAlternate route: `/dev/characters/{character_id}/orders/history/`\n\nAlternate route: `/legacy/characters/{character_id}/orders/history/`\n\nAlternate route: `/v1/characters/{character_id}/orders/history/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_orders_history","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Expired and cancelled market orders placed by a character","examples":{"application/json":[{"duration":30,"escrow":45.6,"is_buy_order":true,"is_corporation":false,"issued":"2016-09-03T05:12:25Z","location_id":456,"min_volume":1,"order_id":123,"price":33.3,"range":"station","region_id":123,"state":"expired","type_id":456,"volume_remain":4422,"volume_total":123456}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"Number of days the order was valid for (starting from the issued date). An order expires at time issued + duration","format":"int32","title":"get_characters_character_id_orders_history_duration","type":"integer"},"escrow":{"description":"For buy orders, the amount of ISK in escrow","format":"double","title":"get_characters_character_id_orders_history_escrow","type":"number"},"is_buy_order":{"description":"True if the order is a bid (buy) order","title":"get_characters_character_id_orders_history_is_buy_order","type":"boolean"},"is_corporation":{"description":"Signifies whether the buy/sell order was placed on behalf of a corporation.","title":"get_characters_character_id_orders_history_is_corporation","type":"boolean"},"issued":{"description":"Date and time when this order was issued","format":"date-time","title":"get_characters_character_id_orders_history_issued","type":"string"},"location_id":{"description":"ID of the location where order was placed","format":"int64","title":"get_characters_character_id_orders_history_location_id","type":"integer"},"min_volume":{"description":"For buy orders, the minimum quantity that will be accepted in a matching sell order","format":"int32","title":"get_characters_character_id_orders_history_min_volume","type":"integer"},"order_id":{"description":"Unique order ID","format":"int64","title":"get_characters_character_id_orders_history_order_id","type":"integer"},"price":{"description":"Cost per unit for this order","format":"double","title":"get_characters_character_id_orders_history_price","type":"number"},"range":{"description":"Valid order range, numbers are ranges in jumps","enum":["1","10","2","20","3","30","4","40","5","region","solarsystem","station"],"title":"get_characters_character_id_orders_history_range","type":"string"},"region_id":{"description":"ID of the region where order was placed","format":"int32","title":"get_characters_character_id_orders_history_region_id","type":"integer"},"state":{"description":"Current order state","enum":["cancelled","expired"],"title":"get_characters_character_id_orders_history_state","type":"string"},"type_id":{"description":"The type ID of the item transacted in this order","format":"int32","title":"get_characters_character_id_orders_history_type_id","type":"integer"},"volume_remain":{"description":"Quantity of items still required or offered","format":"int32","title":"get_characters_character_id_orders_history_volume_remain","type":"integer"},"volume_total":{"description":"Quantity of items required or offered at time order was placed","format":"int32","title":"get_characters_character_id_orders_history_volume_total","type":"integer"}},"required":["is_corporation","duration","state","order_id","type_id","region_id","location_id","range","price","volume_total","volume_remain","issued"],"title":"get_characters_character_id_orders_history_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_orders_history_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.read_character_orders.v1"]}],"summary":"List historical orders by a character","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/planets/":{"get":{"description":"Returns a list of all planetary colonies owned by a character.\n\n---\nAlternate route: `/dev/characters/{character_id}/planets/`\n\nAlternate route: `/legacy/characters/{character_id}/planets/`\n\nAlternate route: `/v1/characters/{character_id}/planets/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_planets","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of colonies","examples":{"application/json":[{"last_update":"2016-11-28T16:42:51Z","num_pins":1,"owner_id":90000001,"planet_id":40023691,"planet_type":"plasma","solar_system_id":30000379,"upgrade_level":0},{"last_update":"2016-11-28T16:41:54Z","num_pins":1,"owner_id":90000001,"planet_id":40023697,"planet_type":"barren","solar_system_id":30000379,"upgrade_level":0}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"last_update":{"description":"last_update string","format":"date-time","title":"get_characters_character_id_planets_last_update","type":"string"},"num_pins":{"description":"num_pins integer","format":"int32","minimum":1,"title":"get_characters_character_id_planets_num_pins","type":"integer"},"owner_id":{"description":"owner_id integer","format":"int32","title":"get_characters_character_id_planets_owner_id","type":"integer"},"planet_id":{"description":"planet_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id","type":"integer"},"planet_type":{"description":"planet_type string","enum":["temperate","barren","oceanic","ice","gas","lava","storm","plasma"],"title":"get_characters_character_id_planets_planet_type","type":"string"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_characters_character_id_planets_solar_system_id","type":"integer"},"upgrade_level":{"description":"upgrade_level integer","format":"int32","maximum":5,"minimum":0,"title":"get_characters_character_id_planets_upgrade_level","type":"integer"}},"required":["solar_system_id","planet_id","planet_type","owner_id","last_update","upgrade_level","num_pins"],"title":"get_characters_character_id_planets_200_ok","type":"object"},"maxItems":10,"title":"get_characters_character_id_planets_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-planets.manage_planets.v1"]}],"summary":"Get colonies","tags":["Planetary Interaction"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":600}},"/characters/{character_id}/planets/{planet_id}/":{"get":{"description":"Returns full details on the layout of a single planetary colony, including links, pins and routes. Note: Planetary information is only recalculated when the colony is viewed through the client. Information will not update until this criteria is met.\n\n---\nAlternate route: `/dev/characters/{character_id}/planets/{planet_id}/`\n\nAlternate route: `/v3/characters/{character_id}/planets/{planet_id}/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_planets_planet_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Planet id of the target planet","format":"int32","in":"path","name":"planet_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Colony layout","examples":{"application/json":{"links":[{"destination_pin_id":1000000017022,"link_level":0,"source_pin_id":1000000017021}],"pins":[{"latitude":1.55087844973,"longitude":0.717145933308,"pin_id":1000000017021,"type_id":2254},{"latitude":1.53360639935,"longitude":0.709775584394,"pin_id":1000000017022,"type_id":2256}],"routes":[{"content_type_id":2393,"destination_pin_id":1000000017030,"quantity":20,"route_id":4,"source_pin_id":1000000017029}]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"links":{"description":"links array","items":{"description":"link object","properties":{"destination_pin_id":{"description":"destination_pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_destination_pin_id","type":"integer"},"link_level":{"description":"link_level integer","format":"int32","maximum":10,"minimum":0,"title":"get_characters_character_id_planets_planet_id_link_level","type":"integer"},"source_pin_id":{"description":"source_pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_source_pin_id","type":"integer"}},"required":["source_pin_id","destination_pin_id","link_level"],"title":"get_characters_character_id_planets_planet_id_link","type":"object"},"maxItems":500,"title":"get_characters_character_id_planets_planet_id_links","type":"array"},"pins":{"description":"pins array","items":{"description":"pin object","properties":{"contents":{"description":"contents array","items":{"description":"content object","properties":{"amount":{"description":"amount integer","format":"int64","title":"get_characters_character_id_planets_planet_id_amount","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_content_type_id","type":"integer"}},"required":["type_id","amount"],"title":"get_characters_character_id_planets_planet_id_content","type":"object"},"maxItems":90,"title":"get_characters_character_id_planets_planet_id_contents","type":"array"},"expiry_time":{"description":"expiry_time string","format":"date-time","title":"get_characters_character_id_planets_planet_id_expiry_time","type":"string"},"extractor_details":{"description":"extractor_details object","properties":{"cycle_time":{"description":"in seconds","format":"int32","title":"get_characters_character_id_planets_planet_id_cycle_time","type":"integer"},"head_radius":{"description":"head_radius number","format":"float","title":"get_characters_character_id_planets_planet_id_head_radius","type":"number"},"heads":{"description":"heads array","items":{"description":"head object","properties":{"head_id":{"description":"head_id integer","format":"int32","maximum":9,"minimum":0,"title":"get_characters_character_id_planets_planet_id_head_id","type":"integer"},"latitude":{"description":"latitude number","format":"float","title":"get_characters_character_id_planets_planet_id_head_latitude","type":"number"},"longitude":{"description":"longitude number","format":"float","title":"get_characters_character_id_planets_planet_id_head_longitude","type":"number"}},"required":["head_id","latitude","longitude"],"title":"get_characters_character_id_planets_planet_id_head","type":"object"},"maxItems":10,"title":"get_characters_character_id_planets_planet_id_heads","type":"array"},"product_type_id":{"description":"product_type_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_product_type_id","type":"integer"},"qty_per_cycle":{"description":"qty_per_cycle integer","format":"int32","title":"get_characters_character_id_planets_planet_id_qty_per_cycle","type":"integer"}},"required":["heads"],"title":"get_characters_character_id_planets_planet_id_extractor_details","type":"object"},"factory_details":{"description":"factory_details object","properties":{"schematic_id":{"description":"schematic_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_factory_details_schematic_id","type":"integer"}},"required":["schematic_id"],"title":"get_characters_character_id_planets_planet_id_factory_details","type":"object"},"install_time":{"description":"install_time string","format":"date-time","title":"get_characters_character_id_planets_planet_id_install_time","type":"string"},"last_cycle_start":{"description":"last_cycle_start string","format":"date-time","title":"get_characters_character_id_planets_planet_id_last_cycle_start","type":"string"},"latitude":{"description":"latitude number","format":"float","title":"get_characters_character_id_planets_planet_id_latitude","type":"number"},"longitude":{"description":"longitude number","format":"float","title":"get_characters_character_id_planets_planet_id_longitude","type":"number"},"pin_id":{"description":"pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_pin_id","type":"integer"},"schematic_id":{"description":"schematic_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_schematic_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_type_id","type":"integer"}},"required":["pin_id","type_id","latitude","longitude"],"title":"get_characters_character_id_planets_planet_id_pin","type":"object"},"maxItems":100,"title":"get_characters_character_id_planets_planet_id_pins","type":"array"},"routes":{"description":"routes array","items":{"description":"route object","properties":{"content_type_id":{"description":"content_type_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_route_content_type_id","type":"integer"},"destination_pin_id":{"description":"destination_pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_route_destination_pin_id","type":"integer"},"quantity":{"description":"quantity number","format":"float","title":"get_characters_character_id_planets_planet_id_quantity","type":"number"},"route_id":{"description":"route_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_route_id","type":"integer"},"source_pin_id":{"description":"source_pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_route_source_pin_id","type":"integer"},"waypoints":{"description":"list of pin ID waypoints","items":{"description":"waypoint integer","format":"int64","title":"get_characters_character_id_planets_planet_id_waypoint","type":"integer"},"maxItems":5,"title":"get_characters_character_id_planets_planet_id_waypoints","type":"array"}},"required":["route_id","source_pin_id","destination_pin_id","content_type_id","quantity"],"title":"get_characters_character_id_planets_planet_id_route","type":"object"},"maxItems":1000,"title":"get_characters_character_id_planets_planet_id_routes","type":"array"}},"required":["links","pins","routes"],"title":"get_characters_character_id_planets_planet_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Colony not found","examples":{"application/json":{"error":"Colony not found"}},"schema":{"description":"Colony not found","properties":{"error":{"description":"error message","title":"get_characters_character_id_planets_planet_id_error","type":"string"}},"title":"get_characters_character_id_planets_planet_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-planets.manage_planets.v1"]}],"summary":"Get colony layout","tags":["Planetary Interaction"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":600}},"/characters/{character_id}/portrait/":{"get":{"description":"Get portrait urls for a character\n\n---\nAlternate route: `/v2/characters/{character_id}/portrait/`\n\n---\nThis route expires daily at 11:05\n\n---\n[Diff of the upcoming changes](https://esi.evetech.net/diff/latest/dev/#GET-/characters/{character_id}/portrait/)","operationId":"get_characters_character_id_portrait","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Public data for the given character","examples":{"application/json":{"px128x128":"https://images.evetech.net/Character/95465499_128.jpg","px256x256":"https://images.evetech.net/Character/95465499_256.jpg","px512x512":"https://images.evetech.net/Character/95465499_512.jpg","px64x64":"https://images.evetech.net/Character/95465499_64.jpg"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"px128x128":{"description":"px128x128 string","title":"get_characters_character_id_portrait_px128x128","type":"string"},"px256x256":{"description":"px256x256 string","title":"get_characters_character_id_portrait_px256x256","type":"string"},"px512x512":{"description":"px512x512 string","title":"get_characters_character_id_portrait_px512x512","type":"string"},"px64x64":{"description":"px64x64 string","title":"get_characters_character_id_portrait_px64x64","type":"string"}},"title":"get_characters_character_id_portrait_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No image server for this datasource","examples":{"application/json":{"error":"No image server for this datasource"}},"schema":{"description":"No image server for this datasource","properties":{"error":{"description":"error message","title":"get_characters_character_id_portrait_error","type":"string"}},"title":"get_characters_character_id_portrait_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get character portraits","tags":["Character"],"x-alternate-versions":["v2"]}},"/characters/{character_id}/roles/":{"get":{"description":"Returns a character's corporation roles\n\n---\nAlternate route: `/dev/characters/{character_id}/roles/`\n\nAlternate route: `/v2/characters/{character_id}/roles/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_roles","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"The character's roles in thier corporation","examples":{"application/json":{"roles":["Director","Station_Manager"]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"roles":{"description":"roles array","items":{"description":"role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_characters_character_id_roles_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_characters_character_id_roles_roles","type":"array"},"roles_at_base":{"description":"roles_at_base array","items":{"description":"roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_characters_character_id_roles_roles_at_base_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_characters_character_id_roles_roles_at_base","type":"array"},"roles_at_hq":{"description":"roles_at_hq array","items":{"description":"roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_characters_character_id_roles_roles_at_hq_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_characters_character_id_roles_roles_at_hq","type":"array"},"roles_at_other":{"description":"roles_at_other array","items":{"description":"roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_characters_character_id_roles_roles_at_other_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_characters_character_id_roles_roles_at_other","type":"array"}},"title":"get_characters_character_id_roles_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_corporation_roles.v1"]}],"summary":"Get character corporation roles","tags":["Character"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/characters/{character_id}/search/":{"get":{"description":"Search for entities that match a given sub-string.\n\n---\nAlternate route: `/dev/characters/{character_id}/search/`\n\nAlternate route: `/legacy/characters/{character_id}/search/`\n\nAlternate route: `/v3/characters/{character_id}/search/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_search","parameters":[{"$ref":"#/parameters/Accept-Language"},{"description":"Type of entities to search for","in":"query","items":{"enum":["agent","alliance","character","constellation","corporation","faction","inventory_type","region","solar_system","station","structure"],"type":"string"},"maxItems":11,"minItems":1,"name":"categories","required":true,"type":"array","uniqueItems":true},{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"The string to search on","in":"query","minLength":3,"name":"search","required":true,"type":"string"},{"default":false,"description":"Whether the search should be a strict match","in":"query","name":"strict","type":"boolean"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of search results","examples":{"application/json":{"solar_system":[30002510],"station":[60004588,60004594,60005725,60009106,60012721,60012724,60012727]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"agent":{"description":"agent array","items":{"description":"agent integer","format":"int32","title":"get_characters_character_id_search_agent_agent","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_agent","type":"array"},"alliance":{"description":"alliance array","items":{"description":"alliance integer","format":"int32","title":"get_characters_character_id_search_alliance_alliance","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_alliance","type":"array"},"character":{"description":"character array","items":{"description":"character integer","format":"int32","title":"get_characters_character_id_search_character_character","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_character","type":"array"},"constellation":{"description":"constellation array","items":{"description":"constellation integer","format":"int32","title":"get_characters_character_id_search_constellation_constellation","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_constellation","type":"array"},"corporation":{"description":"corporation array","items":{"description":"corporation integer","format":"int32","title":"get_characters_character_id_search_corporation_corporation","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_corporation","type":"array"},"faction":{"description":"faction array","items":{"description":"faction integer","format":"int32","title":"get_characters_character_id_search_faction_faction","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_faction","type":"array"},"inventory_type":{"description":"inventory_type array","items":{"description":"inventory_type integer","format":"int32","title":"get_characters_character_id_search_inventory_type_inventory_type","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_inventory_type","type":"array"},"region":{"description":"region array","items":{"description":"region integer","format":"int32","title":"get_characters_character_id_search_region_region","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_region","type":"array"},"solar_system":{"description":"solar_system array","items":{"description":"solar_system integer","format":"int32","title":"get_characters_character_id_search_solar_system_solar_system","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_solar_system","type":"array"},"station":{"description":"station array","items":{"description":"station integer","format":"int32","title":"get_characters_character_id_search_station_station","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_station","type":"array"},"structure":{"description":"structure array","items":{"description":"structure integer","format":"int64","title":"get_characters_character_id_search_structure_structure","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_structure","type":"array"}},"title":"get_characters_character_id_search_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-search.search_structures.v1"]}],"summary":"Search on a string","tags":["Search"],"x-alternate-versions":["dev","legacy","v3"],"x-cached-seconds":3600}},"/characters/{character_id}/ship/":{"get":{"description":"Get the current ship type, name and id\n\n---\nAlternate route: `/dev/characters/{character_id}/ship/`\n\nAlternate route: `/legacy/characters/{character_id}/ship/`\n\nAlternate route: `/v1/characters/{character_id}/ship/`\n\nAlternate route: `/v2/characters/{character_id}/ship/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_characters_character_id_ship","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Get the current ship type, name and id","examples":{"application/json":{"ship_item_id":1000000016991,"ship_name":"SPACESHIPS!!!","ship_type_id":1233}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"ship_item_id":{"description":"Item id's are unique to a ship and persist until it is repackaged. This value can be used to track repeated uses of a ship, or detect when a pilot changes into a different instance of the same ship type.","format":"int64","title":"get_characters_character_id_ship_ship_item_id","type":"integer"},"ship_name":{"description":"ship_name string","title":"get_characters_character_id_ship_ship_name","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_characters_character_id_ship_ship_type_id","type":"integer"}},"required":["ship_type_id","ship_item_id","ship_name"],"title":"get_characters_character_id_ship_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-location.read_ship_type.v1"]}],"summary":"Get current ship","tags":["Location"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":5}},"/characters/{character_id}/skillqueue/":{"get":{"description":"List the configured skill queue for the given character\n\n---\nAlternate route: `/dev/characters/{character_id}/skillqueue/`\n\nAlternate route: `/legacy/characters/{character_id}/skillqueue/`\n\nAlternate route: `/v2/characters/{character_id}/skillqueue/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_skillqueue","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"The current skill queue, sorted ascending by finishing time","examples":{"application/json":[{"finish_date":"2016-06-29T10:47:00Z","finished_level":3,"queue_position":0,"skill_id":1,"start_date":"2016-06-29T10:46:00Z"},{"finish_date":"2016-07-15T10:47:00Z","finished_level":4,"queue_position":1,"skill_id":1,"start_date":"2016-06-29T10:47:00Z"},{"finish_date":"2016-08-30T10:47:00Z","finished_level":2,"queue_position":2,"skill_id":2,"start_date":"2016-07-15T10:47:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"finish_date":{"description":"Date on which training of the skill will complete. Omitted if the skill queue is paused.","format":"date-time","title":"get_characters_character_id_skillqueue_finish_date","type":"string"},"finished_level":{"description":"finished_level integer","format":"int32","maximum":5,"minimum":0,"title":"get_characters_character_id_skillqueue_finished_level","type":"integer"},"level_end_sp":{"description":"level_end_sp integer","format":"int32","title":"get_characters_character_id_skillqueue_level_end_sp","type":"integer"},"level_start_sp":{"description":"Amount of SP that was in the skill when it started training it's current level. Used to calculate % of current level complete.","format":"int32","title":"get_characters_character_id_skillqueue_level_start_sp","type":"integer"},"queue_position":{"description":"queue_position integer","format":"int32","title":"get_characters_character_id_skillqueue_queue_position","type":"integer"},"skill_id":{"description":"skill_id integer","format":"int32","title":"get_characters_character_id_skillqueue_skill_id","type":"integer"},"start_date":{"description":"start_date string","format":"date-time","title":"get_characters_character_id_skillqueue_start_date","type":"string"},"training_start_sp":{"description":"training_start_sp integer","format":"int32","title":"get_characters_character_id_skillqueue_training_start_sp","type":"integer"}},"required":["skill_id","finished_level","queue_position"],"title":"get_characters_character_id_skillqueue_200_ok","type":"object"},"maxItems":51,"title":"get_characters_character_id_skillqueue_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-skills.read_skillqueue.v1"]}],"summary":"Get character's skill queue","tags":["Skills"],"x-alternate-versions":["dev","legacy","v2"],"x-cached-seconds":120}},"/characters/{character_id}/skills/":{"get":{"description":"List all trained skills for the given character\n\n---\nAlternate route: `/dev/characters/{character_id}/skills/`\n\nAlternate route: `/v4/characters/{character_id}/skills/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_skills","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Known skills for the character","examples":{"application/json":{"skills":[{"active_skill_level":3,"skill_id":1,"skillpoints_in_skill":10000,"trained_skill_level":4},{"active_skill_level":1,"skill_id":2,"skillpoints_in_skill":10000,"trained_skill_level":1}],"total_sp":20000}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"skills":{"description":"skills array","items":{"description":"skill object","properties":{"active_skill_level":{"description":"active_skill_level integer","format":"int32","title":"get_characters_character_id_skills_active_skill_level","type":"integer"},"skill_id":{"description":"skill_id integer","format":"int32","title":"get_characters_character_id_skills_skill_id","type":"integer"},"skillpoints_in_skill":{"description":"skillpoints_in_skill integer","format":"int64","title":"get_characters_character_id_skills_skillpoints_in_skill","type":"integer"},"trained_skill_level":{"description":"trained_skill_level integer","format":"int32","title":"get_characters_character_id_skills_trained_skill_level","type":"integer"}},"required":["skill_id","skillpoints_in_skill","trained_skill_level","active_skill_level"],"title":"get_characters_character_id_skills_skill","type":"object"},"maxItems":1000,"title":"get_characters_character_id_skills_skills","type":"array"},"total_sp":{"description":"total_sp integer","format":"int64","title":"get_characters_character_id_skills_total_sp","type":"integer"},"unallocated_sp":{"description":"Skill points available to be assigned","format":"int32","title":"get_characters_character_id_skills_unallocated_sp","type":"integer"}},"required":["skills","total_sp"],"title":"get_characters_character_id_skills_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-skills.read_skills.v1"]}],"summary":"Get character skills","tags":["Skills"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":120}},"/characters/{character_id}/standings/":{"get":{"description":"Return character standings from agents, NPC corporations, and factions\n\n---\nAlternate route: `/dev/characters/{character_id}/standings/`\n\nAlternate route: `/legacy/characters/{character_id}/standings/`\n\nAlternate route: `/v1/characters/{character_id}/standings/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_standings","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of standings","examples":{"application/json":[{"from_id":3009841,"from_type":"agent","standing":0.1},{"from_id":1000061,"from_type":"npc_corp","standing":0},{"from_id":500003,"from_type":"faction","standing":-1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"from_id":{"description":"from_id integer","format":"int32","title":"get_characters_character_id_standings_from_id","type":"integer"},"from_type":{"description":"from_type string","enum":["agent","npc_corp","faction"],"title":"get_characters_character_id_standings_from_type","type":"string"},"standing":{"description":"standing number","format":"float","title":"get_characters_character_id_standings_standing","type":"number"}},"required":["from_id","from_type","standing"],"title":"get_characters_character_id_standings_200_ok","type":"object"},"maxItems":10000,"title":"get_characters_character_id_standings_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_standings.v1"]}],"summary":"Get standings","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/stats/":{"get":{"description":"Returns aggregate yearly stats for a character\n\n---\nAlternate route: `/dev/characters/{character_id}/stats/`\n\nAlternate route: `/v2/characters/{character_id}/stats/`\n\n---\nThis route is cached for up to 86400 seconds","operationId":"get_characters_character_id_stats","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Character stats","examples":{"application/json":[{"character":{"days_of_activity":365,"minutes":1000000,"sessions_started":500},"combat":{"kills_low_sec":42},"year":2014},{"character":{"days_of_activity":365,"minutes":1000000,"sessions_started":500},"combat":{"kills_null_sec":1337},"year":2015}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"List of character aggregate stats","items":{"description":"Aggregate stats for a year","properties":{"character":{"description":"character object","properties":{"days_of_activity":{"description":"days_of_activity integer","format":"int64","title":"get_characters_character_id_stats_days_of_activity","type":"integer"},"minutes":{"description":"minutes integer","format":"int64","title":"get_characters_character_id_stats_minutes","type":"integer"},"sessions_started":{"description":"sessions_started integer","format":"int64","title":"get_characters_character_id_stats_sessions_started","type":"integer"}},"title":"get_characters_character_id_stats_character","type":"object"},"combat":{"description":"combat object","properties":{"cap_drainedby_npc":{"description":"cap_drainedby_npc integer","format":"int64","title":"get_characters_character_id_stats_cap_drainedby_npc","type":"integer"},"cap_drainedby_pc":{"description":"cap_drainedby_pc integer","format":"int64","title":"get_characters_character_id_stats_cap_drainedby_pc","type":"integer"},"cap_draining_pc":{"description":"cap_draining_pc integer","format":"int64","title":"get_characters_character_id_stats_cap_draining_pc","type":"integer"},"criminal_flag_set":{"description":"criminal_flag_set integer","format":"int64","title":"get_characters_character_id_stats_criminal_flag_set","type":"integer"},"damage_from_np_cs_amount":{"description":"damage_from_np_cs_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_np_cs_amount","type":"integer"},"damage_from_np_cs_num_shots":{"description":"damage_from_np_cs_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_np_cs_num_shots","type":"integer"},"damage_from_players_bomb_amount":{"description":"damage_from_players_bomb_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_bomb_amount","type":"integer"},"damage_from_players_bomb_num_shots":{"description":"damage_from_players_bomb_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_bomb_num_shots","type":"integer"},"damage_from_players_combat_drone_amount":{"description":"damage_from_players_combat_drone_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_combat_drone_amount","type":"integer"},"damage_from_players_combat_drone_num_shots":{"description":"damage_from_players_combat_drone_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_combat_drone_num_shots","type":"integer"},"damage_from_players_energy_amount":{"description":"damage_from_players_energy_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_energy_amount","type":"integer"},"damage_from_players_energy_num_shots":{"description":"damage_from_players_energy_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_energy_num_shots","type":"integer"},"damage_from_players_fighter_bomber_amount":{"description":"damage_from_players_fighter_bomber_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_fighter_bomber_amount","type":"integer"},"damage_from_players_fighter_bomber_num_shots":{"description":"damage_from_players_fighter_bomber_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_fighter_bomber_num_shots","type":"integer"},"damage_from_players_fighter_drone_amount":{"description":"damage_from_players_fighter_drone_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_fighter_drone_amount","type":"integer"},"damage_from_players_fighter_drone_num_shots":{"description":"damage_from_players_fighter_drone_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_fighter_drone_num_shots","type":"integer"},"damage_from_players_hybrid_amount":{"description":"damage_from_players_hybrid_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_hybrid_amount","type":"integer"},"damage_from_players_hybrid_num_shots":{"description":"damage_from_players_hybrid_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_hybrid_num_shots","type":"integer"},"damage_from_players_missile_amount":{"description":"damage_from_players_missile_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_missile_amount","type":"integer"},"damage_from_players_missile_num_shots":{"description":"damage_from_players_missile_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_missile_num_shots","type":"integer"},"damage_from_players_projectile_amount":{"description":"damage_from_players_projectile_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_projectile_amount","type":"integer"},"damage_from_players_projectile_num_shots":{"description":"damage_from_players_projectile_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_projectile_num_shots","type":"integer"},"damage_from_players_smart_bomb_amount":{"description":"damage_from_players_smart_bomb_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_smart_bomb_amount","type":"integer"},"damage_from_players_smart_bomb_num_shots":{"description":"damage_from_players_smart_bomb_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_smart_bomb_num_shots","type":"integer"},"damage_from_players_super_amount":{"description":"damage_from_players_super_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_super_amount","type":"integer"},"damage_from_players_super_num_shots":{"description":"damage_from_players_super_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_super_num_shots","type":"integer"},"damage_from_structures_total_amount":{"description":"damage_from_structures_total_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_structures_total_amount","type":"integer"},"damage_from_structures_total_num_shots":{"description":"damage_from_structures_total_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_structures_total_num_shots","type":"integer"},"damage_to_players_bomb_amount":{"description":"damage_to_players_bomb_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_bomb_amount","type":"integer"},"damage_to_players_bomb_num_shots":{"description":"damage_to_players_bomb_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_bomb_num_shots","type":"integer"},"damage_to_players_combat_drone_amount":{"description":"damage_to_players_combat_drone_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_combat_drone_amount","type":"integer"},"damage_to_players_combat_drone_num_shots":{"description":"damage_to_players_combat_drone_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_combat_drone_num_shots","type":"integer"},"damage_to_players_energy_amount":{"description":"damage_to_players_energy_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_energy_amount","type":"integer"},"damage_to_players_energy_num_shots":{"description":"damage_to_players_energy_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_energy_num_shots","type":"integer"},"damage_to_players_fighter_bomber_amount":{"description":"damage_to_players_fighter_bomber_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_fighter_bomber_amount","type":"integer"},"damage_to_players_fighter_bomber_num_shots":{"description":"damage_to_players_fighter_bomber_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_fighter_bomber_num_shots","type":"integer"},"damage_to_players_fighter_drone_amount":{"description":"damage_to_players_fighter_drone_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_fighter_drone_amount","type":"integer"},"damage_to_players_fighter_drone_num_shots":{"description":"damage_to_players_fighter_drone_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_fighter_drone_num_shots","type":"integer"},"damage_to_players_hybrid_amount":{"description":"damage_to_players_hybrid_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_hybrid_amount","type":"integer"},"damage_to_players_hybrid_num_shots":{"description":"damage_to_players_hybrid_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_hybrid_num_shots","type":"integer"},"damage_to_players_missile_amount":{"description":"damage_to_players_missile_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_missile_amount","type":"integer"},"damage_to_players_missile_num_shots":{"description":"damage_to_players_missile_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_missile_num_shots","type":"integer"},"damage_to_players_projectile_amount":{"description":"damage_to_players_projectile_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_projectile_amount","type":"integer"},"damage_to_players_projectile_num_shots":{"description":"damage_to_players_projectile_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_projectile_num_shots","type":"integer"},"damage_to_players_smart_bomb_amount":{"description":"damage_to_players_smart_bomb_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_smart_bomb_amount","type":"integer"},"damage_to_players_smart_bomb_num_shots":{"description":"damage_to_players_smart_bomb_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_smart_bomb_num_shots","type":"integer"},"damage_to_players_super_amount":{"description":"damage_to_players_super_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_super_amount","type":"integer"},"damage_to_players_super_num_shots":{"description":"damage_to_players_super_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_super_num_shots","type":"integer"},"damage_to_structures_total_amount":{"description":"damage_to_structures_total_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_structures_total_amount","type":"integer"},"damage_to_structures_total_num_shots":{"description":"damage_to_structures_total_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_structures_total_num_shots","type":"integer"},"deaths_high_sec":{"description":"deaths_high_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_high_sec","type":"integer"},"deaths_low_sec":{"description":"deaths_low_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_low_sec","type":"integer"},"deaths_null_sec":{"description":"deaths_null_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_null_sec","type":"integer"},"deaths_pod_high_sec":{"description":"deaths_pod_high_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_pod_high_sec","type":"integer"},"deaths_pod_low_sec":{"description":"deaths_pod_low_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_pod_low_sec","type":"integer"},"deaths_pod_null_sec":{"description":"deaths_pod_null_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_pod_null_sec","type":"integer"},"deaths_pod_wormhole":{"description":"deaths_pod_wormhole integer","format":"int64","title":"get_characters_character_id_stats_deaths_pod_wormhole","type":"integer"},"deaths_wormhole":{"description":"deaths_wormhole integer","format":"int64","title":"get_characters_character_id_stats_deaths_wormhole","type":"integer"},"drone_engage":{"description":"drone_engage integer","format":"int64","title":"get_characters_character_id_stats_drone_engage","type":"integer"},"dscans":{"description":"dscans integer","format":"int64","title":"get_characters_character_id_stats_dscans","type":"integer"},"duel_requested":{"description":"duel_requested integer","format":"int64","title":"get_characters_character_id_stats_duel_requested","type":"integer"},"engagement_register":{"description":"engagement_register integer","format":"int64","title":"get_characters_character_id_stats_engagement_register","type":"integer"},"kills_assists":{"description":"kills_assists integer","format":"int64","title":"get_characters_character_id_stats_kills_assists","type":"integer"},"kills_high_sec":{"description":"kills_high_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_high_sec","type":"integer"},"kills_low_sec":{"description":"kills_low_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_low_sec","type":"integer"},"kills_null_sec":{"description":"kills_null_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_null_sec","type":"integer"},"kills_pod_high_sec":{"description":"kills_pod_high_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_pod_high_sec","type":"integer"},"kills_pod_low_sec":{"description":"kills_pod_low_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_pod_low_sec","type":"integer"},"kills_pod_null_sec":{"description":"kills_pod_null_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_pod_null_sec","type":"integer"},"kills_pod_wormhole":{"description":"kills_pod_wormhole integer","format":"int64","title":"get_characters_character_id_stats_kills_pod_wormhole","type":"integer"},"kills_wormhole":{"description":"kills_wormhole integer","format":"int64","title":"get_characters_character_id_stats_kills_wormhole","type":"integer"},"npc_flag_set":{"description":"npc_flag_set integer","format":"int64","title":"get_characters_character_id_stats_npc_flag_set","type":"integer"},"probe_scans":{"description":"probe_scans integer","format":"int64","title":"get_characters_character_id_stats_probe_scans","type":"integer"},"pvp_flag_set":{"description":"pvp_flag_set integer","format":"int64","title":"get_characters_character_id_stats_pvp_flag_set","type":"integer"},"repair_armor_by_remote_amount":{"description":"repair_armor_by_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_armor_by_remote_amount","type":"integer"},"repair_armor_remote_amount":{"description":"repair_armor_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_armor_remote_amount","type":"integer"},"repair_armor_self_amount":{"description":"repair_armor_self_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_armor_self_amount","type":"integer"},"repair_capacitor_by_remote_amount":{"description":"repair_capacitor_by_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_capacitor_by_remote_amount","type":"integer"},"repair_capacitor_remote_amount":{"description":"repair_capacitor_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_capacitor_remote_amount","type":"integer"},"repair_capacitor_self_amount":{"description":"repair_capacitor_self_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_capacitor_self_amount","type":"integer"},"repair_hull_by_remote_amount":{"description":"repair_hull_by_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_hull_by_remote_amount","type":"integer"},"repair_hull_remote_amount":{"description":"repair_hull_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_hull_remote_amount","type":"integer"},"repair_hull_self_amount":{"description":"repair_hull_self_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_hull_self_amount","type":"integer"},"repair_shield_by_remote_amount":{"description":"repair_shield_by_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_shield_by_remote_amount","type":"integer"},"repair_shield_remote_amount":{"description":"repair_shield_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_shield_remote_amount","type":"integer"},"repair_shield_self_amount":{"description":"repair_shield_self_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_shield_self_amount","type":"integer"},"self_destructs":{"description":"self_destructs integer","format":"int64","title":"get_characters_character_id_stats_self_destructs","type":"integer"},"warp_scramble_pc":{"description":"warp_scramble_pc integer","format":"int64","title":"get_characters_character_id_stats_warp_scramble_pc","type":"integer"},"warp_scrambledby_npc":{"description":"warp_scrambledby_npc integer","format":"int64","title":"get_characters_character_id_stats_warp_scrambledby_npc","type":"integer"},"warp_scrambledby_pc":{"description":"warp_scrambledby_pc integer","format":"int64","title":"get_characters_character_id_stats_warp_scrambledby_pc","type":"integer"},"weapon_flag_set":{"description":"weapon_flag_set integer","format":"int64","title":"get_characters_character_id_stats_weapon_flag_set","type":"integer"},"webifiedby_npc":{"description":"webifiedby_npc integer","format":"int64","title":"get_characters_character_id_stats_webifiedby_npc","type":"integer"},"webifiedby_pc":{"description":"webifiedby_pc integer","format":"int64","title":"get_characters_character_id_stats_webifiedby_pc","type":"integer"},"webifying_pc":{"description":"webifying_pc integer","format":"int64","title":"get_characters_character_id_stats_webifying_pc","type":"integer"}},"title":"get_characters_character_id_stats_combat","type":"object"},"industry":{"description":"industry object","properties":{"hacking_successes":{"description":"hacking_successes integer","format":"int64","title":"get_characters_character_id_stats_hacking_successes","type":"integer"},"jobs_cancelled":{"description":"jobs_cancelled integer","format":"int64","title":"get_characters_character_id_stats_jobs_cancelled","type":"integer"},"jobs_completed_copy_blueprint":{"description":"jobs_completed_copy_blueprint integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_copy_blueprint","type":"integer"},"jobs_completed_invention":{"description":"jobs_completed_invention integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_invention","type":"integer"},"jobs_completed_manufacture":{"description":"jobs_completed_manufacture integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture","type":"integer"},"jobs_completed_manufacture_asteroid":{"description":"jobs_completed_manufacture_asteroid integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_asteroid","type":"integer"},"jobs_completed_manufacture_asteroid_quantity":{"description":"jobs_completed_manufacture_asteroid_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_asteroid_quantity","type":"integer"},"jobs_completed_manufacture_charge":{"description":"jobs_completed_manufacture_charge integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_charge","type":"integer"},"jobs_completed_manufacture_charge_quantity":{"description":"jobs_completed_manufacture_charge_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_charge_quantity","type":"integer"},"jobs_completed_manufacture_commodity":{"description":"jobs_completed_manufacture_commodity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_commodity","type":"integer"},"jobs_completed_manufacture_commodity_quantity":{"description":"jobs_completed_manufacture_commodity_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_commodity_quantity","type":"integer"},"jobs_completed_manufacture_deployable":{"description":"jobs_completed_manufacture_deployable integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_deployable","type":"integer"},"jobs_completed_manufacture_deployable_quantity":{"description":"jobs_completed_manufacture_deployable_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_deployable_quantity","type":"integer"},"jobs_completed_manufacture_drone":{"description":"jobs_completed_manufacture_drone integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_drone","type":"integer"},"jobs_completed_manufacture_drone_quantity":{"description":"jobs_completed_manufacture_drone_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_drone_quantity","type":"integer"},"jobs_completed_manufacture_implant":{"description":"jobs_completed_manufacture_implant integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_implant","type":"integer"},"jobs_completed_manufacture_implant_quantity":{"description":"jobs_completed_manufacture_implant_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_implant_quantity","type":"integer"},"jobs_completed_manufacture_module":{"description":"jobs_completed_manufacture_module integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_module","type":"integer"},"jobs_completed_manufacture_module_quantity":{"description":"jobs_completed_manufacture_module_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_module_quantity","type":"integer"},"jobs_completed_manufacture_other":{"description":"jobs_completed_manufacture_other integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_other","type":"integer"},"jobs_completed_manufacture_other_quantity":{"description":"jobs_completed_manufacture_other_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_other_quantity","type":"integer"},"jobs_completed_manufacture_ship":{"description":"jobs_completed_manufacture_ship integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_ship","type":"integer"},"jobs_completed_manufacture_ship_quantity":{"description":"jobs_completed_manufacture_ship_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_ship_quantity","type":"integer"},"jobs_completed_manufacture_structure":{"description":"jobs_completed_manufacture_structure integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_structure","type":"integer"},"jobs_completed_manufacture_structure_quantity":{"description":"jobs_completed_manufacture_structure_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_structure_quantity","type":"integer"},"jobs_completed_manufacture_subsystem":{"description":"jobs_completed_manufacture_subsystem integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_subsystem","type":"integer"},"jobs_completed_manufacture_subsystem_quantity":{"description":"jobs_completed_manufacture_subsystem_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_subsystem_quantity","type":"integer"},"jobs_completed_material_productivity":{"description":"jobs_completed_material_productivity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_material_productivity","type":"integer"},"jobs_completed_time_productivity":{"description":"jobs_completed_time_productivity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_time_productivity","type":"integer"},"jobs_started_copy_blueprint":{"description":"jobs_started_copy_blueprint integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_copy_blueprint","type":"integer"},"jobs_started_invention":{"description":"jobs_started_invention integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_invention","type":"integer"},"jobs_started_manufacture":{"description":"jobs_started_manufacture integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_manufacture","type":"integer"},"jobs_started_material_productivity":{"description":"jobs_started_material_productivity integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_material_productivity","type":"integer"},"jobs_started_time_productivity":{"description":"jobs_started_time_productivity integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_time_productivity","type":"integer"},"reprocess_item":{"description":"reprocess_item integer","format":"int64","title":"get_characters_character_id_stats_reprocess_item","type":"integer"},"reprocess_item_quantity":{"description":"reprocess_item_quantity integer","format":"int64","title":"get_characters_character_id_stats_reprocess_item_quantity","type":"integer"}},"title":"get_characters_character_id_stats_industry","type":"object"},"inventory":{"description":"inventory object","properties":{"abandon_loot_quantity":{"description":"abandon_loot_quantity integer","format":"int64","title":"get_characters_character_id_stats_abandon_loot_quantity","type":"integer"},"trash_item_quantity":{"description":"trash_item_quantity integer","format":"int64","title":"get_characters_character_id_stats_trash_item_quantity","type":"integer"}},"title":"get_characters_character_id_stats_inventory","type":"object"},"isk":{"description":"isk object","properties":{"in":{"description":"in integer","format":"int64","title":"get_characters_character_id_stats_in","type":"integer"},"out":{"description":"out integer","format":"int64","title":"get_characters_character_id_stats_out","type":"integer"}},"title":"get_characters_character_id_stats_isk","type":"object"},"market":{"description":"market object","properties":{"accept_contracts_courier":{"description":"accept_contracts_courier integer","format":"int64","title":"get_characters_character_id_stats_accept_contracts_courier","type":"integer"},"accept_contracts_item_exchange":{"description":"accept_contracts_item_exchange integer","format":"int64","title":"get_characters_character_id_stats_accept_contracts_item_exchange","type":"integer"},"buy_orders_placed":{"description":"buy_orders_placed integer","format":"int64","title":"get_characters_character_id_stats_buy_orders_placed","type":"integer"},"cancel_market_order":{"description":"cancel_market_order integer","format":"int64","title":"get_characters_character_id_stats_cancel_market_order","type":"integer"},"create_contracts_auction":{"description":"create_contracts_auction integer","format":"int64","title":"get_characters_character_id_stats_create_contracts_auction","type":"integer"},"create_contracts_courier":{"description":"create_contracts_courier integer","format":"int64","title":"get_characters_character_id_stats_create_contracts_courier","type":"integer"},"create_contracts_item_exchange":{"description":"create_contracts_item_exchange integer","format":"int64","title":"get_characters_character_id_stats_create_contracts_item_exchange","type":"integer"},"deliver_courier_contract":{"description":"deliver_courier_contract integer","format":"int64","title":"get_characters_character_id_stats_deliver_courier_contract","type":"integer"},"isk_gained":{"description":"isk_gained integer","format":"int64","title":"get_characters_character_id_stats_isk_gained","type":"integer"},"isk_spent":{"description":"isk_spent integer","format":"int64","title":"get_characters_character_id_stats_isk_spent","type":"integer"},"modify_market_order":{"description":"modify_market_order integer","format":"int64","title":"get_characters_character_id_stats_modify_market_order","type":"integer"},"search_contracts":{"description":"search_contracts integer","format":"int64","title":"get_characters_character_id_stats_search_contracts","type":"integer"},"sell_orders_placed":{"description":"sell_orders_placed integer","format":"int64","title":"get_characters_character_id_stats_sell_orders_placed","type":"integer"}},"title":"get_characters_character_id_stats_market","type":"object"},"mining":{"description":"mining object","properties":{"drone_mine":{"description":"drone_mine integer","format":"int64","title":"get_characters_character_id_stats_drone_mine","type":"integer"},"ore_arkonor":{"description":"ore_arkonor integer","format":"int64","title":"get_characters_character_id_stats_ore_arkonor","type":"integer"},"ore_bistot":{"description":"ore_bistot integer","format":"int64","title":"get_characters_character_id_stats_ore_bistot","type":"integer"},"ore_crokite":{"description":"ore_crokite integer","format":"int64","title":"get_characters_character_id_stats_ore_crokite","type":"integer"},"ore_dark_ochre":{"description":"ore_dark_ochre integer","format":"int64","title":"get_characters_character_id_stats_ore_dark_ochre","type":"integer"},"ore_gneiss":{"description":"ore_gneiss integer","format":"int64","title":"get_characters_character_id_stats_ore_gneiss","type":"integer"},"ore_harvestable_cloud":{"description":"ore_harvestable_cloud integer","format":"int64","title":"get_characters_character_id_stats_ore_harvestable_cloud","type":"integer"},"ore_hedbergite":{"description":"ore_hedbergite integer","format":"int64","title":"get_characters_character_id_stats_ore_hedbergite","type":"integer"},"ore_hemorphite":{"description":"ore_hemorphite integer","format":"int64","title":"get_characters_character_id_stats_ore_hemorphite","type":"integer"},"ore_ice":{"description":"ore_ice integer","format":"int64","title":"get_characters_character_id_stats_ore_ice","type":"integer"},"ore_jaspet":{"description":"ore_jaspet integer","format":"int64","title":"get_characters_character_id_stats_ore_jaspet","type":"integer"},"ore_kernite":{"description":"ore_kernite integer","format":"int64","title":"get_characters_character_id_stats_ore_kernite","type":"integer"},"ore_mercoxit":{"description":"ore_mercoxit integer","format":"int64","title":"get_characters_character_id_stats_ore_mercoxit","type":"integer"},"ore_omber":{"description":"ore_omber integer","format":"int64","title":"get_characters_character_id_stats_ore_omber","type":"integer"},"ore_plagioclase":{"description":"ore_plagioclase integer","format":"int64","title":"get_characters_character_id_stats_ore_plagioclase","type":"integer"},"ore_pyroxeres":{"description":"ore_pyroxeres integer","format":"int64","title":"get_characters_character_id_stats_ore_pyroxeres","type":"integer"},"ore_scordite":{"description":"ore_scordite integer","format":"int64","title":"get_characters_character_id_stats_ore_scordite","type":"integer"},"ore_spodumain":{"description":"ore_spodumain integer","format":"int64","title":"get_characters_character_id_stats_ore_spodumain","type":"integer"},"ore_veldspar":{"description":"ore_veldspar integer","format":"int64","title":"get_characters_character_id_stats_ore_veldspar","type":"integer"}},"title":"get_characters_character_id_stats_mining","type":"object"},"module":{"description":"module object","properties":{"activations_armor_hardener":{"description":"activations_armor_hardener integer","format":"int64","title":"get_characters_character_id_stats_activations_armor_hardener","type":"integer"},"activations_armor_repair_unit":{"description":"activations_armor_repair_unit integer","format":"int64","title":"get_characters_character_id_stats_activations_armor_repair_unit","type":"integer"},"activations_armor_resistance_shift_hardener":{"description":"activations_armor_resistance_shift_hardener integer","format":"int64","title":"get_characters_character_id_stats_activations_armor_resistance_shift_hardener","type":"integer"},"activations_automated_targeting_system":{"description":"activations_automated_targeting_system integer","format":"int64","title":"get_characters_character_id_stats_activations_automated_targeting_system","type":"integer"},"activations_bastion":{"description":"activations_bastion integer","format":"int64","title":"get_characters_character_id_stats_activations_bastion","type":"integer"},"activations_bomb_launcher":{"description":"activations_bomb_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_bomb_launcher","type":"integer"},"activations_capacitor_booster":{"description":"activations_capacitor_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_capacitor_booster","type":"integer"},"activations_cargo_scanner":{"description":"activations_cargo_scanner integer","format":"int64","title":"get_characters_character_id_stats_activations_cargo_scanner","type":"integer"},"activations_cloaking_device":{"description":"activations_cloaking_device integer","format":"int64","title":"get_characters_character_id_stats_activations_cloaking_device","type":"integer"},"activations_clone_vat_bay":{"description":"activations_clone_vat_bay integer","format":"int64","title":"get_characters_character_id_stats_activations_clone_vat_bay","type":"integer"},"activations_cynosural_field":{"description":"activations_cynosural_field integer","format":"int64","title":"get_characters_character_id_stats_activations_cynosural_field","type":"integer"},"activations_damage_control":{"description":"activations_damage_control integer","format":"int64","title":"get_characters_character_id_stats_activations_damage_control","type":"integer"},"activations_data_miners":{"description":"activations_data_miners integer","format":"int64","title":"get_characters_character_id_stats_activations_data_miners","type":"integer"},"activations_drone_control_unit":{"description":"activations_drone_control_unit integer","format":"int64","title":"get_characters_character_id_stats_activations_drone_control_unit","type":"integer"},"activations_drone_tracking_modules":{"description":"activations_drone_tracking_modules integer","format":"int64","title":"get_characters_character_id_stats_activations_drone_tracking_modules","type":"integer"},"activations_eccm":{"description":"activations_eccm integer","format":"int64","title":"get_characters_character_id_stats_activations_eccm","type":"integer"},"activations_ecm":{"description":"activations_ecm integer","format":"int64","title":"get_characters_character_id_stats_activations_ecm","type":"integer"},"activations_ecm_burst":{"description":"activations_ecm_burst integer","format":"int64","title":"get_characters_character_id_stats_activations_ecm_burst","type":"integer"},"activations_energy_destabilizer":{"description":"activations_energy_destabilizer integer","format":"int64","title":"get_characters_character_id_stats_activations_energy_destabilizer","type":"integer"},"activations_energy_vampire":{"description":"activations_energy_vampire integer","format":"int64","title":"get_characters_character_id_stats_activations_energy_vampire","type":"integer"},"activations_energy_weapon":{"description":"activations_energy_weapon integer","format":"int64","title":"get_characters_character_id_stats_activations_energy_weapon","type":"integer"},"activations_festival_launcher":{"description":"activations_festival_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_festival_launcher","type":"integer"},"activations_frequency_mining_laser":{"description":"activations_frequency_mining_laser integer","format":"int64","title":"get_characters_character_id_stats_activations_frequency_mining_laser","type":"integer"},"activations_fueled_armor_repairer":{"description":"activations_fueled_armor_repairer integer","format":"int64","title":"get_characters_character_id_stats_activations_fueled_armor_repairer","type":"integer"},"activations_fueled_shield_booster":{"description":"activations_fueled_shield_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_fueled_shield_booster","type":"integer"},"activations_gang_coordinator":{"description":"activations_gang_coordinator integer","format":"int64","title":"get_characters_character_id_stats_activations_gang_coordinator","type":"integer"},"activations_gas_cloud_harvester":{"description":"activations_gas_cloud_harvester integer","format":"int64","title":"get_characters_character_id_stats_activations_gas_cloud_harvester","type":"integer"},"activations_hull_repair_unit":{"description":"activations_hull_repair_unit integer","format":"int64","title":"get_characters_character_id_stats_activations_hull_repair_unit","type":"integer"},"activations_hybrid_weapon":{"description":"activations_hybrid_weapon integer","format":"int64","title":"get_characters_character_id_stats_activations_hybrid_weapon","type":"integer"},"activations_industrial_core":{"description":"activations_industrial_core integer","format":"int64","title":"get_characters_character_id_stats_activations_industrial_core","type":"integer"},"activations_interdiction_sphere_launcher":{"description":"activations_interdiction_sphere_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_interdiction_sphere_launcher","type":"integer"},"activations_micro_jump_drive":{"description":"activations_micro_jump_drive integer","format":"int64","title":"get_characters_character_id_stats_activations_micro_jump_drive","type":"integer"},"activations_mining_laser":{"description":"activations_mining_laser integer","format":"int64","title":"get_characters_character_id_stats_activations_mining_laser","type":"integer"},"activations_missile_launcher":{"description":"activations_missile_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_missile_launcher","type":"integer"},"activations_passive_targeting_system":{"description":"activations_passive_targeting_system integer","format":"int64","title":"get_characters_character_id_stats_activations_passive_targeting_system","type":"integer"},"activations_probe_launcher":{"description":"activations_probe_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_probe_launcher","type":"integer"},"activations_projected_eccm":{"description":"activations_projected_eccm integer","format":"int64","title":"get_characters_character_id_stats_activations_projected_eccm","type":"integer"},"activations_projectile_weapon":{"description":"activations_projectile_weapon integer","format":"int64","title":"get_characters_character_id_stats_activations_projectile_weapon","type":"integer"},"activations_propulsion_module":{"description":"activations_propulsion_module integer","format":"int64","title":"get_characters_character_id_stats_activations_propulsion_module","type":"integer"},"activations_remote_armor_repairer":{"description":"activations_remote_armor_repairer integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_armor_repairer","type":"integer"},"activations_remote_capacitor_transmitter":{"description":"activations_remote_capacitor_transmitter integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_capacitor_transmitter","type":"integer"},"activations_remote_ecm_burst":{"description":"activations_remote_ecm_burst integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_ecm_burst","type":"integer"},"activations_remote_hull_repairer":{"description":"activations_remote_hull_repairer integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_hull_repairer","type":"integer"},"activations_remote_sensor_booster":{"description":"activations_remote_sensor_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_sensor_booster","type":"integer"},"activations_remote_sensor_damper":{"description":"activations_remote_sensor_damper integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_sensor_damper","type":"integer"},"activations_remote_shield_booster":{"description":"activations_remote_shield_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_shield_booster","type":"integer"},"activations_remote_tracking_computer":{"description":"activations_remote_tracking_computer integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_tracking_computer","type":"integer"},"activations_salvager":{"description":"activations_salvager integer","format":"int64","title":"get_characters_character_id_stats_activations_salvager","type":"integer"},"activations_sensor_booster":{"description":"activations_sensor_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_sensor_booster","type":"integer"},"activations_shield_booster":{"description":"activations_shield_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_shield_booster","type":"integer"},"activations_shield_hardener":{"description":"activations_shield_hardener integer","format":"int64","title":"get_characters_character_id_stats_activations_shield_hardener","type":"integer"},"activations_ship_scanner":{"description":"activations_ship_scanner integer","format":"int64","title":"get_characters_character_id_stats_activations_ship_scanner","type":"integer"},"activations_siege":{"description":"activations_siege integer","format":"int64","title":"get_characters_character_id_stats_activations_siege","type":"integer"},"activations_smart_bomb":{"description":"activations_smart_bomb integer","format":"int64","title":"get_characters_character_id_stats_activations_smart_bomb","type":"integer"},"activations_stasis_web":{"description":"activations_stasis_web integer","format":"int64","title":"get_characters_character_id_stats_activations_stasis_web","type":"integer"},"activations_strip_miner":{"description":"activations_strip_miner integer","format":"int64","title":"get_characters_character_id_stats_activations_strip_miner","type":"integer"},"activations_super_weapon":{"description":"activations_super_weapon integer","format":"int64","title":"get_characters_character_id_stats_activations_super_weapon","type":"integer"},"activations_survey_scanner":{"description":"activations_survey_scanner integer","format":"int64","title":"get_characters_character_id_stats_activations_survey_scanner","type":"integer"},"activations_target_breaker":{"description":"activations_target_breaker integer","format":"int64","title":"get_characters_character_id_stats_activations_target_breaker","type":"integer"},"activations_target_painter":{"description":"activations_target_painter integer","format":"int64","title":"get_characters_character_id_stats_activations_target_painter","type":"integer"},"activations_tracking_computer":{"description":"activations_tracking_computer integer","format":"int64","title":"get_characters_character_id_stats_activations_tracking_computer","type":"integer"},"activations_tracking_disruptor":{"description":"activations_tracking_disruptor integer","format":"int64","title":"get_characters_character_id_stats_activations_tracking_disruptor","type":"integer"},"activations_tractor_beam":{"description":"activations_tractor_beam integer","format":"int64","title":"get_characters_character_id_stats_activations_tractor_beam","type":"integer"},"activations_triage":{"description":"activations_triage integer","format":"int64","title":"get_characters_character_id_stats_activations_triage","type":"integer"},"activations_warp_disrupt_field_generator":{"description":"activations_warp_disrupt_field_generator integer","format":"int64","title":"get_characters_character_id_stats_activations_warp_disrupt_field_generator","type":"integer"},"activations_warp_scrambler":{"description":"activations_warp_scrambler integer","format":"int64","title":"get_characters_character_id_stats_activations_warp_scrambler","type":"integer"},"link_weapons":{"description":"link_weapons integer","format":"int64","title":"get_characters_character_id_stats_link_weapons","type":"integer"},"overload":{"description":"overload integer","format":"int64","title":"get_characters_character_id_stats_overload","type":"integer"},"repairs":{"description":"repairs integer","format":"int64","title":"get_characters_character_id_stats_repairs","type":"integer"}},"title":"get_characters_character_id_stats_module","type":"object"},"orbital":{"description":"orbital object","properties":{"strike_characters_killed":{"description":"strike_characters_killed integer","format":"int64","title":"get_characters_character_id_stats_strike_characters_killed","type":"integer"},"strike_damage_to_players_armor_amount":{"description":"strike_damage_to_players_armor_amount integer","format":"int64","title":"get_characters_character_id_stats_strike_damage_to_players_armor_amount","type":"integer"},"strike_damage_to_players_shield_amount":{"description":"strike_damage_to_players_shield_amount integer","format":"int64","title":"get_characters_character_id_stats_strike_damage_to_players_shield_amount","type":"integer"}},"title":"get_characters_character_id_stats_orbital","type":"object"},"pve":{"description":"pve object","properties":{"dungeons_completed_agent":{"description":"dungeons_completed_agent integer","format":"int64","title":"get_characters_character_id_stats_dungeons_completed_agent","type":"integer"},"dungeons_completed_distribution":{"description":"dungeons_completed_distribution integer","format":"int64","title":"get_characters_character_id_stats_dungeons_completed_distribution","type":"integer"},"missions_succeeded":{"description":"missions_succeeded integer","format":"int64","title":"get_characters_character_id_stats_missions_succeeded","type":"integer"},"missions_succeeded_epic_arc":{"description":"missions_succeeded_epic_arc integer","format":"int64","title":"get_characters_character_id_stats_missions_succeeded_epic_arc","type":"integer"}},"title":"get_characters_character_id_stats_pve","type":"object"},"social":{"description":"social object","properties":{"add_contact_bad":{"description":"add_contact_bad integer","format":"int64","title":"get_characters_character_id_stats_add_contact_bad","type":"integer"},"add_contact_good":{"description":"add_contact_good integer","format":"int64","title":"get_characters_character_id_stats_add_contact_good","type":"integer"},"add_contact_high":{"description":"add_contact_high integer","format":"int64","title":"get_characters_character_id_stats_add_contact_high","type":"integer"},"add_contact_horrible":{"description":"add_contact_horrible integer","format":"int64","title":"get_characters_character_id_stats_add_contact_horrible","type":"integer"},"add_contact_neutral":{"description":"add_contact_neutral integer","format":"int64","title":"get_characters_character_id_stats_add_contact_neutral","type":"integer"},"add_note":{"description":"add_note integer","format":"int64","title":"get_characters_character_id_stats_add_note","type":"integer"},"added_as_contact_bad":{"description":"added_as_contact_bad integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_bad","type":"integer"},"added_as_contact_good":{"description":"added_as_contact_good integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_good","type":"integer"},"added_as_contact_high":{"description":"added_as_contact_high integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_high","type":"integer"},"added_as_contact_horrible":{"description":"added_as_contact_horrible integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_horrible","type":"integer"},"added_as_contact_neutral":{"description":"added_as_contact_neutral integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_neutral","type":"integer"},"calendar_event_created":{"description":"calendar_event_created integer","format":"int64","title":"get_characters_character_id_stats_calendar_event_created","type":"integer"},"chat_messages_alliance":{"description":"chat_messages_alliance integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_alliance","type":"integer"},"chat_messages_constellation":{"description":"chat_messages_constellation integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_constellation","type":"integer"},"chat_messages_corporation":{"description":"chat_messages_corporation integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_corporation","type":"integer"},"chat_messages_fleet":{"description":"chat_messages_fleet integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_fleet","type":"integer"},"chat_messages_region":{"description":"chat_messages_region integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_region","type":"integer"},"chat_messages_solarsystem":{"description":"chat_messages_solarsystem integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_solarsystem","type":"integer"},"chat_messages_warfaction":{"description":"chat_messages_warfaction integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_warfaction","type":"integer"},"chat_total_message_length":{"description":"chat_total_message_length integer","format":"int64","title":"get_characters_character_id_stats_chat_total_message_length","type":"integer"},"direct_trades":{"description":"direct_trades integer","format":"int64","title":"get_characters_character_id_stats_direct_trades","type":"integer"},"fleet_broadcasts":{"description":"fleet_broadcasts integer","format":"int64","title":"get_characters_character_id_stats_fleet_broadcasts","type":"integer"},"fleet_joins":{"description":"fleet_joins integer","format":"int64","title":"get_characters_character_id_stats_fleet_joins","type":"integer"},"mails_received":{"description":"mails_received integer","format":"int64","title":"get_characters_character_id_stats_mails_received","type":"integer"},"mails_sent":{"description":"mails_sent integer","format":"int64","title":"get_characters_character_id_stats_mails_sent","type":"integer"}},"title":"get_characters_character_id_stats_social","type":"object"},"travel":{"description":"travel object","properties":{"acceleration_gate_activations":{"description":"acceleration_gate_activations integer","format":"int64","title":"get_characters_character_id_stats_acceleration_gate_activations","type":"integer"},"align_to":{"description":"align_to integer","format":"int64","title":"get_characters_character_id_stats_align_to","type":"integer"},"distance_warped_high_sec":{"description":"distance_warped_high_sec integer","format":"int64","title":"get_characters_character_id_stats_distance_warped_high_sec","type":"integer"},"distance_warped_low_sec":{"description":"distance_warped_low_sec integer","format":"int64","title":"get_characters_character_id_stats_distance_warped_low_sec","type":"integer"},"distance_warped_null_sec":{"description":"distance_warped_null_sec integer","format":"int64","title":"get_characters_character_id_stats_distance_warped_null_sec","type":"integer"},"distance_warped_wormhole":{"description":"distance_warped_wormhole integer","format":"int64","title":"get_characters_character_id_stats_distance_warped_wormhole","type":"integer"},"docks_high_sec":{"description":"docks_high_sec integer","format":"int64","title":"get_characters_character_id_stats_docks_high_sec","type":"integer"},"docks_low_sec":{"description":"docks_low_sec integer","format":"int64","title":"get_characters_character_id_stats_docks_low_sec","type":"integer"},"docks_null_sec":{"description":"docks_null_sec integer","format":"int64","title":"get_characters_character_id_stats_docks_null_sec","type":"integer"},"jumps_stargate_high_sec":{"description":"jumps_stargate_high_sec integer","format":"int64","title":"get_characters_character_id_stats_jumps_stargate_high_sec","type":"integer"},"jumps_stargate_low_sec":{"description":"jumps_stargate_low_sec integer","format":"int64","title":"get_characters_character_id_stats_jumps_stargate_low_sec","type":"integer"},"jumps_stargate_null_sec":{"description":"jumps_stargate_null_sec integer","format":"int64","title":"get_characters_character_id_stats_jumps_stargate_null_sec","type":"integer"},"jumps_wormhole":{"description":"jumps_wormhole integer","format":"int64","title":"get_characters_character_id_stats_jumps_wormhole","type":"integer"},"warps_high_sec":{"description":"warps_high_sec integer","format":"int64","title":"get_characters_character_id_stats_warps_high_sec","type":"integer"},"warps_low_sec":{"description":"warps_low_sec integer","format":"int64","title":"get_characters_character_id_stats_warps_low_sec","type":"integer"},"warps_null_sec":{"description":"warps_null_sec integer","format":"int64","title":"get_characters_character_id_stats_warps_null_sec","type":"integer"},"warps_to_bookmark":{"description":"warps_to_bookmark integer","format":"int64","title":"get_characters_character_id_stats_warps_to_bookmark","type":"integer"},"warps_to_celestial":{"description":"warps_to_celestial integer","format":"int64","title":"get_characters_character_id_stats_warps_to_celestial","type":"integer"},"warps_to_fleet_member":{"description":"warps_to_fleet_member integer","format":"int64","title":"get_characters_character_id_stats_warps_to_fleet_member","type":"integer"},"warps_to_scan_result":{"description":"warps_to_scan_result integer","format":"int64","title":"get_characters_character_id_stats_warps_to_scan_result","type":"integer"},"warps_wormhole":{"description":"warps_wormhole integer","format":"int64","title":"get_characters_character_id_stats_warps_wormhole","type":"integer"}},"title":"get_characters_character_id_stats_travel","type":"object"},"year":{"description":"Gregorian year for this set of aggregates","format":"int32","title":"get_characters_character_id_stats_year","type":"integer"}},"required":["year"],"title":"get_characters_character_id_stats_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_stats_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characterstats.read.v1"]}],"summary":"Yearly aggregate stats","tags":["Character"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":86400}},"/characters/{character_id}/titles/":{"get":{"description":"Returns a character's titles\n\n---\nAlternate route: `/dev/characters/{character_id}/titles/`\n\nAlternate route: `/legacy/characters/{character_id}/titles/`\n\nAlternate route: `/v1/characters/{character_id}/titles/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_titles","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of titles","examples":{"application/json":[{"name":"Awesome Title","title_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"name":{"description":"name string","title":"get_characters_character_id_titles_name","type":"string"},"title_id":{"description":"title_id integer","format":"int32","title":"get_characters_character_id_titles_title_id","type":"integer"}},"title":"get_characters_character_id_titles_200_ok","type":"object"},"maxItems":16,"title":"get_characters_character_id_titles_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_titles.v1"]}],"summary":"Get character corporation titles","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/wallet/":{"get":{"description":"Returns a character's wallet balance\n\n---\nAlternate route: `/legacy/characters/{character_id}/wallet/`\n\nAlternate route: `/v1/characters/{character_id}/wallet/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_wallet","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Wallet balance","examples":{"application/json":29500.01},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Wallet balance","format":"double","title":"get_characters_character_id_wallet_ok","type":"number"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_character_wallet.v1"]}],"summary":"Get a character's wallet balance","tags":["Wallet"],"x-alternate-versions":["legacy","v1"],"x-cached-seconds":120}},"/characters/{character_id}/wallet/journal/":{"get":{"description":"Retrieve the given character's wallet journal going 30 days back\n\n---\nAlternate route: `/dev/characters/{character_id}/wallet/journal/`\n\nAlternate route: `/v6/characters/{character_id}/wallet/journal/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_wallet_journal","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Journal entries","examples":{"application/json":[{"amount":-100000,"balance":500000.4316,"context_id":4,"context_id_type":"contract_id","date":"2018-02-23T14:31:32Z","description":"Contract Deposit","first_party_id":2112625428,"id":89,"ref_type":"contract_deposit","second_party_id":1000132}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"Wallet journal entries","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount of ISK given or taken from the wallet as a result of the given transaction. Positive when ISK is deposited into the wallet and negative when ISK is withdrawn","format":"double","title":"get_characters_character_id_wallet_journal_amount","type":"number"},"balance":{"description":"Wallet balance after transaction occurred","format":"double","title":"get_characters_character_id_wallet_journal_balance","type":"number"},"context_id":{"description":"An ID that gives extra context to the particular transaction. Because of legacy reasons the context is completely different per ref_type and means different things. It is also possible to not have a context_id","format":"int64","title":"get_characters_character_id_wallet_journal_context_id","type":"integer"},"context_id_type":{"description":"The type of the given context_id if present","enum":["structure_id","station_id","market_transaction_id","character_id","corporation_id","alliance_id","eve_system","industry_job_id","contract_id","planet_id","system_id","type_id"],"title":"get_characters_character_id_wallet_journal_context_id_type","type":"string"},"date":{"description":"Date and time of transaction","format":"date-time","title":"get_characters_character_id_wallet_journal_date","type":"string"},"description":{"description":"The reason for the transaction, mirrors what is seen in the client","title":"get_characters_character_id_wallet_journal_description","type":"string"},"first_party_id":{"description":"The id of the first party involved in the transaction. This attribute has no consistency and is different or non existant for particular ref_types. The description attribute will help make sense of what this attribute means. For more info about the given ID it can be dropped into the /universe/names/ ESI route to determine its type and name","format":"int32","title":"get_characters_character_id_wallet_journal_first_party_id","type":"integer"},"id":{"description":"Unique journal reference ID","format":"int64","title":"get_characters_character_id_wallet_journal_id","type":"integer"},"reason":{"description":"The user stated reason for the transaction. Only applies to some ref_types","title":"get_characters_character_id_wallet_journal_reason","type":"string"},"ref_type":{"description":"\"The transaction type for the given. transaction. Different transaction types will populate different attributes.\"","enum":["acceleration_gate_fee","advertisement_listing_fee","agent_donation","agent_location_services","agent_miscellaneous","agent_mission_collateral_paid","agent_mission_collateral_refunded","agent_mission_reward","agent_mission_reward_corporation_tax","agent_mission_time_bonus_reward","agent_mission_time_bonus_reward_corporation_tax","agent_security_services","agent_services_rendered","agents_preward","alliance_maintainance_fee","alliance_registration_fee","asset_safety_recovery_tax","bounty","bounty_prize","bounty_prize_corporation_tax","bounty_prizes","bounty_reimbursement","bounty_surcharge","brokers_fee","clone_activation","clone_transfer","contraband_fine","contract_auction_bid","contract_auction_bid_corp","contract_auction_bid_refund","contract_auction_sold","contract_brokers_fee","contract_brokers_fee_corp","contract_collateral","contract_collateral_deposited_corp","contract_collateral_payout","contract_collateral_refund","contract_deposit","contract_deposit_corp","contract_deposit_refund","contract_deposit_sales_tax","contract_price","contract_price_payment_corp","contract_reversal","contract_reward","contract_reward_deposited","contract_reward_deposited_corp","contract_reward_refund","contract_sales_tax","copying","corporate_reward_payout","corporate_reward_tax","corporation_account_withdrawal","corporation_bulk_payment","corporation_dividend_payment","corporation_liquidation","corporation_logo_change_cost","corporation_payment","corporation_registration_fee","courier_mission_escrow","cspa","cspaofflinerefund","datacore_fee","dna_modification_fee","docking_fee","duel_wager_escrow","duel_wager_payment","duel_wager_refund","factory_slot_rental_fee","gm_cash_transfer","industry_job_tax","infrastructure_hub_maintenance","inheritance","insurance","item_trader_payment","jump_clone_activation_fee","jump_clone_installation_fee","kill_right_fee","lp_store","manufacturing","market_escrow","market_fine_paid","market_transaction","medal_creation","medal_issued","mission_completion","mission_cost","mission_expiration","mission_reward","office_rental_fee","operation_bonus","opportunity_reward","planetary_construction","planetary_export_tax","planetary_import_tax","player_donation","player_trading","project_discovery_reward","project_discovery_tax","reaction","release_of_impounded_property","repair_bill","reprocessing_tax","researching_material_productivity","researching_technology","researching_time_productivity","resource_wars_reward","reverse_engineering","security_processing_fee","shares","skill_purchase","sovereignity_bill","store_purchase","store_purchase_refund","structure_gate_jump","transaction_tax","upkeep_adjustment_fee","war_ally_contract","war_fee","war_fee_surrender"],"title":"get_characters_character_id_wallet_journal_ref_type","type":"string"},"second_party_id":{"description":"The id of the second party involved in the transaction. This attribute has no consistency and is different or non existant for particular ref_types. The description attribute will help make sense of what this attribute means. For more info about the given ID it can be dropped into the /universe/names/ ESI route to determine its type and name","format":"int32","title":"get_characters_character_id_wallet_journal_second_party_id","type":"integer"},"tax":{"description":"Tax amount received. Only applies to tax related transactions","format":"double","title":"get_characters_character_id_wallet_journal_tax","type":"number"},"tax_receiver_id":{"description":"The corporation ID receiving any tax paid. Only applies to tax related transactions","format":"int32","title":"get_characters_character_id_wallet_journal_tax_receiver_id","type":"integer"}},"required":["date","id","ref_type","description"],"title":"get_characters_character_id_wallet_journal_200_ok","type":"object"},"maxItems":2500,"title":"get_characters_character_id_wallet_journal_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_character_wallet.v1"]}],"summary":"Get character wallet journal","tags":["Wallet"],"x-alternate-versions":["dev","v6"],"x-cached-seconds":3600}},"/characters/{character_id}/wallet/transactions/":{"get":{"description":"Get wallet transactions of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/wallet/transactions/`\n\nAlternate route: `/legacy/characters/{character_id}/wallet/transactions/`\n\nAlternate route: `/v1/characters/{character_id}/wallet/transactions/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_wallet_transactions","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"Only show transactions happened before the one referenced by this id","format":"int64","in":"query","name":"from_id","required":false,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Wallet transactions","examples":{"application/json":[{"client_id":54321,"date":"2016-10-24T09:00:00Z","is_buy":true,"is_personal":true,"journal_ref_id":67890,"location_id":60014719,"quantity":1,"transaction_id":1234567890,"type_id":587,"unit_price":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Wallet transactions","items":{"description":"wallet transaction","properties":{"client_id":{"description":"client_id integer","format":"int32","title":"get_characters_character_id_wallet_transactions_client_id","type":"integer"},"date":{"description":"Date and time of transaction","format":"date-time","title":"get_characters_character_id_wallet_transactions_date","type":"string"},"is_buy":{"description":"is_buy boolean","title":"get_characters_character_id_wallet_transactions_is_buy","type":"boolean"},"is_personal":{"description":"is_personal boolean","title":"get_characters_character_id_wallet_transactions_is_personal","type":"boolean"},"journal_ref_id":{"description":"journal_ref_id integer","format":"int64","title":"get_characters_character_id_wallet_transactions_journal_ref_id","type":"integer"},"location_id":{"description":"location_id integer","format":"int64","title":"get_characters_character_id_wallet_transactions_location_id","type":"integer"},"quantity":{"description":"quantity integer","format":"int32","title":"get_characters_character_id_wallet_transactions_quantity","type":"integer"},"transaction_id":{"description":"Unique transaction ID","format":"int64","title":"get_characters_character_id_wallet_transactions_transaction_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_wallet_transactions_type_id","type":"integer"},"unit_price":{"description":"Amount paid per unit","format":"double","title":"get_characters_character_id_wallet_transactions_unit_price","type":"number"}},"required":["transaction_id","date","location_id","type_id","unit_price","quantity","client_id","is_buy","is_personal","journal_ref_id"],"title":"get_characters_character_id_wallet_transactions_200_ok","type":"object"},"maxItems":2500,"title":"get_characters_character_id_wallet_transactions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_character_wallet.v1"]}],"summary":"Get wallet transactions","tags":["Wallet"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/contracts/public/bids/{contract_id}/":{"get":{"description":"Lists bids on a public auction contract\n\n---\nAlternate route: `/dev/contracts/public/bids/{contract_id}/`\n\nAlternate route: `/legacy/contracts/public/bids/{contract_id}/`\n\nAlternate route: `/v1/contracts/public/bids/{contract_id}/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_contracts_public_bids_contract_id","parameters":[{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"}],"responses":{"200":{"description":"A list of bids","examples":{"application/json":[{"amount":1.23,"bid_id":1,"date_bid":"2017-01-01T10:10:10Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount bid, in ISK","format":"float","title":"get_contracts_public_bids_contract_id_amount","type":"number"},"bid_id":{"description":"Unique ID for the bid","format":"int32","title":"get_contracts_public_bids_contract_id_bid_id","type":"integer"},"date_bid":{"description":"Datetime when the bid was placed","format":"date-time","title":"get_contracts_public_bids_contract_id_date_bid","type":"string"}},"required":["bid_id","date_bid","amount"],"title":"get_contracts_public_bids_contract_id_200_ok","type":"object"},"maxItems":1000,"title":"get_contracts_public_bids_contract_id_ok","type":"array"}},"204":{"description":"Contract expired or recently accepted by player","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"403":{"description":"Not Authorized to see contract","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"description":"Forbidden","properties":{"error":{"description":"Forbidden message","title":"get_contracts_public_bids_contract_id_403_forbidden","type":"string"}},"title":"get_contracts_public_bids_contract_id_forbidden","type":"object"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_contracts_public_bids_contract_id_404_not_found","type":"string"}},"title":"get_contracts_public_bids_contract_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get public contract bids","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/contracts/public/items/{contract_id}/":{"get":{"description":"Lists items of a public contract\n\n---\nAlternate route: `/dev/contracts/public/items/{contract_id}/`\n\nAlternate route: `/legacy/contracts/public/items/{contract_id}/`\n\nAlternate route: `/v1/contracts/public/items/{contract_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_contracts_public_items_contract_id","parameters":[{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"}],"responses":{"200":{"description":"A list of items in this contract","examples":{"application/json":[{"is_included":true,"item_id":123456,"quantity":1,"record_id":123456,"type_id":587}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_blueprint_copy":{"description":"is_blueprint_copy boolean","title":"get_contracts_public_items_contract_id_is_blueprint_copy","type":"boolean"},"is_included":{"description":"true if the contract issuer has submitted this item with the contract, false if the isser is asking for this item in the contract","title":"get_contracts_public_items_contract_id_is_included","type":"boolean"},"item_id":{"description":"Unique ID for the item being sold. Not present if item is being requested by contract rather than sold with contract","format":"int64","title":"get_contracts_public_items_contract_id_item_id","type":"integer"},"material_efficiency":{"description":"Material Efficiency Level of the blueprint","format":"int32","maximum":25,"minimum":0,"title":"get_contracts_public_items_contract_id_material_efficiency","type":"integer"},"quantity":{"description":"Number of items in the stack","format":"int32","title":"get_contracts_public_items_contract_id_quantity","type":"integer"},"record_id":{"description":"Unique ID for the item, used by the contract system","format":"int64","title":"get_contracts_public_items_contract_id_record_id","type":"integer"},"runs":{"description":"Number of runs remaining if the blueprint is a copy, -1 if it is an original","format":"int32","minimum":-1,"title":"get_contracts_public_items_contract_id_runs","type":"integer"},"time_efficiency":{"description":"Time Efficiency Level of the blueprint","format":"int32","maximum":20,"minimum":0,"title":"get_contracts_public_items_contract_id_time_efficiency","type":"integer"},"type_id":{"description":"Type ID for item","format":"int32","title":"get_contracts_public_items_contract_id_type_id","type":"integer"}},"required":["record_id","type_id","quantity","is_included"],"title":"get_contracts_public_items_contract_id_200_ok","type":"object"},"maxItems":1000,"title":"get_contracts_public_items_contract_id_ok","type":"array"}},"204":{"description":"Contract expired or recently accepted by player","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"403":{"description":"Not Authorized to see contract","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"description":"Forbidden","properties":{"error":{"description":"Forbidden message","title":"get_contracts_public_items_contract_id_403_forbidden","type":"string"}},"title":"get_contracts_public_items_contract_id_forbidden","type":"object"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_contracts_public_items_contract_id_404_not_found","type":"string"}},"title":"get_contracts_public_items_contract_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get public contract items","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/contracts/public/{region_id}/":{"get":{"description":"Returns a paginated list of all public contracts in the given region\n\n---\nAlternate route: `/dev/contracts/public/{region_id}/`\n\nAlternate route: `/legacy/contracts/public/{region_id}/`\n\nAlternate route: `/v1/contracts/public/{region_id}/`\n\n---\nThis route is cached for up to 1800 seconds","operationId":"get_contracts_public_region_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"description":"An EVE region id","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A list of contracts","examples":{"application/json":[{"buyout":10000000000.01,"contract_id":1,"date_expired":"2017-06-13T13:12:32Z","date_issued":"2017-06-06T13:12:32Z","days_to_complete":0,"end_location_id":60014719,"for_corporation":true,"issuer_corporation_id":456,"issuer_id":123,"price":1000000.01,"reward":0.01,"start_location_id":60014719,"type":"auction","volume":0.01}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"buyout":{"description":"Buyout price (for Auctions only)","format":"double","title":"get_contracts_public_region_id_buyout","type":"number"},"collateral":{"description":"Collateral price (for Couriers only)","format":"double","title":"get_contracts_public_region_id_collateral","type":"number"},"contract_id":{"description":"contract_id integer","format":"int32","title":"get_contracts_public_region_id_contract_id","type":"integer"},"date_expired":{"description":"Expiration date of the contract","format":"date-time","title":"get_contracts_public_region_id_date_expired","type":"string"},"date_issued":{"description":"\u0421reation date of the contract","format":"date-time","title":"get_contracts_public_region_id_date_issued","type":"string"},"days_to_complete":{"description":"Number of days to perform the contract","format":"int32","title":"get_contracts_public_region_id_days_to_complete","type":"integer"},"end_location_id":{"description":"End location ID (for Couriers contract)","format":"int64","title":"get_contracts_public_region_id_end_location_id","type":"integer"},"for_corporation":{"description":"true if the contract was issued on behalf of the issuer's corporation","title":"get_contracts_public_region_id_for_corporation","type":"boolean"},"issuer_corporation_id":{"description":"Character's corporation ID for the issuer","format":"int32","title":"get_contracts_public_region_id_issuer_corporation_id","type":"integer"},"issuer_id":{"description":"Character ID for the issuer","format":"int32","title":"get_contracts_public_region_id_issuer_id","type":"integer"},"price":{"description":"Price of contract (for ItemsExchange and Auctions)","format":"double","title":"get_contracts_public_region_id_price","type":"number"},"reward":{"description":"Remuneration for contract (for Couriers only)","format":"double","title":"get_contracts_public_region_id_reward","type":"number"},"start_location_id":{"description":"Start location ID (for Couriers contract)","format":"int64","title":"get_contracts_public_region_id_start_location_id","type":"integer"},"title":{"description":"Title of the contract","title":"get_contracts_public_region_id_title","type":"string"},"type":{"description":"Type of the contract","enum":["unknown","item_exchange","auction","courier","loan"],"title":"get_contracts_public_region_id_type","type":"string"},"volume":{"description":"Volume of items in the contract","format":"double","title":"get_contracts_public_region_id_volume","type":"number"}},"required":["contract_id","issuer_id","issuer_corporation_id","type","date_issued","date_expired"],"title":"get_contracts_public_region_id_200_ok","type":"object"},"maxItems":1000,"title":"get_contracts_public_region_id_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Region not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_contracts_public_region_id_404_not_found","type":"string"}},"title":"get_contracts_public_region_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get public contracts","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":1800}},"/corporation/{corporation_id}/mining/extractions/":{"get":{"description":"Extraction timers for all moon chunks being extracted by refineries belonging to a corporation.\n\n\n---\nAlternate route: `/dev/corporation/{corporation_id}/mining/extractions/`\n\nAlternate route: `/legacy/corporation/{corporation_id}/mining/extractions/`\n\nAlternate route: `/v1/corporation/{corporation_id}/mining/extractions/`\n\n---\nThis route is cached for up to 1800 seconds\n\n---\nRequires one of the following EVE corporation role(s): Station_Manager\n","operationId":"get_corporation_corporation_id_mining_extractions","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of chunk timers","examples":{"application/json":[{"chunk_arrival_time":"2017-10-17T11:00:59Z","extraction_start_time":"2017-10-11T10:37:04Z","moon_id":40307229,"natural_decay_time":"2017-10-17T14:00:59Z","structure_id":1000000010579}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"chunk_arrival_time":{"description":"The time at which the chunk being extracted will arrive and can be fractured by the moon mining drill.\n","format":"date-time","title":"get_corporation_corporation_id_mining_extractions_chunk_arrival_time","type":"string"},"extraction_start_time":{"description":"The time at which the current extraction was initiated.\n","format":"date-time","title":"get_corporation_corporation_id_mining_extractions_extraction_start_time","type":"string"},"moon_id":{"description":"moon_id integer","format":"int32","title":"get_corporation_corporation_id_mining_extractions_moon_id","type":"integer"},"natural_decay_time":{"description":"The time at which the chunk being extracted will naturally fracture if it is not first fractured by the moon mining drill.\n","format":"date-time","title":"get_corporation_corporation_id_mining_extractions_natural_decay_time","type":"string"},"structure_id":{"description":"structure_id integer","format":"int64","title":"get_corporation_corporation_id_mining_extractions_structure_id","type":"integer"}},"required":["structure_id","moon_id","extraction_start_time","chunk_arrival_time","natural_decay_time"],"title":"get_corporation_corporation_id_mining_extractions_200_ok","type":"object"},"maxItems":1000,"title":"get_corporation_corporation_id_mining_extractions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_corporation_mining.v1"]}],"summary":"Moon extraction timers","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":1800,"x-required-roles":["Station_Manager"]}},"/corporation/{corporation_id}/mining/observers/":{"get":{"description":"Paginated list of all entities capable of observing and recording mining for a corporation\n\n\n---\nAlternate route: `/dev/corporation/{corporation_id}/mining/observers/`\n\nAlternate route: `/legacy/corporation/{corporation_id}/mining/observers/`\n\nAlternate route: `/v1/corporation/{corporation_id}/mining/observers/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant\n","operationId":"get_corporation_corporation_id_mining_observers","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Observer list of a corporation","examples":{"application/json":[{"last_updated":"2017-09-19","observer_id":1,"observer_type":"structure"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"last_updated":{"description":"last_updated string","format":"date","title":"get_corporation_corporation_id_mining_observers_last_updated","type":"string"},"observer_id":{"description":"The entity that was observing the asteroid field when it was mined.\n","format":"int64","title":"get_corporation_corporation_id_mining_observers_observer_id","type":"integer"},"observer_type":{"description":"The category of the observing entity","enum":["structure"],"title":"get_corporation_corporation_id_mining_observers_observer_type","type":"string"}},"required":["last_updated","observer_id","observer_type"],"title":"get_corporation_corporation_id_mining_observers_200_ok","type":"object"},"maxItems":1000,"title":"get_corporation_corporation_id_mining_observers_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_corporation_mining.v1"]}],"summary":"Corporation mining observers","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Accountant"]}},"/corporation/{corporation_id}/mining/observers/{observer_id}/":{"get":{"description":"Paginated record of all mining seen by an observer\n\n\n---\nAlternate route: `/dev/corporation/{corporation_id}/mining/observers/{observer_id}/`\n\nAlternate route: `/legacy/corporation/{corporation_id}/mining/observers/{observer_id}/`\n\nAlternate route: `/v1/corporation/{corporation_id}/mining/observers/{observer_id}/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant\n","operationId":"get_corporation_corporation_id_mining_observers_observer_id","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"A mining observer id","format":"int64","in":"path","name":"observer_id","required":true,"type":"integer"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Mining ledger of an observer","examples":{"application/json":[{"character_id":95465499,"last_updated":"2017-09-19","quantity":500,"recorded_corporation_id":109299958,"type_id":1230}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"The character that did the mining\n","format":"int32","title":"get_corporation_corporation_id_mining_observers_observer_id_character_id","type":"integer"},"last_updated":{"description":"last_updated string","format":"date","title":"get_corporation_corporation_id_mining_observers_observer_id_last_updated","type":"string"},"quantity":{"description":"quantity integer","format":"int64","title":"get_corporation_corporation_id_mining_observers_observer_id_quantity","type":"integer"},"recorded_corporation_id":{"description":"The corporation id of the character at the time data was recorded.\n","format":"int32","title":"get_corporation_corporation_id_mining_observers_observer_id_recorded_corporation_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporation_corporation_id_mining_observers_observer_id_type_id","type":"integer"}},"required":["last_updated","character_id","recorded_corporation_id","type_id","quantity"],"title":"get_corporation_corporation_id_mining_observers_observer_id_200_ok","type":"object"},"maxItems":1000,"title":"get_corporation_corporation_id_mining_observers_observer_id_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_corporation_mining.v1"]}],"summary":"Observed corporation mining","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Accountant"]}},"/corporations/npccorps/":{"get":{"description":"Get a list of npc corporations\n\n---\nAlternate route: `/dev/corporations/npccorps/`\n\nAlternate route: `/legacy/corporations/npccorps/`\n\nAlternate route: `/v1/corporations/npccorps/`\n\n---\nThis route expires daily at 11:05","operationId":"get_corporations_npccorps","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of npc corporation ids","examples":{"application/json":[1000001,1000002,1000003]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_corporations_npccorps_200_ok","type":"integer"},"maxItems":500,"title":"get_corporations_npccorps_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get npc corporations","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"]}},"/corporations/{corporation_id}/":{"get":{"description":"Public information about a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/`\n\nAlternate route: `/v4/corporations/{corporation_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Public information about a corporation","examples":{"application/json":{"alliance_id":434243723,"ceo_id":180548812,"creator_id":180548812,"date_founded":"2004-11-28T16:42:51Z","description":"This is a corporation description, it's basically just a string","member_count":656,"name":"C C P","tax_rate":0.256,"ticker":"-CCP-","url":"http://www.eveonline.com"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"alliance_id":{"description":"ID of the alliance that corporation is a member of, if any","format":"int32","title":"get_corporations_corporation_id_alliance_id","type":"integer"},"ceo_id":{"description":"ceo_id integer","format":"int32","title":"get_corporations_corporation_id_ceo_id","type":"integer"},"creator_id":{"description":"creator_id integer","format":"int32","title":"get_corporations_corporation_id_creator_id","type":"integer"},"date_founded":{"description":"date_founded string","format":"date-time","title":"get_corporations_corporation_id_date_founded","type":"string"},"description":{"description":"description string","title":"get_corporations_corporation_id_description","type":"string"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_corporations_corporation_id_faction_id","type":"integer"},"home_station_id":{"description":"home_station_id integer","format":"int32","title":"get_corporations_corporation_id_home_station_id","type":"integer"},"member_count":{"description":"member_count integer","format":"int32","title":"get_corporations_corporation_id_member_count","type":"integer"},"name":{"description":"the full name of the corporation","title":"get_corporations_corporation_id_name","type":"string"},"shares":{"description":"shares integer","format":"int64","title":"get_corporations_corporation_id_shares","type":"integer"},"tax_rate":{"description":"tax_rate number","format":"float","maximum":1,"minimum":0,"title":"get_corporations_corporation_id_tax_rate","type":"number"},"ticker":{"description":"the short name of the corporation","title":"get_corporations_corporation_id_ticker","type":"string"},"url":{"description":"url string","title":"get_corporations_corporation_id_url","type":"string"},"war_eligible":{"description":"war_eligible boolean","title":"get_corporations_corporation_id_war_eligible","type":"boolean"}},"required":["name","ticker","member_count","ceo_id","tax_rate","creator_id"],"title":"get_corporations_corporation_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Corporation not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_corporations_corporation_id_404_not_found","type":"string"}},"title":"get_corporations_corporation_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get corporation information","tags":["Corporation"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/alliancehistory/":{"get":{"description":"Get a list of all the alliances a corporation has been a member of\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/alliancehistory/`\n\nAlternate route: `/v2/corporations/{corporation_id}/alliancehistory/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_alliancehistory","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Alliance history for the given corporation","examples":{"application/json":[{"alliance_id":99000006,"is_deleted":true,"record_id":23,"start_date":"2016-10-25T14:46:00Z"},{"record_id":1,"start_date":"2015-07-06T20:56:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_corporations_corporation_id_alliancehistory_alliance_id","type":"integer"},"is_deleted":{"description":"True if the alliance has been closed","title":"get_corporations_corporation_id_alliancehistory_is_deleted","type":"boolean"},"record_id":{"description":"An incrementing ID that can be used to canonically establish order of records in cases where dates may be ambiguous","format":"int32","title":"get_corporations_corporation_id_alliancehistory_record_id","type":"integer"},"start_date":{"description":"start_date string","format":"date-time","title":"get_corporations_corporation_id_alliancehistory_start_date","type":"string"}},"required":["start_date","record_id"],"title":"get_corporations_corporation_id_alliancehistory_200_ok","type":"object"},"maxItems":10000,"title":"get_corporations_corporation_id_alliancehistory_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get alliance history","tags":["Corporation"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/assets/":{"get":{"description":"Return a list of the corporation assets\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/assets/`\n\nAlternate route: `/v4/corporations/{corporation_id}/assets/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_assets","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of assets","examples":{"application/json":[{"is_blueprint_copy":true,"is_singleton":true,"item_id":1000000016835,"location_flag":"Hangar","location_id":60002959,"location_type":"station","quantity":1,"type_id":3516}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_blueprint_copy":{"description":"is_blueprint_copy boolean","title":"get_corporations_corporation_id_assets_is_blueprint_copy","type":"boolean"},"is_singleton":{"description":"is_singleton boolean","title":"get_corporations_corporation_id_assets_is_singleton","type":"boolean"},"item_id":{"description":"item_id integer","format":"int64","title":"get_corporations_corporation_id_assets_item_id","type":"integer"},"location_flag":{"description":"location_flag string","enum":["AssetSafety","AutoFit","Bonus","Booster","BoosterBay","Capsule","Cargo","CorpDeliveries","CorpSAG1","CorpSAG2","CorpSAG3","CorpSAG4","CorpSAG5","CorpSAG6","CorpSAG7","CrateLoot","Deliveries","DroneBay","DustBattle","DustDatabank","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","FleetHangar","FrigateEscapeBay","Hangar","HangarAll","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","HiddenModifiers","Implant","Impounded","JunkyardReprocessed","JunkyardTrashed","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","Locked","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","OfficeFolder","Pilot","PlanetSurface","QuafeBay","Reward","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","SecondaryStorage","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","ShipHangar","ShipOffline","Skill","SkillInTraining","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedFuelBay","SpecializedGasHold","SpecializedIndustrialShipHold","SpecializedLargeShipHold","SpecializedMaterialBay","SpecializedMediumShipHold","SpecializedMineralHold","SpecializedOreHold","SpecializedPlanetaryCommoditiesHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","StructureActive","StructureFuel","StructureInactive","StructureOffline","SubSystemBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","Unlocked","Wallet","Wardrobe"],"title":"get_corporations_corporation_id_assets_location_flag","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_corporations_corporation_id_assets_location_id","type":"integer"},"location_type":{"description":"location_type string","enum":["station","solar_system","item","other"],"title":"get_corporations_corporation_id_assets_location_type","type":"string"},"quantity":{"description":"quantity integer","format":"int32","title":"get_corporations_corporation_id_assets_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_assets_type_id","type":"integer"}},"required":["type_id","quantity","location_id","location_type","item_id","location_flag","is_singleton"],"title":"get_corporations_corporation_id_assets_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_assets_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_corporation_assets.v1"]}],"summary":"Get corporation assets","tags":["Assets"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/assets/locations/":{"post":{"description":"Return locations for a set of item ids, which you can get from corporation assets endpoint. Coordinates for items in hangars or stations are set to (0,0,0)\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/assets/locations/`\n\nAlternate route: `/v2/corporations/{corporation_id}/assets/locations/`\n\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"post_corporations_corporation_id_assets_locations","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"description":"A list of item ids","in":"body","name":"item_ids","required":true,"schema":{"description":"item_ids array","items":{"description":"item_id integer","format":"int64","title":"post_corporations_corporation_id_assets_locations_item_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_corporations_corporation_id_assets_locations_item_ids","type":"array","uniqueItems":true}},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of asset locations","examples":{"application/json":[{"item_id":12345,"position":{"x":1.2,"y":2.3,"z":-3.4}}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"post_corporations_corporation_id_assets_locations_item_id","type":"integer"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"post_corporations_corporation_id_assets_locations_x","type":"number"},"y":{"description":"y number","format":"double","title":"post_corporations_corporation_id_assets_locations_y","type":"number"},"z":{"description":"z number","format":"double","title":"post_corporations_corporation_id_assets_locations_z","type":"number"}},"required":["x","y","z"],"title":"post_corporations_corporation_id_assets_locations_position","type":"object"}},"required":["item_id","position"],"title":"post_corporations_corporation_id_assets_locations_200_ok","type":"object"},"maxItems":1000,"title":"post_corporations_corporation_id_assets_locations_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Invalid IDs","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_corporations_corporation_id_assets_locations_404_not_found","type":"string"}},"title":"post_corporations_corporation_id_assets_locations_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_corporation_assets.v1"]}],"summary":"Get corporation asset locations","tags":["Assets"],"x-alternate-versions":["dev","v2"],"x-required-roles":["Director"]}},"/corporations/{corporation_id}/assets/names/":{"post":{"description":"Return names for a set of item ids, which you can get from corporation assets endpoint. Only valid for items that can customize names, like containers or ships\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/assets/names/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/assets/names/`\n\nAlternate route: `/v1/corporations/{corporation_id}/assets/names/`\n\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"post_corporations_corporation_id_assets_names","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"description":"A list of item ids","in":"body","name":"item_ids","required":true,"schema":{"description":"item_ids array","items":{"description":"item_id integer","format":"int64","title":"post_corporations_corporation_id_assets_names_item_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_corporations_corporation_id_assets_names_item_ids","type":"array","uniqueItems":true}},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of asset names","examples":{"application/json":[{"item_id":12345,"name":"Awesome Name"}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"post_corporations_corporation_id_assets_names_item_id","type":"integer"},"name":{"description":"name string","title":"post_corporations_corporation_id_assets_names_name","type":"string"}},"required":["item_id","name"],"title":"post_corporations_corporation_id_assets_names_200_ok","type":"object"},"maxItems":1000,"title":"post_corporations_corporation_id_assets_names_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Invalid IDs","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_corporations_corporation_id_assets_names_404_not_found","type":"string"}},"title":"post_corporations_corporation_id_assets_names_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_corporation_assets.v1"]}],"summary":"Get corporation asset names","tags":["Assets"],"x-alternate-versions":["dev","legacy","v1"],"x-required-roles":["Director"]}},"/corporations/{corporation_id}/blueprints/":{"get":{"description":"Returns a list of blueprints the corporation owns\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/blueprints/`\n\nAlternate route: `/v2/corporations/{corporation_id}/blueprints/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_blueprints","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation blueprints","examples":{"application/json":[{"item_id":1000000010495,"location_flag":"CorpSAG1","location_id":60014719,"material_efficiency":0,"quantity":1,"runs":-1,"time_efficiency":0,"type_id":691}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"Unique ID for this item.","format":"int64","title":"get_corporations_corporation_id_blueprints_item_id","type":"integer"},"location_flag":{"description":"Type of the location_id","enum":["AssetSafety","AutoFit","Bonus","Booster","BoosterBay","Capsule","Cargo","CorpDeliveries","CorpSAG1","CorpSAG2","CorpSAG3","CorpSAG4","CorpSAG5","CorpSAG6","CorpSAG7","CrateLoot","Deliveries","DroneBay","DustBattle","DustDatabank","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","FleetHangar","Hangar","HangarAll","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","HiddenModifiers","Implant","Impounded","JunkyardReprocessed","JunkyardTrashed","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","Locked","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","OfficeFolder","Pilot","PlanetSurface","QuafeBay","Reward","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","SecondaryStorage","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","ShipHangar","ShipOffline","Skill","SkillInTraining","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedFuelBay","SpecializedGasHold","SpecializedIndustrialShipHold","SpecializedLargeShipHold","SpecializedMaterialBay","SpecializedMediumShipHold","SpecializedMineralHold","SpecializedOreHold","SpecializedPlanetaryCommoditiesHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","StructureActive","StructureFuel","StructureInactive","StructureOffline","SubSystemBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","Unlocked","Wallet","Wardrobe"],"title":"get_corporations_corporation_id_blueprints_location_flag","type":"string"},"location_id":{"description":"References a station, a ship or an item_id if this blueprint is located within a container.","format":"int64","title":"get_corporations_corporation_id_blueprints_location_id","type":"integer"},"material_efficiency":{"description":"Material Efficiency Level of the blueprint.","format":"int32","maximum":25,"minimum":0,"title":"get_corporations_corporation_id_blueprints_material_efficiency","type":"integer"},"quantity":{"description":"A range of numbers with a minimum of -2 and no maximum value where -1 is an original and -2 is a copy. It can be a positive integer if it is a stack of blueprint originals fresh from the market (e.g. no activities performed on them yet).","format":"int32","minimum":-2,"title":"get_corporations_corporation_id_blueprints_quantity","type":"integer"},"runs":{"description":"Number of runs remaining if the blueprint is a copy, -1 if it is an original.","format":"int32","minimum":-1,"title":"get_corporations_corporation_id_blueprints_runs","type":"integer"},"time_efficiency":{"description":"Time Efficiency Level of the blueprint.","format":"int32","maximum":20,"minimum":0,"title":"get_corporations_corporation_id_blueprints_time_efficiency","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_blueprints_type_id","type":"integer"}},"required":["item_id","type_id","location_id","location_flag","quantity","time_efficiency","material_efficiency","runs"],"title":"get_corporations_corporation_id_blueprints_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_blueprints_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_blueprints.v1"]}],"summary":"Get corporation blueprints","tags":["Corporation"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/bookmarks/":{"get":{"description":"A list of your corporation's bookmarks\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/bookmarks/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/bookmarks/`\n\nAlternate route: `/v1/corporations/{corporation_id}/bookmarks/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_bookmarks","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation owned bookmarks","examples":{"application/json":[{"bookmark_id":4,"created":"2016-08-09T11:57:47Z","creator_id":2112625428,"folder_id":5,"item":{"item_id":50006722,"type_id":29633},"label":"Stargate","location_id":30003430,"notes":"This is a stargate"},{"bookmark_id":5,"coordinates":{"x":-2958928814000,"y":-338367275823,"z":2114538075090},"created":"2016-08-09T11:57:47Z","creator_id":2112625428,"folder_id":5,"label":"Random location","location_id":30003430,"notes":"This is a random location in space"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"bookmark_id":{"description":"bookmark_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_bookmark_id","type":"integer"},"coordinates":{"description":"Optional object that is returned if a bookmark was made on a planet or a random location in space.","properties":{"x":{"description":"x number","format":"double","title":"get_corporations_corporation_id_bookmarks_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_corporations_corporation_id_bookmarks_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_corporations_corporation_id_bookmarks_z","type":"number"}},"required":["x","y","z"],"title":"get_corporations_corporation_id_bookmarks_coordinates","type":"object"},"created":{"description":"created string","format":"date-time","title":"get_corporations_corporation_id_bookmarks_created","type":"string"},"creator_id":{"description":"creator_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_creator_id","type":"integer"},"folder_id":{"description":"folder_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_folder_id","type":"integer"},"item":{"description":"Optional object that is returned if a bookmark was made on a particular item.","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"get_corporations_corporation_id_bookmarks_item_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_type_id","type":"integer"}},"required":["item_id","type_id"],"title":"get_corporations_corporation_id_bookmarks_item","type":"object"},"label":{"description":"label string","title":"get_corporations_corporation_id_bookmarks_label","type":"string"},"location_id":{"description":"location_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_location_id","type":"integer"},"notes":{"description":"notes string","title":"get_corporations_corporation_id_bookmarks_notes","type":"string"}},"required":["bookmark_id","creator_id","created","label","notes","location_id"],"title":"get_corporations_corporation_id_bookmarks_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_bookmarks_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-bookmarks.read_corporation_bookmarks.v1"]}],"summary":"List corporation bookmarks","tags":["Bookmarks"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/bookmarks/folders/":{"get":{"description":"A list of your corporation's bookmark folders\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/bookmarks/folders/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/bookmarks/folders/`\n\nAlternate route: `/v1/corporations/{corporation_id}/bookmarks/folders/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_bookmarks_folders","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation owned bookmark folders","examples":{"application/json":[{"folder_id":5,"name":"Important Locations"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"creator_id":{"description":"creator_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_folders_creator_id","type":"integer"},"folder_id":{"description":"folder_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_folders_folder_id","type":"integer"},"name":{"description":"name string","title":"get_corporations_corporation_id_bookmarks_folders_name","type":"string"}},"required":["folder_id","name"],"title":"get_corporations_corporation_id_bookmarks_folders_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_bookmarks_folders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-bookmarks.read_corporation_bookmarks.v1"]}],"summary":"List corporation bookmark folders","tags":["Bookmarks"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/contacts/":{"get":{"description":"Return contacts of a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contacts/`\n\nAlternate route: `/v2/corporations/{corporation_id}/contacts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_corporations_corporation_id_contacts","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contacts","examples":{"application/json":[{"contact_id":123,"contact_type":"character","is_watched":true,"standing":9.9}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"contact_id":{"description":"contact_id integer","format":"int32","title":"get_corporations_corporation_id_contacts_contact_id","type":"integer"},"contact_type":{"description":"contact_type string","enum":["character","corporation","alliance","faction"],"title":"get_corporations_corporation_id_contacts_contact_type","type":"string"},"is_watched":{"description":"Whether this contact is being watched","title":"get_corporations_corporation_id_contacts_is_watched","type":"boolean"},"label_ids":{"description":"label_ids array","items":{"description":"Label IDs applied to the contact","format":"int64","title":"get_corporations_corporation_id_contacts_label_id","type":"integer"},"maxItems":63,"title":"get_corporations_corporation_id_contacts_label_ids","type":"array"},"standing":{"description":"Standing of the contact","format":"float","title":"get_corporations_corporation_id_contacts_standing","type":"number"}},"required":["standing","contact_type","contact_id"],"title":"get_corporations_corporation_id_contacts_200_ok","type":"object"},"maxItems":200,"title":"get_corporations_corporation_id_contacts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_contacts.v1"]}],"summary":"Get corporation contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":300,"x-required-roles":[]}},"/corporations/{corporation_id}/contacts/labels/":{"get":{"description":"Return custom labels for a corporation's contacts\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contacts/labels/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/contacts/labels/`\n\nAlternate route: `/v1/corporations/{corporation_id}/contacts/labels/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_corporations_corporation_id_contacts_labels","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of corporation contact labels","examples":{"application/json":[{"label_id":2,"label_name":"Corporation Friends"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"label_id":{"description":"label_id integer","format":"int64","title":"get_corporations_corporation_id_contacts_labels_label_id","type":"integer"},"label_name":{"description":"label_name string","title":"get_corporations_corporation_id_contacts_labels_label_name","type":"string"}},"required":["label_id","label_name"],"title":"get_corporations_corporation_id_contacts_labels_200_ok","type":"object"},"maxItems":64,"title":"get_corporations_corporation_id_contacts_labels_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_contacts.v1"]}],"summary":"Get corporation contact labels","tags":["Contacts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":[]}},"/corporations/{corporation_id}/containers/logs/":{"get":{"description":"Returns logs recorded in the past seven days from all audit log secure containers (ALSC) owned by a given corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/containers/logs/`\n\nAlternate route: `/v2/corporations/{corporation_id}/containers/logs/`\n\n---\nThis route is cached for up to 600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_containers_logs","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation ALSC logs","examples":{"application/json":[{"action":"set_password","character_id":2112625428,"container_id":1000000012279,"container_type_id":17365,"location_flag":"CorpSAG1","location_id":1000000012278,"logged_at":"2017-10-10T14:00:00Z","password_type":"general"},{"action":"lock","character_id":2112625428,"container_id":1000000012279,"container_type_id":17365,"location_flag":"CorpSAG1","location_id":1000000012278,"logged_at":"2017-10-11T12:04:33Z","quantity":30,"type_id":1230},{"action":"configure","character_id":2112625428,"container_id":1000000012279,"container_type_id":17365,"location_flag":"CorpSAG2","location_id":1000000012278,"logged_at":"2017-10-11T12:06:29Z","new_config_bitmask":31,"old_config_bitmask":23}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"action":{"description":"action string","enum":["add","assemble","configure","enter_password","lock","move","repackage","set_name","set_password","unlock"],"title":"get_corporations_corporation_id_containers_logs_action","type":"string"},"character_id":{"description":"ID of the character who performed the action.","format":"int32","title":"get_corporations_corporation_id_containers_logs_character_id","type":"integer"},"container_id":{"description":"ID of the container","format":"int64","title":"get_corporations_corporation_id_containers_logs_container_id","type":"integer"},"container_type_id":{"description":"Type ID of the container","format":"int32","title":"get_corporations_corporation_id_containers_logs_container_type_id","type":"integer"},"location_flag":{"description":"location_flag string","enum":["AssetSafety","AutoFit","Bonus","Booster","BoosterBay","Capsule","Cargo","CorpDeliveries","CorpSAG1","CorpSAG2","CorpSAG3","CorpSAG4","CorpSAG5","CorpSAG6","CorpSAG7","CrateLoot","Deliveries","DroneBay","DustBattle","DustDatabank","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","FleetHangar","Hangar","HangarAll","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","HiddenModifiers","Implant","Impounded","JunkyardReprocessed","JunkyardTrashed","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","Locked","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","OfficeFolder","Pilot","PlanetSurface","QuafeBay","Reward","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","SecondaryStorage","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","ShipHangar","ShipOffline","Skill","SkillInTraining","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedFuelBay","SpecializedGasHold","SpecializedIndustrialShipHold","SpecializedLargeShipHold","SpecializedMaterialBay","SpecializedMediumShipHold","SpecializedMineralHold","SpecializedOreHold","SpecializedPlanetaryCommoditiesHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","StructureActive","StructureFuel","StructureInactive","StructureOffline","SubSystemBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","Unlocked","Wallet","Wardrobe"],"title":"get_corporations_corporation_id_containers_logs_location_flag","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_corporations_corporation_id_containers_logs_location_id","type":"integer"},"logged_at":{"description":"Timestamp when this log was created","format":"date-time","title":"get_corporations_corporation_id_containers_logs_logged_at","type":"string"},"new_config_bitmask":{"description":"new_config_bitmask integer","format":"int32","title":"get_corporations_corporation_id_containers_logs_new_config_bitmask","type":"integer"},"old_config_bitmask":{"description":"old_config_bitmask integer","format":"int32","title":"get_corporations_corporation_id_containers_logs_old_config_bitmask","type":"integer"},"password_type":{"description":"Type of password set if action is of type SetPassword or EnterPassword","enum":["config","general"],"title":"get_corporations_corporation_id_containers_logs_password_type","type":"string"},"quantity":{"description":"Quantity of the item being acted upon","format":"int32","title":"get_corporations_corporation_id_containers_logs_quantity","type":"integer"},"type_id":{"description":"Type ID of the item being acted upon","format":"int32","title":"get_corporations_corporation_id_containers_logs_type_id","type":"integer"}},"required":["logged_at","container_id","container_type_id","character_id","location_id","action","location_flag"],"title":"get_corporations_corporation_id_containers_logs_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_containers_logs_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_container_logs.v1"]}],"summary":"Get all corporation ALSC logs","tags":["Corporation"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/contracts/":{"get":{"description":"Returns contracts available to a corporation, only if the corporation is issuer, acceptor or assignee. Only returns contracts no older than 30 days, or if the status is \"in_progress\".\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contracts/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/contracts/`\n\nAlternate route: `/v1/corporations/{corporation_id}/contracts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_corporations_corporation_id_contracts","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contracts","examples":{"application/json":[{"acceptor_id":0,"assignee_id":0,"availability":"public","buyout":10000000000.01,"contract_id":1,"date_expired":"2017-06-13T13:12:32Z","date_issued":"2017-06-06T13:12:32Z","days_to_complete":0,"end_location_id":60014719,"for_corporation":true,"issuer_corporation_id":456,"issuer_id":123,"price":1000000.01,"reward":0.01,"start_location_id":60014719,"status":"outstanding","type":"auction","volume":0.01}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"acceptor_id":{"description":"Who will accept the contract","format":"int32","title":"get_corporations_corporation_id_contracts_acceptor_id","type":"integer"},"assignee_id":{"description":"ID to whom the contract is assigned, can be corporation or character ID","format":"int32","title":"get_corporations_corporation_id_contracts_assignee_id","type":"integer"},"availability":{"description":"To whom the contract is available","enum":["public","personal","corporation","alliance"],"title":"get_corporations_corporation_id_contracts_availability","type":"string"},"buyout":{"description":"Buyout price (for Auctions only)","format":"double","title":"get_corporations_corporation_id_contracts_buyout","type":"number"},"collateral":{"description":"Collateral price (for Couriers only)","format":"double","title":"get_corporations_corporation_id_contracts_collateral","type":"number"},"contract_id":{"description":"contract_id integer","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id","type":"integer"},"date_accepted":{"description":"Date of confirmation of contract","format":"date-time","title":"get_corporations_corporation_id_contracts_date_accepted","type":"string"},"date_completed":{"description":"Date of completed of contract","format":"date-time","title":"get_corporations_corporation_id_contracts_date_completed","type":"string"},"date_expired":{"description":"Expiration date of the contract","format":"date-time","title":"get_corporations_corporation_id_contracts_date_expired","type":"string"},"date_issued":{"description":"\u0421reation date of the contract","format":"date-time","title":"get_corporations_corporation_id_contracts_date_issued","type":"string"},"days_to_complete":{"description":"Number of days to perform the contract","format":"int32","title":"get_corporations_corporation_id_contracts_days_to_complete","type":"integer"},"end_location_id":{"description":"End location ID (for Couriers contract)","format":"int64","title":"get_corporations_corporation_id_contracts_end_location_id","type":"integer"},"for_corporation":{"description":"true if the contract was issued on behalf of the issuer's corporation","title":"get_corporations_corporation_id_contracts_for_corporation","type":"boolean"},"issuer_corporation_id":{"description":"Character's corporation ID for the issuer","format":"int32","title":"get_corporations_corporation_id_contracts_issuer_corporation_id","type":"integer"},"issuer_id":{"description":"Character ID for the issuer","format":"int32","title":"get_corporations_corporation_id_contracts_issuer_id","type":"integer"},"price":{"description":"Price of contract (for ItemsExchange and Auctions)","format":"double","title":"get_corporations_corporation_id_contracts_price","type":"number"},"reward":{"description":"Remuneration for contract (for Couriers only)","format":"double","title":"get_corporations_corporation_id_contracts_reward","type":"number"},"start_location_id":{"description":"Start location ID (for Couriers contract)","format":"int64","title":"get_corporations_corporation_id_contracts_start_location_id","type":"integer"},"status":{"description":"Status of the the contract","enum":["outstanding","in_progress","finished_issuer","finished_contractor","finished","cancelled","rejected","failed","deleted","reversed"],"title":"get_corporations_corporation_id_contracts_status","type":"string"},"title":{"description":"Title of the contract","title":"get_corporations_corporation_id_contracts_title","type":"string"},"type":{"description":"Type of the contract","enum":["unknown","item_exchange","auction","courier","loan"],"title":"get_corporations_corporation_id_contracts_type","type":"string"},"volume":{"description":"Volume of items in the contract","format":"double","title":"get_corporations_corporation_id_contracts_volume","type":"number"}},"required":["contract_id","issuer_id","issuer_corporation_id","assignee_id","acceptor_id","type","status","for_corporation","availability","date_issued","date_expired"],"title":"get_corporations_corporation_id_contracts_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_contracts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_corporation_contracts.v1"]}],"summary":"Get corporation contracts","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":[]}},"/corporations/{corporation_id}/contracts/{contract_id}/bids/":{"get":{"description":"Lists bids on a particular auction contract\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contracts/{contract_id}/bids/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/contracts/{contract_id}/bids/`\n\nAlternate route: `/v1/corporations/{corporation_id}/contracts/{contract_id}/bids/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_contracts_contract_id_bids","parameters":[{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of bids","examples":{"application/json":[{"amount":1.23,"bid_id":1,"bidder_id":123,"date_bid":"2017-01-01T10:10:10Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount bid, in ISK","format":"float","title":"get_corporations_corporation_id_contracts_contract_id_bids_amount","type":"number"},"bid_id":{"description":"Unique ID for the bid","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_bids_bid_id","type":"integer"},"bidder_id":{"description":"Character ID of the bidder","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_bids_bidder_id","type":"integer"},"date_bid":{"description":"Datetime when the bid was placed","format":"date-time","title":"get_corporations_corporation_id_contracts_contract_id_bids_date_bid","type":"string"}},"required":["bid_id","bidder_id","date_bid","amount"],"title":"get_corporations_corporation_id_contracts_contract_id_bids_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_contracts_contract_id_bids_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_corporations_corporation_id_contracts_contract_id_bids_404_not_found","type":"string"}},"title":"get_corporations_corporation_id_contracts_contract_id_bids_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_corporation_contracts.v1"]}],"summary":"Get corporation contract bids","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":[]}},"/corporations/{corporation_id}/contracts/{contract_id}/items/":{"get":{"description":"Lists items of a particular contract\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contracts/{contract_id}/items/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/contracts/{contract_id}/items/`\n\nAlternate route: `/v1/corporations/{corporation_id}/contracts/{contract_id}/items/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_contracts_contract_id_items","parameters":[{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of items in this contract","examples":{"application/json":[{"is_included":true,"is_singleton":false,"quantity":1,"record_id":123456,"type_id":587}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_included":{"description":"true if the contract issuer has submitted this item with the contract, false if the isser is asking for this item in the contract","title":"get_corporations_corporation_id_contracts_contract_id_items_is_included","type":"boolean"},"is_singleton":{"description":"is_singleton boolean","title":"get_corporations_corporation_id_contracts_contract_id_items_is_singleton","type":"boolean"},"quantity":{"description":"Number of items in the stack","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_items_quantity","type":"integer"},"raw_quantity":{"description":"-1 indicates that the item is a singleton (non-stackable). If the item happens to be a Blueprint, -1 is an Original and -2 is a Blueprint Copy","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_items_raw_quantity","type":"integer"},"record_id":{"description":"Unique ID for the item","format":"int64","title":"get_corporations_corporation_id_contracts_contract_id_items_record_id","type":"integer"},"type_id":{"description":"Type ID for item","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_items_type_id","type":"integer"}},"required":["record_id","type_id","quantity","is_singleton","is_included"],"title":"get_corporations_corporation_id_contracts_contract_id_items_200_ok","type":"object"},"maxItems":2000,"title":"get_corporations_corporation_id_contracts_contract_id_items_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_corporations_corporation_id_contracts_contract_id_items_404_not_found","type":"string"}},"title":"get_corporations_corporation_id_contracts_contract_id_items_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}},"520":{"description":"Internal error thrown from the EVE server. Most of the time this means you have hit an EVE server rate limit","examples":{"application/json":{"error":"Error 520 message"}},"schema":{"description":"Error 520","properties":{"error":{"description":"Error 520 message","title":"get_corporations_corporation_id_contracts_contract_id_items_520_error_520","type":"string"}},"title":"get_corporations_corporation_id_contracts_contract_id_items_error_520","type":"object"}}},"security":[{"evesso":["esi-contracts.read_corporation_contracts.v1"]}],"summary":"Get corporation contract items","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":[]}},"/corporations/{corporation_id}/customs_offices/":{"get":{"description":"List customs offices owned by a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/customs_offices/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/customs_offices/`\n\nAlternate route: `/v1/corporations/{corporation_id}/customs_offices/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_customs_offices","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of customs offices and their settings","examples":{"application/json":[{"alliance_tax_rate":0.1,"allow_access_with_standings":true,"allow_alliance_access":false,"corporation_tax_rate":0.02,"excellent_standing_tax_rate":0.05,"good_standing_tax_rate":0.2,"neutral_standing_tax_rate":0.5,"office_id":1000000014530,"reinforce_exit_end":1,"reinforce_exit_start":23,"standing_level":"neutral","system_id":30003657}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_tax_rate":{"description":"Only present if alliance access is allowed","format":"float","title":"get_corporations_corporation_id_customs_offices_alliance_tax_rate","type":"number"},"allow_access_with_standings":{"description":"standing_level and any standing related tax rate only present when this is true","title":"get_corporations_corporation_id_customs_offices_allow_access_with_standings","type":"boolean"},"allow_alliance_access":{"description":"allow_alliance_access boolean","title":"get_corporations_corporation_id_customs_offices_allow_alliance_access","type":"boolean"},"bad_standing_tax_rate":{"description":"bad_standing_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_bad_standing_tax_rate","type":"number"},"corporation_tax_rate":{"description":"corporation_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_corporation_tax_rate","type":"number"},"excellent_standing_tax_rate":{"description":"Tax rate for entities with excellent level of standing, only present if this level is allowed, same for all other standing related tax rates","format":"float","title":"get_corporations_corporation_id_customs_offices_excellent_standing_tax_rate","type":"number"},"good_standing_tax_rate":{"description":"good_standing_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_good_standing_tax_rate","type":"number"},"neutral_standing_tax_rate":{"description":"neutral_standing_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_neutral_standing_tax_rate","type":"number"},"office_id":{"description":"unique ID of this customs office","format":"int64","title":"get_corporations_corporation_id_customs_offices_office_id","type":"integer"},"reinforce_exit_end":{"description":"reinforce_exit_end integer","format":"int32","maximum":23,"minimum":0,"title":"get_corporations_corporation_id_customs_offices_reinforce_exit_end","type":"integer"},"reinforce_exit_start":{"description":"Together with reinforce_exit_end, marks a 2-hour period where this customs office could exit reinforcement mode during the day after initial attack","format":"int32","maximum":23,"minimum":0,"title":"get_corporations_corporation_id_customs_offices_reinforce_exit_start","type":"integer"},"standing_level":{"description":"Access is allowed only for entities with this level of standing or better","enum":["bad","excellent","good","neutral","terrible"],"title":"get_corporations_corporation_id_customs_offices_standing_level","type":"string"},"system_id":{"description":"ID of the solar system this customs office is located in","format":"int32","title":"get_corporations_corporation_id_customs_offices_system_id","type":"integer"},"terrible_standing_tax_rate":{"description":"terrible_standing_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_terrible_standing_tax_rate","type":"number"}},"required":["office_id","system_id","reinforce_exit_start","reinforce_exit_end","allow_alliance_access","allow_access_with_standings"],"title":"get_corporations_corporation_id_customs_offices_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_customs_offices_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-planets.read_customs_offices.v1"]}],"summary":"List corporation customs offices","tags":["Planetary Interaction"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/divisions/":{"get":{"description":"Return corporation hangar and wallet division names, only show if a division is not using the default name\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/divisions/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/divisions/`\n\nAlternate route: `/v1/corporations/{corporation_id}/divisions/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_divisions","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation division names","examples":{"application/json":{"hangar":[{"division":1,"name":"Awesome Hangar 1"}],"wallet":[{"division":1,"name":"Rich Wallet 1"}]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"hangar":{"description":"hangar array","items":{"description":"hangar object","properties":{"division":{"description":"division integer","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_divisions_division","type":"integer"},"name":{"description":"name string","maxLength":50,"title":"get_corporations_corporation_id_divisions_name","type":"string"}},"title":"get_corporations_corporation_id_divisions_hangar_hangar","type":"object"},"maxItems":7,"title":"get_corporations_corporation_id_divisions_hangar","type":"array"},"wallet":{"description":"wallet array","items":{"description":"wallet object","properties":{"division":{"description":"division integer","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_divisions_wallet_division","type":"integer"},"name":{"description":"name string","maxLength":50,"title":"get_corporations_corporation_id_divisions_wallet_name","type":"string"}},"title":"get_corporations_corporation_id_divisions_wallet_wallet","type":"object"},"maxItems":7,"title":"get_corporations_corporation_id_divisions_wallet","type":"array"}},"title":"get_corporations_corporation_id_divisions_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_divisions.v1"]}],"summary":"Get corporation divisions","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/facilities/":{"get":{"description":"Return a corporation's facilities\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/facilities/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/facilities/`\n\nAlternate route: `/v1/corporations/{corporation_id}/facilities/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Factory_Manager\n","operationId":"get_corporations_corporation_id_facilities","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation facilities","examples":{"application/json":[{"facility_id":123,"system_id":45678,"type_id":2502}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"facility_id":{"description":"facility_id integer","format":"int64","title":"get_corporations_corporation_id_facilities_facility_id","type":"integer"},"system_id":{"description":"system_id integer","format":"int32","title":"get_corporations_corporation_id_facilities_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_facilities_type_id","type":"integer"}},"required":["facility_id","type_id","system_id"],"title":"get_corporations_corporation_id_facilities_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_facilities_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_facilities.v1"]}],"summary":"Get corporation facilities","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Factory_Manager"]}},"/corporations/{corporation_id}/fw/stats/":{"get":{"description":"Statistics about a corporation involved in faction warfare\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/fw/stats/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/fw/stats/`\n\nAlternate route: `/v1/corporations/{corporation_id}/fw/stats/`\n\nAlternate route: `/v2/corporations/{corporation_id}/fw/stats/`\n\n---\nThis route expires daily at 11:05","operationId":"get_corporations_corporation_id_fw_stats","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Faction warfare statistics for a given corporation","examples":{"application/json":{"enlisted_on":"2017-10-17T00:00:00Z","faction_id":500001,"kills":{"last_week":893,"total":684350,"yesterday":136},"pilots":28863,"victory_points":{"last_week":102640,"total":52658260,"yesterday":15980}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"enlisted_on":{"description":"The enlistment date of the given corporation into faction warfare. Will not be included if corporation is not enlisted in faction warfare","format":"date-time","title":"get_corporations_corporation_id_fw_stats_enlisted_on","type":"string"},"faction_id":{"description":"The faction the given corporation is enlisted to fight for. Will not be included if corporation is not enlisted in faction warfare","format":"int32","title":"get_corporations_corporation_id_fw_stats_faction_id","type":"integer"},"kills":{"description":"Summary of kills done by the given corporation against enemy factions","properties":{"last_week":{"description":"Last week's total number of kills by members of the given corporation against enemy factions","format":"int32","title":"get_corporations_corporation_id_fw_stats_last_week","type":"integer"},"total":{"description":"Total number of kills by members of the given corporation against enemy factions since the corporation enlisted","format":"int32","title":"get_corporations_corporation_id_fw_stats_total","type":"integer"},"yesterday":{"description":"Yesterday's total number of kills by members of the given corporation against enemy factions","format":"int32","title":"get_corporations_corporation_id_fw_stats_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_corporations_corporation_id_fw_stats_kills","type":"object"},"pilots":{"description":"How many pilots the enlisted corporation has. Will not be included if corporation is not enlisted in faction warfare","format":"int32","title":"get_corporations_corporation_id_fw_stats_pilots","type":"integer"},"victory_points":{"description":"Summary of victory points gained by the given corporation for the enlisted faction","properties":{"last_week":{"description":"Last week's victory points gained by members of the given corporation","format":"int32","title":"get_corporations_corporation_id_fw_stats_victory_points_last_week","type":"integer"},"total":{"description":"Total victory points gained since the given corporation enlisted","format":"int32","title":"get_corporations_corporation_id_fw_stats_victory_points_total","type":"integer"},"yesterday":{"description":"Yesterday's victory points gained by members of the given corporation","format":"int32","title":"get_corporations_corporation_id_fw_stats_victory_points_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_corporations_corporation_id_fw_stats_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_corporations_corporation_id_fw_stats_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_fw_stats.v1"]}],"summary":"Overview of a corporation involved in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/corporations/{corporation_id}/icons/":{"get":{"description":"Get the icon urls for a corporation\n\n---\nAlternate route: `/legacy/corporations/{corporation_id}/icons/`\n\nAlternate route: `/v1/corporations/{corporation_id}/icons/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\n[Diff of the upcoming changes](https://esi.evetech.net/diff/latest/dev/#GET-/corporations/{corporation_id}/icons/)","operationId":"get_corporations_corporation_id_icons","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Urls for icons for the given corporation id and server","examples":{"application/json":{"px128x128":"https://imageserver.eveonline.com/Corporation/1000010_128.png","px256x256":"https://imageserver.eveonline.com/Corporation/1000010_256.png","px64x64":"https://imageserver.eveonline.com/Corporation/1000010_64.png"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"px128x128":{"description":"px128x128 string","title":"get_corporations_corporation_id_icons_px128x128","type":"string"},"px256x256":{"description":"px256x256 string","title":"get_corporations_corporation_id_icons_px256x256","type":"string"},"px64x64":{"description":"px64x64 string","title":"get_corporations_corporation_id_icons_px64x64","type":"string"}},"title":"get_corporations_corporation_id_icons_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No image server for this datasource","examples":{"application/json":{"error":"No image server for this datasource"}},"schema":{"description":"No image server for this datasource","properties":{"error":{"description":"error message","title":"get_corporations_corporation_id_icons_error","type":"string"}},"title":"get_corporations_corporation_id_icons_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get corporation icon","tags":["Corporation"],"x-alternate-versions":["legacy","v1"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/industry/jobs/":{"get":{"description":"List industry jobs run by a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/industry/jobs/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/industry/jobs/`\n\nAlternate route: `/v1/corporations/{corporation_id}/industry/jobs/`\n\n---\nThis route is cached for up to 300 seconds\n\n---\nRequires one of the following EVE corporation role(s): Factory_Manager\n","operationId":"get_corporations_corporation_id_industry_jobs","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"default":false,"description":"Whether to retrieve completed corporation industry jobs. Only includes jobs from the past 90 days","in":"query","name":"include_completed","required":false,"type":"boolean"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of corporation industry jobs","examples":{"application/json":[{"activity_id":1,"blueprint_id":1015116533326,"blueprint_location_id":60006382,"blueprint_type_id":2047,"cost":118.01,"duration":548,"end_date":"2014-07-19T15:56:14Z","facility_id":60006382,"installer_id":498338451,"job_id":229136101,"licensed_runs":200,"location_id":60006382,"output_location_id":60006382,"runs":1,"start_date":"2014-07-19T15:47:06Z","status":"active"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"activity_id":{"description":"Job activity ID","format":"int32","title":"get_corporations_corporation_id_industry_jobs_activity_id","type":"integer"},"blueprint_id":{"description":"blueprint_id integer","format":"int64","title":"get_corporations_corporation_id_industry_jobs_blueprint_id","type":"integer"},"blueprint_location_id":{"description":"Location ID of the location from which the blueprint was installed. Normally a station ID, but can also be an asset (e.g. container) or corporation facility","format":"int64","title":"get_corporations_corporation_id_industry_jobs_blueprint_location_id","type":"integer"},"blueprint_type_id":{"description":"blueprint_type_id integer","format":"int32","title":"get_corporations_corporation_id_industry_jobs_blueprint_type_id","type":"integer"},"completed_character_id":{"description":"ID of the character which completed this job","format":"int32","title":"get_corporations_corporation_id_industry_jobs_completed_character_id","type":"integer"},"completed_date":{"description":"Date and time when this job was completed","format":"date-time","title":"get_corporations_corporation_id_industry_jobs_completed_date","type":"string"},"cost":{"description":"The sume of job installation fee and industry facility tax","format":"double","title":"get_corporations_corporation_id_industry_jobs_cost","type":"number"},"duration":{"description":"Job duration in seconds","format":"int32","title":"get_corporations_corporation_id_industry_jobs_duration","type":"integer"},"end_date":{"description":"Date and time when this job finished","format":"date-time","title":"get_corporations_corporation_id_industry_jobs_end_date","type":"string"},"facility_id":{"description":"ID of the facility where this job is running","format":"int64","title":"get_corporations_corporation_id_industry_jobs_facility_id","type":"integer"},"installer_id":{"description":"ID of the character which installed this job","format":"int32","title":"get_corporations_corporation_id_industry_jobs_installer_id","type":"integer"},"job_id":{"description":"Unique job ID","format":"int32","title":"get_corporations_corporation_id_industry_jobs_job_id","type":"integer"},"licensed_runs":{"description":"Number of runs blueprint is licensed for","format":"int32","title":"get_corporations_corporation_id_industry_jobs_licensed_runs","type":"integer"},"location_id":{"description":"ID of the location for the industry facility","format":"int64","title":"get_corporations_corporation_id_industry_jobs_location_id","type":"integer"},"output_location_id":{"description":"Location ID of the location to which the output of the job will be delivered. Normally a station ID, but can also be a corporation facility","format":"int64","title":"get_corporations_corporation_id_industry_jobs_output_location_id","type":"integer"},"pause_date":{"description":"Date and time when this job was paused (i.e. time when the facility where this job was installed went offline)","format":"date-time","title":"get_corporations_corporation_id_industry_jobs_pause_date","type":"string"},"probability":{"description":"Chance of success for invention","format":"float","title":"get_corporations_corporation_id_industry_jobs_probability","type":"number"},"product_type_id":{"description":"Type ID of product (manufactured, copied or invented)","format":"int32","title":"get_corporations_corporation_id_industry_jobs_product_type_id","type":"integer"},"runs":{"description":"Number of runs for a manufacturing job, or number of copies to make for a blueprint copy","format":"int32","title":"get_corporations_corporation_id_industry_jobs_runs","type":"integer"},"start_date":{"description":"Date and time when this job started","format":"date-time","title":"get_corporations_corporation_id_industry_jobs_start_date","type":"string"},"status":{"description":"status string","enum":["active","cancelled","delivered","paused","ready","reverted"],"title":"get_corporations_corporation_id_industry_jobs_status","type":"string"},"successful_runs":{"description":"Number of successful runs for this job. Equal to runs unless this is an invention job","format":"int32","title":"get_corporations_corporation_id_industry_jobs_successful_runs","type":"integer"}},"required":["job_id","installer_id","facility_id","location_id","activity_id","blueprint_id","blueprint_type_id","blueprint_location_id","output_location_id","runs","status","duration","start_date","end_date"],"title":"get_corporations_corporation_id_industry_jobs_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_industry_jobs_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_corporation_jobs.v1"]}],"summary":"List corporation industry jobs","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":["Factory_Manager"]}},"/corporations/{corporation_id}/killmails/recent/":{"get":{"description":"Get a list of a corporation's kills and losses going back 90 days\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/killmails/recent/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/killmails/recent/`\n\nAlternate route: `/v1/corporations/{corporation_id}/killmails/recent/`\n\n---\nThis route is cached for up to 300 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_killmails_recent","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of killmail IDs and hashes","examples":{"application/json":[{"killmail_hash":"8eef5e8fb6b88fe3407c489df33822b2e3b57a5e","killmail_id":2},{"killmail_hash":"b41ccb498ece33d64019f64c0db392aa3aa701fb","killmail_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"killmail_hash":{"description":"A hash of this killmail","title":"get_corporations_corporation_id_killmails_recent_killmail_hash","type":"string"},"killmail_id":{"description":"ID of this killmail","format":"int32","title":"get_corporations_corporation_id_killmails_recent_killmail_id","type":"integer"}},"required":["killmail_id","killmail_hash"],"title":"get_corporations_corporation_id_killmails_recent_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_killmails_recent_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-killmails.read_corporation_killmails.v1"]}],"summary":"Get a corporation's recent kills and losses","tags":["Killmails"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/medals/":{"get":{"description":"Returns a corporation's medals\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/medals/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/medals/`\n\nAlternate route: `/v1/corporations/{corporation_id}/medals/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_medals","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of medals","examples":{"application/json":[{"created_at":"2017-10-10T14:00:00Z","creator_id":46578,"description":"An Awesome Medal","medal_id":123,"title":"Awesome Medal"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"created_at":{"description":"created_at string","format":"date-time","title":"get_corporations_corporation_id_medals_created_at","type":"string"},"creator_id":{"description":"ID of the character who created this medal","format":"int32","title":"get_corporations_corporation_id_medals_creator_id","type":"integer"},"description":{"description":"description string","maxLength":1000,"title":"get_corporations_corporation_id_medals_description","type":"string"},"medal_id":{"description":"medal_id integer","format":"int32","title":"get_corporations_corporation_id_medals_medal_id","type":"integer"},"title":{"description":"title string","maxLength":100,"title":"get_corporations_corporation_id_medals_title","type":"string"}},"required":["medal_id","title","description","creator_id","created_at"],"title":"get_corporations_corporation_id_medals_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_medals_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_medals.v1"]}],"summary":"Get corporation medals","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":[]}},"/corporations/{corporation_id}/medals/issued/":{"get":{"description":"Returns medals issued by a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/medals/issued/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/medals/issued/`\n\nAlternate route: `/v1/corporations/{corporation_id}/medals/issued/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_medals_issued","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of issued medals","examples":{"application/json":[{"character_id":45678,"issued_at":"2017-10-10T14:00:00Z","issuer_id":67890,"medal_id":123,"reason":"Awesome Reason","status":"private"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"ID of the character who was rewarded this medal","format":"int32","title":"get_corporations_corporation_id_medals_issued_character_id","type":"integer"},"issued_at":{"description":"issued_at string","format":"date-time","title":"get_corporations_corporation_id_medals_issued_issued_at","type":"string"},"issuer_id":{"description":"ID of the character who issued the medal","format":"int32","title":"get_corporations_corporation_id_medals_issued_issuer_id","type":"integer"},"medal_id":{"description":"medal_id integer","format":"int32","title":"get_corporations_corporation_id_medals_issued_medal_id","type":"integer"},"reason":{"description":"reason string","maxLength":1000,"title":"get_corporations_corporation_id_medals_issued_reason","type":"string"},"status":{"description":"status string","enum":["private","public"],"title":"get_corporations_corporation_id_medals_issued_status","type":"string"}},"required":["medal_id","character_id","reason","status","issuer_id","issued_at"],"title":"get_corporations_corporation_id_medals_issued_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_medals_issued_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_medals.v1"]}],"summary":"Get corporation issued medals","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/members/":{"get":{"description":"Return the current member list of a corporation, the token's character need to be a member of the corporation.\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/members/`\n\nAlternate route: `/v3/corporations/{corporation_id}/members/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_members","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of member character IDs","examples":{"application/json":[90000001,90000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"A list of character IDs","items":{"description":"200 ok integer","format":"int32","title":"get_corporations_corporation_id_members_200_ok","type":"integer"},"maxItems":12601,"title":"get_corporations_corporation_id_members_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_corporation_membership.v1"]}],"summary":"Get corporation members","tags":["Corporation"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/members/limit/":{"get":{"description":"Return a corporation's member limit, not including CEO himself\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/members/limit/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/members/limit/`\n\nAlternate route: `/v1/corporations/{corporation_id}/members/limit/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_members_limit","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"The corporation's member limit","examples":{"application/json":40},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok integer","format":"int32","title":"get_corporations_corporation_id_members_limit_ok","type":"integer"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.track_members.v1"]}],"summary":"Get corporation member limit","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/members/titles/":{"get":{"description":"Returns a corporation's members' titles\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/members/titles/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/members/titles/`\n\nAlternate route: `/v1/corporations/{corporation_id}/members/titles/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_members_titles","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of members and theirs titles","examples":{"application/json":[{"character_id":12345,"titles":[]}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"character_id integer","format":"int32","title":"get_corporations_corporation_id_members_titles_character_id","type":"integer"},"titles":{"description":"A list of title_id","items":{"description":"title integer","format":"int32","title":"get_corporations_corporation_id_members_titles_title","type":"integer"},"maxItems":16,"title":"get_corporations_corporation_id_members_titles_titles","type":"array"}},"required":["character_id","titles"],"title":"get_corporations_corporation_id_members_titles_200_ok","type":"object"},"maxItems":12601,"title":"get_corporations_corporation_id_members_titles_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_titles.v1"]}],"summary":"Get corporation's members' titles","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/membertracking/":{"get":{"description":"Returns additional information about a corporation's members which helps tracking their activities\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/membertracking/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/membertracking/`\n\nAlternate route: `/v1/corporations/{corporation_id}/membertracking/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_membertracking","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of member character IDs","examples":{"application/json":[{"character_id":2112000001,"location_id":30003657,"logoff_date":"2017-08-03T14:31:16Z","logon_date":"2017-08-03T14:22:03Z","ship_type_id":22464,"start_date":"2017-07-10T14:46:00Z"},{"character_id":2112000002,"location_id":30003657,"logoff_date":"2017-07-25T11:07:40Z","logon_date":"2017-07-25T10:54:00Z","ship_type_id":670,"start_date":"2017-07-10T14:50:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"base_id":{"description":"base_id integer","format":"int32","title":"get_corporations_corporation_id_membertracking_base_id","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_corporations_corporation_id_membertracking_character_id","type":"integer"},"location_id":{"description":"location_id integer","format":"int64","title":"get_corporations_corporation_id_membertracking_location_id","type":"integer"},"logoff_date":{"description":"logoff_date string","format":"date-time","title":"get_corporations_corporation_id_membertracking_logoff_date","type":"string"},"logon_date":{"description":"logon_date string","format":"date-time","title":"get_corporations_corporation_id_membertracking_logon_date","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_corporations_corporation_id_membertracking_ship_type_id","type":"integer"},"start_date":{"description":"start_date string","format":"date-time","title":"get_corporations_corporation_id_membertracking_start_date","type":"string"}},"required":["character_id"],"title":"get_corporations_corporation_id_membertracking_200_ok","type":"object"},"maxItems":12601,"title":"get_corporations_corporation_id_membertracking_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.track_members.v1"]}],"summary":"Track corporation members","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/orders/":{"get":{"description":"List open market orders placed on behalf of a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/orders/`\n\nAlternate route: `/v3/corporations/{corporation_id}/orders/`\n\n---\nThis route is cached for up to 1200 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Trader\n","operationId":"get_corporations_corporation_id_orders","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of open market orders","examples":{"application/json":[{"duration":30,"escrow":45.6,"is_buy_order":true,"issued":"2016-09-03T05:12:25Z","issued_by":2112625428,"location_id":456,"min_volume":1,"order_id":123,"price":33.3,"range":"station","region_id":123,"type_id":456,"volume_remain":4422,"volume_total":123456,"wallet_division":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"Number of days for which order is valid (starting from the issued date). An order expires at time issued + duration","format":"int32","title":"get_corporations_corporation_id_orders_duration","type":"integer"},"escrow":{"description":"For buy orders, the amount of ISK in escrow","format":"double","title":"get_corporations_corporation_id_orders_escrow","type":"number"},"is_buy_order":{"description":"True if the order is a bid (buy) order","title":"get_corporations_corporation_id_orders_is_buy_order","type":"boolean"},"issued":{"description":"Date and time when this order was issued","format":"date-time","title":"get_corporations_corporation_id_orders_issued","type":"string"},"issued_by":{"description":"The character who issued this order","format":"int32","title":"get_corporations_corporation_id_orders_issued_by","type":"integer"},"location_id":{"description":"ID of the location where order was placed","format":"int64","title":"get_corporations_corporation_id_orders_location_id","type":"integer"},"min_volume":{"description":"For buy orders, the minimum quantity that will be accepted in a matching sell order","format":"int32","title":"get_corporations_corporation_id_orders_min_volume","type":"integer"},"order_id":{"description":"Unique order ID","format":"int64","title":"get_corporations_corporation_id_orders_order_id","type":"integer"},"price":{"description":"Cost per unit for this order","format":"double","title":"get_corporations_corporation_id_orders_price","type":"number"},"range":{"description":"Valid order range, numbers are ranges in jumps","enum":["1","10","2","20","3","30","4","40","5","region","solarsystem","station"],"title":"get_corporations_corporation_id_orders_range","type":"string"},"region_id":{"description":"ID of the region where order was placed","format":"int32","title":"get_corporations_corporation_id_orders_region_id","type":"integer"},"type_id":{"description":"The type ID of the item transacted in this order","format":"int32","title":"get_corporations_corporation_id_orders_type_id","type":"integer"},"volume_remain":{"description":"Quantity of items still required or offered","format":"int32","title":"get_corporations_corporation_id_orders_volume_remain","type":"integer"},"volume_total":{"description":"Quantity of items required or offered at time order was placed","format":"int32","title":"get_corporations_corporation_id_orders_volume_total","type":"integer"},"wallet_division":{"description":"The corporation wallet division used for this order.","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_orders_wallet_division","type":"integer"}},"required":["duration","wallet_division","order_id","type_id","region_id","location_id","range","price","volume_total","volume_remain","issued","issued_by"],"title":"get_corporations_corporation_id_orders_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_orders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.read_corporation_orders.v1"]}],"summary":"List open orders from a corporation","tags":["Market"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":1200,"x-required-roles":["Accountant","Trader"]}},"/corporations/{corporation_id}/orders/history/":{"get":{"description":"List cancelled and expired market orders placed on behalf of a corporation up to 90 days in the past.\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/orders/history/`\n\nAlternate route: `/v2/corporations/{corporation_id}/orders/history/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Trader\n","operationId":"get_corporations_corporation_id_orders_history","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Expired and cancelled market orders placed on behalf of a corporation","examples":{"application/json":[{"duration":30,"escrow":45.6,"is_buy_order":true,"issued":"2016-09-03T05:12:25Z","issued_by":2112625428,"location_id":456,"min_volume":1,"order_id":123,"price":33.3,"range":"station","region_id":123,"state":"expired","type_id":456,"volume_remain":4422,"volume_total":123456,"wallet_division":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"Number of days the order was valid for (starting from the issued date). An order expires at time issued + duration","format":"int32","title":"get_corporations_corporation_id_orders_history_duration","type":"integer"},"escrow":{"description":"For buy orders, the amount of ISK in escrow","format":"double","title":"get_corporations_corporation_id_orders_history_escrow","type":"number"},"is_buy_order":{"description":"True if the order is a bid (buy) order","title":"get_corporations_corporation_id_orders_history_is_buy_order","type":"boolean"},"issued":{"description":"Date and time when this order was issued","format":"date-time","title":"get_corporations_corporation_id_orders_history_issued","type":"string"},"issued_by":{"description":"The character who issued this order","format":"int32","title":"get_corporations_corporation_id_orders_history_issued_by","type":"integer"},"location_id":{"description":"ID of the location where order was placed","format":"int64","title":"get_corporations_corporation_id_orders_history_location_id","type":"integer"},"min_volume":{"description":"For buy orders, the minimum quantity that will be accepted in a matching sell order","format":"int32","title":"get_corporations_corporation_id_orders_history_min_volume","type":"integer"},"order_id":{"description":"Unique order ID","format":"int64","title":"get_corporations_corporation_id_orders_history_order_id","type":"integer"},"price":{"description":"Cost per unit for this order","format":"double","title":"get_corporations_corporation_id_orders_history_price","type":"number"},"range":{"description":"Valid order range, numbers are ranges in jumps","enum":["1","10","2","20","3","30","4","40","5","region","solarsystem","station"],"title":"get_corporations_corporation_id_orders_history_range","type":"string"},"region_id":{"description":"ID of the region where order was placed","format":"int32","title":"get_corporations_corporation_id_orders_history_region_id","type":"integer"},"state":{"description":"Current order state","enum":["cancelled","expired"],"title":"get_corporations_corporation_id_orders_history_state","type":"string"},"type_id":{"description":"The type ID of the item transacted in this order","format":"int32","title":"get_corporations_corporation_id_orders_history_type_id","type":"integer"},"volume_remain":{"description":"Quantity of items still required or offered","format":"int32","title":"get_corporations_corporation_id_orders_history_volume_remain","type":"integer"},"volume_total":{"description":"Quantity of items required or offered at time order was placed","format":"int32","title":"get_corporations_corporation_id_orders_history_volume_total","type":"integer"},"wallet_division":{"description":"The corporation wallet division used for this order","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_orders_history_wallet_division","type":"integer"}},"required":["wallet_division","duration","state","order_id","type_id","region_id","location_id","range","price","volume_total","volume_remain","issued"],"title":"get_corporations_corporation_id_orders_history_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_orders_history_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.read_corporation_orders.v1"]}],"summary":"List historical orders from a corporation","tags":["Market"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600,"x-required-roles":["Accountant","Trader"]}},"/corporations/{corporation_id}/roles/":{"get":{"description":"Return the roles of all members if the character has the personnel manager role or any grantable role.\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/roles/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/roles/`\n\nAlternate route: `/v1/corporations/{corporation_id}/roles/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_roles","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of member character ID's and roles","examples":{"application/json":[{"character_id":1000171,"roles":["Director","Station_Manager"]}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"character_id integer","format":"int32","title":"get_corporations_corporation_id_roles_character_id","type":"integer"},"grantable_roles":{"description":"grantable_roles array","items":{"description":"grantable_role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_grantable_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_grantable_roles","type":"array"},"grantable_roles_at_base":{"description":"grantable_roles_at_base array","items":{"description":"grantable_roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_grantable_roles_at_base_grantable_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_grantable_roles_at_base","type":"array"},"grantable_roles_at_hq":{"description":"grantable_roles_at_hq array","items":{"description":"grantable_roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_grantable_roles_at_hq_grantable_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_grantable_roles_at_hq","type":"array"},"grantable_roles_at_other":{"description":"grantable_roles_at_other array","items":{"description":"grantable_roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_grantable_roles_at_other_grantable_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_grantable_roles_at_other","type":"array"},"roles":{"description":"roles array","items":{"description":"role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_roles","type":"array"},"roles_at_base":{"description":"roles_at_base array","items":{"description":"roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_roles_at_base_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_roles_at_base","type":"array"},"roles_at_hq":{"description":"roles_at_hq array","items":{"description":"roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_roles_at_hq_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_roles_at_hq","type":"array"},"roles_at_other":{"description":"roles_at_other array","items":{"description":"roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_roles_at_other_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_roles_at_other","type":"array"}},"required":["character_id"],"title":"get_corporations_corporation_id_roles_200_ok","type":"object"},"maxItems":12601,"title":"get_corporations_corporation_id_roles_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_corporation_membership.v1"]}],"summary":"Get corporation member roles","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/roles/history/":{"get":{"description":"Return how roles have changed for a coporation's members, up to a month\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/roles/history/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/roles/history/`\n\nAlternate route: `/v1/corporations/{corporation_id}/roles/history/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_roles_history","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of role changes","examples":{"application/json":[{"changed_at":"2016-10-25T14:46:00Z","character_id":12345,"issuer_id":45678,"new_roles":["Station_Manager"],"old_roles":["Diplomat"],"role_type":"roles"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"changed_at":{"description":"changed_at string","format":"date-time","title":"get_corporations_corporation_id_roles_history_changed_at","type":"string"},"character_id":{"description":"The character whose roles are changed","format":"int32","title":"get_corporations_corporation_id_roles_history_character_id","type":"integer"},"issuer_id":{"description":"ID of the character who issued this change","format":"int32","title":"get_corporations_corporation_id_roles_history_issuer_id","type":"integer"},"new_roles":{"description":"new_roles array","items":{"description":"new_role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_history_new_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_history_new_roles","type":"array"},"old_roles":{"description":"old_roles array","items":{"description":"old_role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_history_old_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_history_old_roles","type":"array"},"role_type":{"description":"role_type string","enum":["grantable_roles","grantable_roles_at_base","grantable_roles_at_hq","grantable_roles_at_other","roles","roles_at_base","roles_at_hq","roles_at_other"],"title":"get_corporations_corporation_id_roles_history_role_type","type":"string"}},"required":["character_id","changed_at","issuer_id","role_type","old_roles","new_roles"],"title":"get_corporations_corporation_id_roles_history_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_roles_history_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_corporation_membership.v1"]}],"summary":"Get corporation member roles history","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/shareholders/":{"get":{"description":"Return the current shareholders of a corporation.\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/shareholders/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/shareholders/`\n\nAlternate route: `/v1/corporations/{corporation_id}/shareholders/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_shareholders","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of shareholders","examples":{"application/json":[{"share_count":580,"shareholder_id":98000001,"shareholder_type":"corporation"},{"share_count":20,"shareholder_id":2112000003,"shareholder_type":"character"},{"share_count":300,"shareholder_id":2112000004,"shareholder_type":"character"},{"share_count":100,"shareholder_id":2112000001,"shareholder_type":"character"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"List of shareholders","items":{"description":"200 ok object","properties":{"share_count":{"description":"share_count integer","format":"int64","title":"get_corporations_corporation_id_shareholders_share_count","type":"integer"},"shareholder_id":{"description":"shareholder_id integer","format":"int32","title":"get_corporations_corporation_id_shareholders_shareholder_id","type":"integer"},"shareholder_type":{"description":"shareholder_type string","enum":["character","corporation"],"title":"get_corporations_corporation_id_shareholders_shareholder_type","type":"string"}},"required":["shareholder_id","shareholder_type","share_count"],"title":"get_corporations_corporation_id_shareholders_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_shareholders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_corporation_wallets.v1"]}],"summary":"Get corporation shareholders","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/standings/":{"get":{"description":"Return corporation standings from agents, NPC corporations, and factions\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/standings/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/standings/`\n\nAlternate route: `/v1/corporations/{corporation_id}/standings/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_standings","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of standings","examples":{"application/json":[{"from_id":3009841,"from_type":"agent","standing":0.1},{"from_id":1000061,"from_type":"npc_corp","standing":0},{"from_id":500003,"from_type":"faction","standing":-1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"from_id":{"description":"from_id integer","format":"int32","title":"get_corporations_corporation_id_standings_from_id","type":"integer"},"from_type":{"description":"from_type string","enum":["agent","npc_corp","faction"],"title":"get_corporations_corporation_id_standings_from_type","type":"string"},"standing":{"description":"standing number","format":"float","title":"get_corporations_corporation_id_standings_standing","type":"number"}},"required":["from_id","from_type","standing"],"title":"get_corporations_corporation_id_standings_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_standings_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_standings.v1"]}],"summary":"Get corporation standings","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":[]}},"/corporations/{corporation_id}/starbases/":{"get":{"description":"Returns list of corporation starbases (POSes)\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/starbases/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/starbases/`\n\nAlternate route: `/v1/corporations/{corporation_id}/starbases/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_starbases","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of starbases (POSes)","examples":{"application/json":[{"starbase_id":12345,"system_id":123456,"type_id":456}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"moon_id":{"description":"The moon this starbase (POS) is anchored on, unanchored POSes do not have this information","format":"int32","title":"get_corporations_corporation_id_starbases_moon_id","type":"integer"},"onlined_since":{"description":"When the POS onlined, for starbases (POSes) in online state","format":"date-time","title":"get_corporations_corporation_id_starbases_onlined_since","type":"string"},"reinforced_until":{"description":"When the POS will be out of reinforcement, for starbases (POSes) in reinforced state","format":"date-time","title":"get_corporations_corporation_id_starbases_reinforced_until","type":"string"},"starbase_id":{"description":"Unique ID for this starbase (POS)","format":"int64","title":"get_corporations_corporation_id_starbases_starbase_id","type":"integer"},"state":{"description":"state string","enum":["offline","online","onlining","reinforced","unanchoring"],"title":"get_corporations_corporation_id_starbases_state","type":"string"},"system_id":{"description":"The solar system this starbase (POS) is in, unanchored POSes have this information","format":"int32","title":"get_corporations_corporation_id_starbases_system_id","type":"integer"},"type_id":{"description":"Starbase (POS) type","format":"int32","title":"get_corporations_corporation_id_starbases_type_id","type":"integer"},"unanchor_at":{"description":"When the POS started unanchoring, for starbases (POSes) in unanchoring state","format":"date-time","title":"get_corporations_corporation_id_starbases_unanchor_at","type":"string"}},"required":["starbase_id","type_id","system_id"],"title":"get_corporations_corporation_id_starbases_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_starbases_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_starbases.v1"]}],"summary":"Get corporation starbases (POSes)","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/starbases/{starbase_id}/":{"get":{"description":"Returns various settings and fuels of a starbase (POS)\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/starbases/{starbase_id}/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/starbases/{starbase_id}/`\n\nAlternate route: `/v1/corporations/{corporation_id}/starbases/{starbase_id}/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_starbases_starbase_id","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"An EVE starbase (POS) ID","format":"int64","in":"path","name":"starbase_id","required":true,"type":"integer"},{"description":"The solar system this starbase (POS) is located in,","format":"int32","in":"query","name":"system_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of starbases (POSes)","examples":{"application/json":{"allow_alliance_members":false,"allow_corporation_members":true,"anchor":"config_starbase_equipment_role","attack_if_at_war":true,"attack_if_other_security_status_dropping":false,"fuel_bay_take":"config_starbase_equipment_role","fuel_bay_view":"config_starbase_equipment_role","offline":"config_starbase_equipment_role","online":"config_starbase_equipment_role","unanchor":"config_starbase_equipment_role","use_alliance_standings":false}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"allow_alliance_members":{"description":"allow_alliance_members boolean","title":"get_corporations_corporation_id_starbases_starbase_id_allow_alliance_members","type":"boolean"},"allow_corporation_members":{"description":"allow_corporation_members boolean","title":"get_corporations_corporation_id_starbases_starbase_id_allow_corporation_members","type":"boolean"},"anchor":{"description":"Who can anchor starbase (POS) and its structures","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_anchor","type":"string"},"attack_if_at_war":{"description":"attack_if_at_war boolean","title":"get_corporations_corporation_id_starbases_starbase_id_attack_if_at_war","type":"boolean"},"attack_if_other_security_status_dropping":{"description":"attack_if_other_security_status_dropping boolean","title":"get_corporations_corporation_id_starbases_starbase_id_attack_if_other_security_status_dropping","type":"boolean"},"attack_security_status_threshold":{"description":"Starbase (POS) will attack if target's security standing is lower than this value","format":"float","title":"get_corporations_corporation_id_starbases_starbase_id_attack_security_status_threshold","type":"number"},"attack_standing_threshold":{"description":"Starbase (POS) will attack if target's standing is lower than this value","format":"float","title":"get_corporations_corporation_id_starbases_starbase_id_attack_standing_threshold","type":"number"},"fuel_bay_take":{"description":"Who can take fuel blocks out of the starbase (POS)'s fuel bay","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_fuel_bay_take","type":"string"},"fuel_bay_view":{"description":"Who can view the starbase (POS)'s fule bay. Characters either need to have required role or belong to the starbase (POS) owner's corporation or alliance, as described by the enum, all other access settings follows the same scheme","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_fuel_bay_view","type":"string"},"fuels":{"description":"Fuel blocks and other things that will be consumed when operating a starbase (POS)","items":{"description":"fuel object","properties":{"quantity":{"description":"quantity integer","format":"int32","title":"get_corporations_corporation_id_starbases_starbase_id_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_starbases_starbase_id_type_id","type":"integer"}},"required":["type_id","quantity"],"title":"get_corporations_corporation_id_starbases_starbase_id_fuel","type":"object"},"maxItems":20,"title":"get_corporations_corporation_id_starbases_starbase_id_fuels","type":"array"},"offline":{"description":"Who can offline starbase (POS) and its structures","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_offline","type":"string"},"online":{"description":"Who can online starbase (POS) and its structures","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_online","type":"string"},"unanchor":{"description":"Who can unanchor starbase (POS) and its structures","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_unanchor","type":"string"},"use_alliance_standings":{"description":"True if the starbase (POS) is using alliance standings, otherwise using corporation's","title":"get_corporations_corporation_id_starbases_starbase_id_use_alliance_standings","type":"boolean"}},"required":["fuel_bay_view","fuel_bay_take","anchor","unanchor","online","offline","allow_corporation_members","allow_alliance_members","use_alliance_standings","attack_if_other_security_status_dropping","attack_if_at_war"],"title":"get_corporations_corporation_id_starbases_starbase_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_starbases.v1"]}],"summary":"Get starbase (POS) detail","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/structures/":{"get":{"description":"Get a list of corporation structures. This route's version includes the changes to structures detailed in this blog: https://www.eveonline.com/article/upwell-2.0-structures-changes-coming-on-february-13th\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/structures/`\n\nAlternate route: `/v3/corporations/{corporation_id}/structures/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Station_Manager\n","operationId":"get_corporations_corporation_id_structures","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation structures' information","examples":{"application/json":[{"corporation_id":667531913,"profile_id":11237,"reinforce_hour":22,"reinforce_weekday":2,"state":"shield_vulnerable","structure_id":1021975535893,"system_id":30004763,"type_id":35833}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"ID of the corporation that owns the structure","format":"int32","title":"get_corporations_corporation_id_structures_corporation_id","type":"integer"},"fuel_expires":{"description":"Date on which the structure will run out of fuel","format":"date-time","title":"get_corporations_corporation_id_structures_fuel_expires","type":"string"},"next_reinforce_apply":{"description":"The date and time when the structure's newly requested reinforcement times (e.g. next_reinforce_hour and next_reinforce_day) will take effect","format":"date-time","title":"get_corporations_corporation_id_structures_next_reinforce_apply","type":"string"},"next_reinforce_hour":{"description":"The requested change to reinforce_hour that will take effect at the time shown by next_reinforce_apply","format":"int32","maximum":23,"minimum":0,"title":"get_corporations_corporation_id_structures_next_reinforce_hour","type":"integer"},"next_reinforce_weekday":{"description":"The requested change to reinforce_weekday that will take effect at the time shown by next_reinforce_apply","format":"int32","maximum":6,"minimum":0,"title":"get_corporations_corporation_id_structures_next_reinforce_weekday","type":"integer"},"profile_id":{"description":"The id of the ACL profile for this citadel","format":"int32","title":"get_corporations_corporation_id_structures_profile_id","type":"integer"},"reinforce_hour":{"description":"The hour of day that determines the four hour window when the structure will randomly exit its reinforcement periods and become vulnerable to attack against its armor and/or hull. The structure will become vulnerable at a random time that is +/- 2 hours centered on the value of this property","format":"int32","maximum":23,"minimum":0,"title":"get_corporations_corporation_id_structures_reinforce_hour","type":"integer"},"reinforce_weekday":{"description":"The day of the week when the structure exits its final reinforcement period and becomes vulnerable to attack against its hull. Monday is 0 and Sunday is 6","format":"int32","maximum":6,"minimum":0,"title":"get_corporations_corporation_id_structures_reinforce_weekday","type":"integer"},"services":{"description":"Contains a list of service upgrades, and their state","items":{"description":"service object","properties":{"name":{"description":"name string","title":"get_corporations_corporation_id_structures_name","type":"string"},"state":{"description":"state string","enum":["online","offline","cleanup"],"title":"get_corporations_corporation_id_structures_service_state","type":"string"}},"required":["name","state"],"title":"get_corporations_corporation_id_structures_service","type":"object"},"maxItems":10,"title":"get_corporations_corporation_id_structures_services","type":"array"},"state":{"description":"state string","enum":["anchor_vulnerable","anchoring","armor_reinforce","armor_vulnerable","deploy_vulnerable","fitting_invulnerable","hull_reinforce","hull_vulnerable","online_deprecated","onlining_vulnerable","shield_vulnerable","unanchored","unknown"],"title":"get_corporations_corporation_id_structures_state","type":"string"},"state_timer_end":{"description":"Date at which the structure will move to it's next state","format":"date-time","title":"get_corporations_corporation_id_structures_state_timer_end","type":"string"},"state_timer_start":{"description":"Date at which the structure entered it's current state","format":"date-time","title":"get_corporations_corporation_id_structures_state_timer_start","type":"string"},"structure_id":{"description":"The Item ID of the structure","format":"int64","title":"get_corporations_corporation_id_structures_structure_id","type":"integer"},"system_id":{"description":"The solar system the structure is in","format":"int32","title":"get_corporations_corporation_id_structures_system_id","type":"integer"},"type_id":{"description":"The type id of the structure","format":"int32","title":"get_corporations_corporation_id_structures_type_id","type":"integer"},"unanchors_at":{"description":"Date at which the structure will unanchor","format":"date-time","title":"get_corporations_corporation_id_structures_unanchors_at","type":"string"}},"required":["structure_id","type_id","corporation_id","system_id","profile_id","reinforce_hour","state"],"title":"get_corporations_corporation_id_structures_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_structures_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_structures.v1"]}],"summary":"Get corporation structures","tags":["Corporation"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":3600,"x-required-roles":["Station_Manager"]}},"/corporations/{corporation_id}/titles/":{"get":{"description":"Returns a corporation's titles\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/titles/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/titles/`\n\nAlternate route: `/v1/corporations/{corporation_id}/titles/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_titles","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of titles","examples":{"application/json":[{"name":"Awesome Title","roles":["Hangar_Take_6","Hangar_Query_2"],"title_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"grantable_roles":{"description":"grantable_roles array","items":{"description":"grantable_role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_grantable_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_grantable_roles","type":"array"},"grantable_roles_at_base":{"description":"grantable_roles_at_base array","items":{"description":"grantable_roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_grantable_roles_at_base_grantable_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_grantable_roles_at_base","type":"array"},"grantable_roles_at_hq":{"description":"grantable_roles_at_hq array","items":{"description":"grantable_roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_grantable_roles_at_hq_grantable_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_grantable_roles_at_hq","type":"array"},"grantable_roles_at_other":{"description":"grantable_roles_at_other array","items":{"description":"grantable_roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_grantable_roles_at_other_grantable_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_grantable_roles_at_other","type":"array"},"name":{"description":"name string","title":"get_corporations_corporation_id_titles_name","type":"string"},"roles":{"description":"roles array","items":{"description":"role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_roles","type":"array"},"roles_at_base":{"description":"roles_at_base array","items":{"description":"roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_roles_at_base_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_roles_at_base","type":"array"},"roles_at_hq":{"description":"roles_at_hq array","items":{"description":"roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_roles_at_hq_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_roles_at_hq","type":"array"},"roles_at_other":{"description":"roles_at_other array","items":{"description":"roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_roles_at_other_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_roles_at_other","type":"array"},"title_id":{"description":"title_id integer","format":"int32","title":"get_corporations_corporation_id_titles_title_id","type":"integer"}},"title":"get_corporations_corporation_id_titles_200_ok","type":"object"},"maxItems":16,"title":"get_corporations_corporation_id_titles_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_titles.v1"]}],"summary":"Get corporation titles","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/wallets/":{"get":{"description":"Get a corporation's wallets\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/wallets/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/wallets/`\n\nAlternate route: `/v1/corporations/{corporation_id}/wallets/`\n\n---\nThis route is cached for up to 300 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Junior_Accountant\n","operationId":"get_corporations_corporation_id_wallets","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation wallets","examples":{"application/json":[{"balance":123.45,"division":1},{"balance":123.45,"division":2},{"balance":123.45,"division":3},{"balance":123.45,"division":4},{"balance":123.45,"division":5},{"balance":123.45,"division":6},{"balance":123.45,"division":7}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"balance":{"description":"balance number","format":"double","title":"get_corporations_corporation_id_wallets_balance","type":"number"},"division":{"description":"division integer","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_wallets_division","type":"integer"}},"required":["division","balance"],"title":"get_corporations_corporation_id_wallets_200_ok","type":"object"},"maxItems":7,"title":"get_corporations_corporation_id_wallets_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_corporation_wallets.v1"]}],"summary":"Returns a corporation's wallet balance","tags":["Wallet"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":["Accountant","Junior_Accountant"]}},"/corporations/{corporation_id}/wallets/{division}/journal/":{"get":{"description":"Retrieve the given corporation's wallet journal for the given division going 30 days back\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/wallets/{division}/journal/`\n\nAlternate route: `/v4/corporations/{corporation_id}/wallets/{division}/journal/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Junior_Accountant\n","operationId":"get_corporations_corporation_id_wallets_division_journal","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"description":"Wallet key of the division to fetch journals from","format":"int32","in":"path","maximum":7,"minimum":1,"name":"division","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Journal entries","examples":{"application/json":[{"amount":-1000,"balance":100000.0,"context_id":2112625428,"context_id_type":"character_id","date":"2016-10-24T09:00:00Z","description":"CCP Zoetrope transferred cash from C C P's corporate account to CCP SnowedIn's account","first_party_id":109299958,"id":1234567890,"ref_type":"corporation_account_withdrawal","second_party_id":95538921}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"Journal entries","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount of ISK given or taken from the wallet as a result of the given transaction. Positive when ISK is deposited into the wallet and negative when ISK is withdrawn","format":"double","title":"get_corporations_corporation_id_wallets_division_journal_amount","type":"number"},"balance":{"description":"Wallet balance after transaction occurred","format":"double","title":"get_corporations_corporation_id_wallets_division_journal_balance","type":"number"},"context_id":{"description":"An ID that gives extra context to the particular transaction. Because of legacy reasons the context is completely different per ref_type and means different things. It is also possible to not have a context_id","format":"int64","title":"get_corporations_corporation_id_wallets_division_journal_context_id","type":"integer"},"context_id_type":{"description":"The type of the given context_id if present","enum":["structure_id","station_id","market_transaction_id","character_id","corporation_id","alliance_id","eve_system","industry_job_id","contract_id","planet_id","system_id","type_id"],"title":"get_corporations_corporation_id_wallets_division_journal_context_id_type","type":"string"},"date":{"description":"Date and time of transaction","format":"date-time","title":"get_corporations_corporation_id_wallets_division_journal_date","type":"string"},"description":{"description":"The reason for the transaction, mirrors what is seen in the client","title":"get_corporations_corporation_id_wallets_division_journal_description","type":"string"},"first_party_id":{"description":"The id of the first party involved in the transaction. This attribute has no consistency and is different or non existant for particular ref_types. The description attribute will help make sense of what this attribute means. For more info about the given ID it can be dropped into the /universe/names/ ESI route to determine its type and name","format":"int32","title":"get_corporations_corporation_id_wallets_division_journal_first_party_id","type":"integer"},"id":{"description":"Unique journal reference ID","format":"int64","title":"get_corporations_corporation_id_wallets_division_journal_id","type":"integer"},"reason":{"description":"The user stated reason for the transaction. Only applies to some ref_types","title":"get_corporations_corporation_id_wallets_division_journal_reason","type":"string"},"ref_type":{"description":"\"The transaction type for the given. transaction. Different transaction types will populate different attributes. Note: If you have an existing XML API application that is using ref_types, you will need to know which string ESI ref_type maps to which integer. You can look at the following file to see string->int mappings: https://github.com/ccpgames/eve-glue/blob/master/eve_glue/wallet_journal_ref.py\"","enum":["acceleration_gate_fee","advertisement_listing_fee","agent_donation","agent_location_services","agent_miscellaneous","agent_mission_collateral_paid","agent_mission_collateral_refunded","agent_mission_reward","agent_mission_reward_corporation_tax","agent_mission_time_bonus_reward","agent_mission_time_bonus_reward_corporation_tax","agent_security_services","agent_services_rendered","agents_preward","alliance_maintainance_fee","alliance_registration_fee","asset_safety_recovery_tax","bounty","bounty_prize","bounty_prize_corporation_tax","bounty_prizes","bounty_reimbursement","bounty_surcharge","brokers_fee","clone_activation","clone_transfer","contraband_fine","contract_auction_bid","contract_auction_bid_corp","contract_auction_bid_refund","contract_auction_sold","contract_brokers_fee","contract_brokers_fee_corp","contract_collateral","contract_collateral_deposited_corp","contract_collateral_payout","contract_collateral_refund","contract_deposit","contract_deposit_corp","contract_deposit_refund","contract_deposit_sales_tax","contract_price","contract_price_payment_corp","contract_reversal","contract_reward","contract_reward_deposited","contract_reward_deposited_corp","contract_reward_refund","contract_sales_tax","copying","corporate_reward_payout","corporate_reward_tax","corporation_account_withdrawal","corporation_bulk_payment","corporation_dividend_payment","corporation_liquidation","corporation_logo_change_cost","corporation_payment","corporation_registration_fee","courier_mission_escrow","cspa","cspaofflinerefund","datacore_fee","dna_modification_fee","docking_fee","duel_wager_escrow","duel_wager_payment","duel_wager_refund","factory_slot_rental_fee","gm_cash_transfer","industry_job_tax","infrastructure_hub_maintenance","inheritance","insurance","jump_clone_activation_fee","jump_clone_installation_fee","kill_right_fee","lp_store","manufacturing","market_escrow","market_fine_paid","market_transaction","medal_creation","medal_issued","mission_completion","mission_cost","mission_expiration","mission_reward","office_rental_fee","operation_bonus","opportunity_reward","planetary_construction","planetary_export_tax","planetary_import_tax","player_donation","player_trading","project_discovery_reward","project_discovery_tax","reaction","release_of_impounded_property","repair_bill","reprocessing_tax","researching_material_productivity","researching_technology","researching_time_productivity","resource_wars_reward","reverse_engineering","security_processing_fee","shares","sovereignity_bill","store_purchase","store_purchase_refund","structure_gate_jump","transaction_tax","upkeep_adjustment_fee","war_ally_contract","war_fee","war_fee_surrender"],"title":"get_corporations_corporation_id_wallets_division_journal_ref_type","type":"string"},"second_party_id":{"description":"The id of the second party involved in the transaction. This attribute has no consistency and is different or non existant for particular ref_types. The description attribute will help make sense of what this attribute means. For more info about the given ID it can be dropped into the /universe/names/ ESI route to determine its type and name","format":"int32","title":"get_corporations_corporation_id_wallets_division_journal_second_party_id","type":"integer"},"tax":{"description":"Tax amount received. Only applies to tax related transactions","format":"double","title":"get_corporations_corporation_id_wallets_division_journal_tax","type":"number"},"tax_receiver_id":{"description":"The corporation ID receiving any tax paid. Only applies to tax related transactions","format":"int32","title":"get_corporations_corporation_id_wallets_division_journal_tax_receiver_id","type":"integer"}},"required":["date","id","ref_type","description"],"title":"get_corporations_corporation_id_wallets_division_journal_200_ok","type":"object"},"maxItems":2500,"title":"get_corporations_corporation_id_wallets_division_journal_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_corporation_wallets.v1"]}],"summary":"Get corporation wallet journal","tags":["Wallet"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":3600,"x-required-roles":["Accountant","Junior_Accountant"]}},"/corporations/{corporation_id}/wallets/{division}/transactions/":{"get":{"description":"Get wallet transactions of a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/wallets/{division}/transactions/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/wallets/{division}/transactions/`\n\nAlternate route: `/v1/corporations/{corporation_id}/wallets/{division}/transactions/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Junior_Accountant\n","operationId":"get_corporations_corporation_id_wallets_division_transactions","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"description":"Wallet key of the division to fetch journals from","format":"int32","in":"path","maximum":7,"minimum":1,"name":"division","required":true,"type":"integer"},{"description":"Only show journal entries happened before the transaction referenced by this id","format":"int64","in":"query","name":"from_id","required":false,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Wallet transactions","examples":{"application/json":[{"client_id":54321,"date":"2016-10-24T09:00:00Z","is_buy":true,"journal_ref_id":67890,"location_id":60014719,"quantity":1,"transaction_id":1234567890,"type_id":587,"unit_price":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Wallet transactions","items":{"description":"wallet transaction","properties":{"client_id":{"description":"client_id integer","format":"int32","title":"get_corporations_corporation_id_wallets_division_transactions_client_id","type":"integer"},"date":{"description":"Date and time of transaction","format":"date-time","title":"get_corporations_corporation_id_wallets_division_transactions_date","type":"string"},"is_buy":{"description":"is_buy boolean","title":"get_corporations_corporation_id_wallets_division_transactions_is_buy","type":"boolean"},"journal_ref_id":{"description":"-1 if there is no corresponding wallet journal entry","format":"int64","title":"get_corporations_corporation_id_wallets_division_transactions_journal_ref_id","type":"integer"},"location_id":{"description":"location_id integer","format":"int64","title":"get_corporations_corporation_id_wallets_division_transactions_location_id","type":"integer"},"quantity":{"description":"quantity integer","format":"int32","title":"get_corporations_corporation_id_wallets_division_transactions_quantity","type":"integer"},"transaction_id":{"description":"Unique transaction ID","format":"int64","title":"get_corporations_corporation_id_wallets_division_transactions_transaction_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_wallets_division_transactions_type_id","type":"integer"},"unit_price":{"description":"Amount paid per unit","format":"double","title":"get_corporations_corporation_id_wallets_division_transactions_unit_price","type":"number"}},"required":["transaction_id","date","location_id","type_id","unit_price","quantity","client_id","is_buy","journal_ref_id"],"title":"get_corporations_corporation_id_wallets_division_transactions_200_ok","type":"object"},"maxItems":2500,"title":"get_corporations_corporation_id_wallets_division_transactions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_corporation_wallets.v1"]}],"summary":"Get corporation wallet transactions","tags":["Wallet"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Accountant","Junior_Accountant"]}},"/dogma/attributes/":{"get":{"description":"Get a list of dogma attribute ids\n\n---\nAlternate route: `/dev/dogma/attributes/`\n\nAlternate route: `/legacy/dogma/attributes/`\n\nAlternate route: `/v1/dogma/attributes/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_attributes","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of dogma attribute ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_dogma_attributes_200_ok","type":"integer"},"maxItems":10000,"title":"get_dogma_attributes_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get attributes","tags":["Dogma"],"x-alternate-versions":["dev","legacy","v1"]}},"/dogma/attributes/{attribute_id}/":{"get":{"description":"Get information on a dogma attribute\n\n---\nAlternate route: `/dev/dogma/attributes/{attribute_id}/`\n\nAlternate route: `/legacy/dogma/attributes/{attribute_id}/`\n\nAlternate route: `/v1/dogma/attributes/{attribute_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_attributes_attribute_id","parameters":[{"description":"A dogma attribute ID","format":"int32","in":"path","name":"attribute_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Information about a dogma attribute","examples":{"application/json":{"attribute_id":20,"default_value":1,"description":"Factor by which topspeed increases.","display_name":"Maximum Velocity Bonus","high_is_good":true,"icon_id":1389,"name":"speedFactor","published":true,"unit_id":124}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"attribute_id":{"description":"attribute_id integer","format":"int32","title":"get_dogma_attributes_attribute_id_attribute_id","type":"integer"},"default_value":{"description":"default_value number","format":"float","title":"get_dogma_attributes_attribute_id_default_value","type":"number"},"description":{"description":"description string","title":"get_dogma_attributes_attribute_id_description","type":"string"},"display_name":{"description":"display_name string","title":"get_dogma_attributes_attribute_id_display_name","type":"string"},"high_is_good":{"description":"high_is_good boolean","title":"get_dogma_attributes_attribute_id_high_is_good","type":"boolean"},"icon_id":{"description":"icon_id integer","format":"int32","title":"get_dogma_attributes_attribute_id_icon_id","type":"integer"},"name":{"description":"name string","title":"get_dogma_attributes_attribute_id_name","type":"string"},"published":{"description":"published boolean","title":"get_dogma_attributes_attribute_id_published","type":"boolean"},"stackable":{"description":"stackable boolean","title":"get_dogma_attributes_attribute_id_stackable","type":"boolean"},"unit_id":{"description":"unit_id integer","format":"int32","title":"get_dogma_attributes_attribute_id_unit_id","type":"integer"}},"required":["attribute_id"],"title":"get_dogma_attributes_attribute_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Dogma attribute not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_dogma_attributes_attribute_id_404_not_found","type":"string"}},"title":"get_dogma_attributes_attribute_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get attribute information","tags":["Dogma"],"x-alternate-versions":["dev","legacy","v1"]}},"/dogma/dynamic/items/{type_id}/{item_id}/":{"get":{"description":"Returns info about a dynamic item resulting from mutation with a mutaplasmid.\n\n---\nAlternate route: `/dev/dogma/dynamic/items/{type_id}/{item_id}/`\n\nAlternate route: `/legacy/dogma/dynamic/items/{type_id}/{item_id}/`\n\nAlternate route: `/v1/dogma/dynamic/items/{type_id}/{item_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_dynamic_items_type_id_item_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"item_id integer","format":"int64","in":"path","name":"item_id","required":true,"type":"integer"},{"description":"type_id integer","format":"int32","in":"path","name":"type_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Details about a dynamic item","examples":{"application/json":{"created_by":2112625428,"dogma_attributes":[{"attribute_id":9,"value":350}],"dogma_effects":[{"effect_id":508,"is_default":false}],"mutator_type_id":47845,"source_type_id":33103}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"created_by":{"description":"The ID of the character who created the item","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_created_by","type":"integer"},"dogma_attributes":{"description":"dogma_attributes array","items":{"description":"dogma_attribute object","properties":{"attribute_id":{"description":"attribute_id integer","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_attribute_id","type":"integer"},"value":{"description":"value number","format":"float","title":"get_dogma_dynamic_items_type_id_item_id_value","type":"number"}},"required":["attribute_id","value"],"title":"get_dogma_dynamic_items_type_id_item_id_dogma_attribute","type":"object"},"maxItems":1000,"title":"get_dogma_dynamic_items_type_id_item_id_dogma_attributes","type":"array"},"dogma_effects":{"description":"dogma_effects array","items":{"description":"dogma_effect object","properties":{"effect_id":{"description":"effect_id integer","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_effect_id","type":"integer"},"is_default":{"description":"is_default boolean","title":"get_dogma_dynamic_items_type_id_item_id_is_default","type":"boolean"}},"required":["effect_id","is_default"],"title":"get_dogma_dynamic_items_type_id_item_id_dogma_effect","type":"object"},"maxItems":1000,"title":"get_dogma_dynamic_items_type_id_item_id_dogma_effects","type":"array"},"mutator_type_id":{"description":"The type ID of the mutator used to generate the dynamic item.","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_mutator_type_id","type":"integer"},"source_type_id":{"description":"The type ID of the source item the mutator was applied to create the dynamic item.","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_source_type_id","type":"integer"}},"required":["dogma_attributes","dogma_effects","created_by","source_type_id","mutator_type_id"],"title":"get_dogma_dynamic_items_type_id_item_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Item not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_dogma_dynamic_items_type_id_item_id_404_not_found","type":"string"}},"title":"get_dogma_dynamic_items_type_id_item_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get dynamic item information","tags":["Dogma"],"x-alternate-versions":["dev","legacy","v1"]}},"/dogma/effects/":{"get":{"description":"Get a list of dogma effect ids\n\n---\nAlternate route: `/dev/dogma/effects/`\n\nAlternate route: `/legacy/dogma/effects/`\n\nAlternate route: `/v1/dogma/effects/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_effects","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of dogma effect ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_dogma_effects_200_ok","type":"integer"},"maxItems":10000,"title":"get_dogma_effects_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get effects","tags":["Dogma"],"x-alternate-versions":["dev","legacy","v1"]}},"/dogma/effects/{effect_id}/":{"get":{"description":"Get information on a dogma effect\n\n---\nAlternate route: `/dev/dogma/effects/{effect_id}/`\n\nAlternate route: `/v2/dogma/effects/{effect_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_effects_effect_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"A dogma effect ID","format":"int32","in":"path","name":"effect_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Information about a dogma effect","examples":{"application/json":{"description":"Requires a high power slot.","display_name":"High power","effect_category":0,"effect_id":12,"icon_id":293,"name":"hiPower","post_expression":131,"pre_expression":131,"published":true}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"description":{"description":"description string","title":"get_dogma_effects_effect_id_description","type":"string"},"disallow_auto_repeat":{"description":"disallow_auto_repeat boolean","title":"get_dogma_effects_effect_id_disallow_auto_repeat","type":"boolean"},"discharge_attribute_id":{"description":"discharge_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_discharge_attribute_id","type":"integer"},"display_name":{"description":"display_name string","title":"get_dogma_effects_effect_id_display_name","type":"string"},"duration_attribute_id":{"description":"duration_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_duration_attribute_id","type":"integer"},"effect_category":{"description":"effect_category integer","format":"int32","title":"get_dogma_effects_effect_id_effect_category","type":"integer"},"effect_id":{"description":"effect_id integer","format":"int32","title":"get_dogma_effects_effect_id_effect_id","type":"integer"},"electronic_chance":{"description":"electronic_chance boolean","title":"get_dogma_effects_effect_id_electronic_chance","type":"boolean"},"falloff_attribute_id":{"description":"falloff_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_falloff_attribute_id","type":"integer"},"icon_id":{"description":"icon_id integer","format":"int32","title":"get_dogma_effects_effect_id_icon_id","type":"integer"},"is_assistance":{"description":"is_assistance boolean","title":"get_dogma_effects_effect_id_is_assistance","type":"boolean"},"is_offensive":{"description":"is_offensive boolean","title":"get_dogma_effects_effect_id_is_offensive","type":"boolean"},"is_warp_safe":{"description":"is_warp_safe boolean","title":"get_dogma_effects_effect_id_is_warp_safe","type":"boolean"},"modifiers":{"description":"modifiers array","items":{"description":"modifier object","properties":{"domain":{"description":"domain string","title":"get_dogma_effects_effect_id_domain","type":"string"},"effect_id":{"description":"effect_id integer","format":"int32","title":"get_dogma_effects_effect_id_modifier_effect_id","type":"integer"},"func":{"description":"func string","title":"get_dogma_effects_effect_id_func","type":"string"},"modified_attribute_id":{"description":"modified_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_modified_attribute_id","type":"integer"},"modifying_attribute_id":{"description":"modifying_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_modifying_attribute_id","type":"integer"},"operator":{"description":"operator integer","format":"int32","title":"get_dogma_effects_effect_id_operator","type":"integer"}},"required":["func"],"title":"get_dogma_effects_effect_id_modifier","type":"object"},"maxItems":100,"title":"get_dogma_effects_effect_id_modifiers","type":"array"},"name":{"description":"name string","title":"get_dogma_effects_effect_id_name","type":"string"},"post_expression":{"description":"post_expression integer","format":"int32","title":"get_dogma_effects_effect_id_post_expression","type":"integer"},"pre_expression":{"description":"pre_expression integer","format":"int32","title":"get_dogma_effects_effect_id_pre_expression","type":"integer"},"published":{"description":"published boolean","title":"get_dogma_effects_effect_id_published","type":"boolean"},"range_attribute_id":{"description":"range_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_range_attribute_id","type":"integer"},"range_chance":{"description":"range_chance boolean","title":"get_dogma_effects_effect_id_range_chance","type":"boolean"},"tracking_speed_attribute_id":{"description":"tracking_speed_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_tracking_speed_attribute_id","type":"integer"}},"required":["effect_id"],"title":"get_dogma_effects_effect_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Dogma effect not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_dogma_effects_effect_id_404_not_found","type":"string"}},"title":"get_dogma_effects_effect_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get effect information","tags":["Dogma"],"x-alternate-versions":["dev","v2"]}},"/fleets/{fleet_id}/":{"get":{"description":"Return details about a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_fleets_fleet_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Details about a fleet","examples":{"application/json":{"is_free_move":false,"is_registered":false,"is_voice_enabled":false,"motd":"This is an awesome fleet!"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"is_free_move":{"description":"Is free-move enabled","title":"get_fleets_fleet_id_is_free_move","type":"boolean"},"is_registered":{"description":"Does the fleet have an active fleet advertisement","title":"get_fleets_fleet_id_is_registered","type":"boolean"},"is_voice_enabled":{"description":"Is EVE Voice enabled","title":"get_fleets_fleet_id_is_voice_enabled","type":"boolean"},"motd":{"description":"Fleet MOTD in CCP flavoured HTML","title":"get_fleets_fleet_id_motd","type":"string"}},"required":["motd","is_free_move","is_registered","is_voice_enabled"],"title":"get_fleets_fleet_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_fleets_fleet_id_404_not_found","type":"string"}},"title":"get_fleets_fleet_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.read_fleet.v1"]}],"summary":"Get fleet information","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":5},"put":{"description":"Update settings about a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/`\n","operationId":"put_fleets_fleet_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"What to update for this fleet","in":"body","name":"new_settings","required":true,"schema":{"description":"new_settings object","properties":{"is_free_move":{"description":"Should free-move be enabled in the fleet","title":"put_fleets_fleet_id_is_free_move","type":"boolean"},"motd":{"description":"New fleet MOTD in CCP flavoured HTML","title":"put_fleets_fleet_id_motd","type":"string"}},"title":"put_fleets_fleet_id_new_settings","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fleet updated"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"put_fleets_fleet_id_404_not_found","type":"string"}},"title":"put_fleets_fleet_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Update fleet","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/members/":{"get":{"description":"Return information about fleet members\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/members/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/members/`\n\nAlternate route: `/v1/fleets/{fleet_id}/members/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_fleets_fleet_id_members","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of fleet members","examples":{"application/json":[{"character_id":93265215,"join_time":"2016-04-29T12:34:56Z","role":"squad_commander","role_name":"Squad Commander (Boss)","ship_type_id":33328,"solar_system_id":30003729,"squad_id":3129411261968,"station_id":61000180,"takes_fleet_warp":true,"wing_id":2073711261968}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"character_id integer","format":"int32","title":"get_fleets_fleet_id_members_character_id","type":"integer"},"join_time":{"description":"join_time string","format":"date-time","title":"get_fleets_fleet_id_members_join_time","type":"string"},"role":{"description":"Member\u2019s role in fleet","enum":["fleet_commander","wing_commander","squad_commander","squad_member"],"title":"get_fleets_fleet_id_members_role","type":"string"},"role_name":{"description":"Localized role names","title":"get_fleets_fleet_id_members_role_name","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_fleets_fleet_id_members_ship_type_id","type":"integer"},"solar_system_id":{"description":"Solar system the member is located in","format":"int32","title":"get_fleets_fleet_id_members_solar_system_id","type":"integer"},"squad_id":{"description":"ID of the squad the member is in. If not applicable, will be set to -1","format":"int64","title":"get_fleets_fleet_id_members_squad_id","type":"integer"},"station_id":{"description":"Station in which the member is docked in, if applicable","format":"int64","title":"get_fleets_fleet_id_members_station_id","type":"integer"},"takes_fleet_warp":{"description":"Whether the member take fleet warps","title":"get_fleets_fleet_id_members_takes_fleet_warp","type":"boolean"},"wing_id":{"description":"ID of the wing the member is in. If not applicable, will be set to -1","format":"int64","title":"get_fleets_fleet_id_members_wing_id","type":"integer"}},"required":["character_id","ship_type_id","wing_id","squad_id","role","role_name","join_time","takes_fleet_warp","solar_system_id"],"title":"get_fleets_fleet_id_members_200_ok","type":"object"},"maxItems":256,"title":"get_fleets_fleet_id_members_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_fleets_fleet_id_members_404_not_found","type":"string"}},"title":"get_fleets_fleet_id_members_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.read_fleet.v1"]}],"summary":"Get fleet members","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":5},"post":{"description":"Invite a character into the fleet. If a character has a CSPA charge set it is not possible to invite them to the fleet using ESI\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/members/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/members/`\n\nAlternate route: `/v1/fleets/{fleet_id}/members/`\n","operationId":"post_fleets_fleet_id_members","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"Details of the invitation","in":"body","name":"invitation","required":true,"schema":{"description":"invitation object","properties":{"character_id":{"description":"The character you want to invite","format":"int32","title":"post_fleets_fleet_id_members_character_id","type":"integer"},"role":{"description":"If a character is invited with the `fleet_commander` role, neither `wing_id` or `squad_id` should be specified. If a character is invited with the `wing_commander` role, only `wing_id` should be specified. If a character is invited with the `squad_commander` role, both `wing_id` and `squad_id` should be specified. If a character is invited with the `squad_member` role, `wing_id` and `squad_id` should either both be specified or not specified at all. If they aren\u2019t specified, the invited character will join any squad with available positions.","enum":["fleet_commander","wing_commander","squad_commander","squad_member"],"title":"post_fleets_fleet_id_members_role","type":"string"},"squad_id":{"description":"squad_id integer","format":"int64","minimum":0,"title":"post_fleets_fleet_id_members_squad_id","type":"integer"},"wing_id":{"description":"wing_id integer","format":"int64","minimum":0,"title":"post_fleets_fleet_id_members_wing_id","type":"integer"}},"required":["character_id","role"],"title":"post_fleets_fleet_id_members_invitation","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fleet invitation sent"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_fleets_fleet_id_members_404_not_found","type":"string"}},"title":"post_fleets_fleet_id_members_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Errors in invitation","examples":{"application/json":{"error":"missing wing_id"}},"schema":{"description":"422 unprocessable entity object","properties":{"error":{"description":"error message","title":"post_fleets_fleet_id_members_error","type":"string"}},"title":"post_fleets_fleet_id_members_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Create fleet invitation","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/members/{member_id}/":{"delete":{"description":"Kick a fleet member\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/members/{member_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/members/{member_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/members/{member_id}/`\n","operationId":"delete_fleets_fleet_id_members_member_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"The character ID of a member in this fleet","format":"int32","in":"path","name":"member_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fleet member kicked"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"delete_fleets_fleet_id_members_member_id_404_not_found","type":"string"}},"title":"delete_fleets_fleet_id_members_member_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Kick fleet member","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]},"put":{"description":"Move a fleet member around\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/members/{member_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/members/{member_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/members/{member_id}/`\n","operationId":"put_fleets_fleet_id_members_member_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"The character ID of a member in this fleet","format":"int32","in":"path","name":"member_id","required":true,"type":"integer"},{"description":"Details of the invitation","in":"body","name":"movement","required":true,"schema":{"description":"movement object","properties":{"role":{"description":"If a character is moved to the `fleet_commander` role, neither `wing_id` or `squad_id` should be specified. If a character is moved to the `wing_commander` role, only `wing_id` should be specified. If a character is moved to the `squad_commander` role, both `wing_id` and `squad_id` should be specified. If a character is moved to the `squad_member` role, both `wing_id` and `squad_id` should be specified.","enum":["fleet_commander","wing_commander","squad_commander","squad_member"],"title":"put_fleets_fleet_id_members_member_id_role","type":"string"},"squad_id":{"description":"squad_id integer","format":"int64","minimum":0,"title":"put_fleets_fleet_id_members_member_id_squad_id","type":"integer"},"wing_id":{"description":"wing_id integer","format":"int64","minimum":0,"title":"put_fleets_fleet_id_members_member_id_wing_id","type":"integer"}},"required":["role"],"title":"put_fleets_fleet_id_members_member_id_movement","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fleet invitation sent"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"put_fleets_fleet_id_members_member_id_404_not_found","type":"string"}},"title":"put_fleets_fleet_id_members_member_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Errors in invitation","examples":{"application/json":{"error":"missing wing_id"}},"schema":{"description":"422 unprocessable entity object","properties":{"error":{"description":"error message","title":"put_fleets_fleet_id_members_member_id_error","type":"string"}},"title":"put_fleets_fleet_id_members_member_id_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Move fleet member","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/squads/{squad_id}/":{"delete":{"description":"Delete a fleet squad, only empty squads can be deleted\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/squads/{squad_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/squads/{squad_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/squads/{squad_id}/`\n","operationId":"delete_fleets_fleet_id_squads_squad_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"The squad to delete","format":"int64","in":"path","name":"squad_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Squad deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"delete_fleets_fleet_id_squads_squad_id_404_not_found","type":"string"}},"title":"delete_fleets_fleet_id_squads_squad_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Delete fleet squad","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]},"put":{"description":"Rename a fleet squad\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/squads/{squad_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/squads/{squad_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/squads/{squad_id}/`\n","operationId":"put_fleets_fleet_id_squads_squad_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"New name of the squad","in":"body","name":"naming","required":true,"schema":{"description":"naming object","properties":{"name":{"description":"name string","maxLength":10,"title":"put_fleets_fleet_id_squads_squad_id_name","type":"string"}},"required":["name"],"title":"put_fleets_fleet_id_squads_squad_id_naming","type":"object"}},{"description":"The squad to rename","format":"int64","in":"path","name":"squad_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Squad renamed"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"put_fleets_fleet_id_squads_squad_id_404_not_found","type":"string"}},"title":"put_fleets_fleet_id_squads_squad_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Rename fleet squad","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/wings/":{"get":{"description":"Return information about wings in a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_fleets_fleet_id_wings","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of fleet wings","examples":{"application/json":[{"id":2073711261968,"name":"Wing 1","squads":[{"id":3129411261968,"name":"Squad 1"}]}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"id":{"description":"id integer","format":"int64","title":"get_fleets_fleet_id_wings_id","type":"integer"},"name":{"description":"name string","title":"get_fleets_fleet_id_wings_name","type":"string"},"squads":{"description":"squads array","items":{"description":"squad object","properties":{"id":{"description":"id integer","format":"int64","title":"get_fleets_fleet_id_wings_squad_id","type":"integer"},"name":{"description":"name string","title":"get_fleets_fleet_id_wings_squad_name","type":"string"}},"required":["name","id"],"title":"get_fleets_fleet_id_wings_squad","type":"object"},"maxItems":25,"title":"get_fleets_fleet_id_wings_squads","type":"array"}},"required":["name","id","squads"],"title":"get_fleets_fleet_id_wings_200_ok","type":"object"},"maxItems":25,"title":"get_fleets_fleet_id_wings_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_fleets_fleet_id_wings_404_not_found","type":"string"}},"title":"get_fleets_fleet_id_wings_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.read_fleet.v1"]}],"summary":"Get fleet wings","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":5},"post":{"description":"Create a new wing in a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/`\n","operationId":"post_fleets_fleet_id_wings","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"Wing created","examples":{"application/json":{"wing_id":123}},"schema":{"description":"201 created object","properties":{"wing_id":{"description":"The wing_id of the newly created wing","format":"int64","title":"post_fleets_fleet_id_wings_wing_id","type":"integer"}},"required":["wing_id"],"title":"post_fleets_fleet_id_wings_created","type":"object"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_fleets_fleet_id_wings_404_not_found","type":"string"}},"title":"post_fleets_fleet_id_wings_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Create fleet wing","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/wings/{wing_id}/":{"delete":{"description":"Delete a fleet wing, only empty wings can be deleted. The wing may contain squads, but the squads must be empty\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/{wing_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/{wing_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/{wing_id}/`\n","operationId":"delete_fleets_fleet_id_wings_wing_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"},{"description":"The wing to delete","format":"int64","in":"path","name":"wing_id","required":true,"type":"integer"}],"responses":{"204":{"description":"Wing deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"delete_fleets_fleet_id_wings_wing_id_404_not_found","type":"string"}},"title":"delete_fleets_fleet_id_wings_wing_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Delete fleet wing","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]},"put":{"description":"Rename a fleet wing\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/{wing_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/{wing_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/{wing_id}/`\n","operationId":"put_fleets_fleet_id_wings_wing_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"New name of the wing","in":"body","name":"naming","required":true,"schema":{"description":"naming object","properties":{"name":{"description":"name string","maxLength":10,"title":"put_fleets_fleet_id_wings_wing_id_name","type":"string"}},"required":["name"],"title":"put_fleets_fleet_id_wings_wing_id_naming","type":"object"}},{"$ref":"#/parameters/token"},{"description":"The wing to rename","format":"int64","in":"path","name":"wing_id","required":true,"type":"integer"}],"responses":{"204":{"description":"Wing renamed"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"put_fleets_fleet_id_wings_wing_id_404_not_found","type":"string"}},"title":"put_fleets_fleet_id_wings_wing_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Rename fleet wing","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/wings/{wing_id}/squads/":{"post":{"description":"Create a new squad in a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/{wing_id}/squads/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/{wing_id}/squads/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/{wing_id}/squads/`\n","operationId":"post_fleets_fleet_id_wings_wing_id_squads","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"},{"description":"The wing_id to create squad in","format":"int64","in":"path","name":"wing_id","required":true,"type":"integer"}],"responses":{"201":{"description":"Squad created","examples":{"application/json":{"squad_id":123}},"schema":{"description":"201 created object","properties":{"squad_id":{"description":"The squad_id of the newly created squad","format":"int64","title":"post_fleets_fleet_id_wings_wing_id_squads_squad_id","type":"integer"}},"required":["squad_id"],"title":"post_fleets_fleet_id_wings_wing_id_squads_created","type":"object"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_fleets_fleet_id_wings_wing_id_squads_404_not_found","type":"string"}},"title":"post_fleets_fleet_id_wings_wing_id_squads_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Create fleet squad","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fw/leaderboards/":{"get":{"description":"Top 4 leaderboard of factions for kills and victory points separated by total, last week and yesterday\n\n---\nAlternate route: `/dev/fw/leaderboards/`\n\nAlternate route: `/legacy/fw/leaderboards/`\n\nAlternate route: `/v1/fw/leaderboards/`\n\nAlternate route: `/v2/fw/leaderboards/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_leaderboards","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Corporation leaderboard of kills and victory points within faction warfare","examples":{"application/json":{"kills":{"active_total":[{"amount":832273,"faction_id":500004},{"amount":687915,"faction_id":500001}],"last_week":[{"amount":730,"faction_id":500001},{"amount":671,"faction_id":500004}],"yesterday":[{"amount":100,"faction_id":500001},{"amount":50,"faction_id":500004}]},"victory_points":{"active_total":[{"amount":53130500,"faction_id":500001},{"amount":50964263,"faction_id":500004}],"last_week":[{"amount":97360,"faction_id":500001},{"amount":84980,"faction_id":500004}],"yesterday":[{"amount":5000,"faction_id":500002},{"amount":3500,"faction_id":500003}]}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"kills":{"description":"Top 4 rankings of factions by number of kills from yesterday, last week and in total","properties":{"active_total":{"description":"Top 4 ranking of factions active in faction warfare by total kills. A faction is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_amount","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_faction_id","type":"integer"}},"title":"get_fw_leaderboards_active_total_active_total","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_active_total","type":"array"},"last_week":{"description":"Top 4 ranking of factions by kills in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_last_week_amount","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_last_week_faction_id","type":"integer"}},"title":"get_fw_leaderboards_last_week_last_week","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_last_week","type":"array"},"yesterday":{"description":"Top 4 ranking of factions by kills in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_yesterday_amount","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_yesterday_faction_id","type":"integer"}},"title":"get_fw_leaderboards_yesterday_yesterday","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_kills","type":"object"},"victory_points":{"description":"Top 4 rankings of factions by victory points from yesterday, last week and in total","properties":{"active_total":{"description":"Top 4 ranking of factions active in faction warfare by total victory points. A faction is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_active_total_amount","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_active_total_faction_id","type":"integer"}},"title":"get_fw_leaderboards_active_total_active_total_1","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_victory_points_active_total","type":"array"},"last_week":{"description":"Top 4 ranking of factions by victory points in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_last_week_amount_1","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_last_week_faction_id_1","type":"integer"}},"title":"get_fw_leaderboards_last_week_last_week_1","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_victory_points_last_week","type":"array"},"yesterday":{"description":"Top 4 ranking of factions by victory points in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_yesterday_amount_1","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_yesterday_faction_id_1","type":"integer"}},"title":"get_fw_leaderboards_yesterday_yesterday_1","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_victory_points_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_fw_leaderboards_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List of the top factions in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/fw/leaderboards/characters/":{"get":{"description":"Top 100 leaderboard of pilots for kills and victory points separated by total, last week and yesterday\n\n---\nAlternate route: `/dev/fw/leaderboards/characters/`\n\nAlternate route: `/legacy/fw/leaderboards/characters/`\n\nAlternate route: `/v1/fw/leaderboards/characters/`\n\nAlternate route: `/v2/fw/leaderboards/characters/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_leaderboards_characters","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Character leaderboard of kills and victory points within faction warfare","examples":{"application/json":{"kills":{"active_total":[{"amount":10000,"character_id":2112625428},{"amount":8500,"character_id":95465499}],"last_week":[{"amount":100,"character_id":2112625428},{"amount":70,"character_id":95465499}],"yesterday":[{"amount":34,"character_id":2112625428},{"amount":20,"character_id":95465499}]},"victory_points":{"active_total":[{"amount":1239158,"character_id":2112625428},{"amount":1139029,"character_id":95465499}],"last_week":[{"amount":2660,"character_id":2112625428},{"amount":2000,"character_id":95465499}],"yesterday":[{"amount":620,"character_id":2112625428},{"amount":550,"character_id":95465499}]}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"kills":{"description":"Top 100 rankings of pilots by number of kills from yesterday, last week and in total","properties":{"active_total":{"description":"Top 100 ranking of pilots active in faction warfare by total kills. A pilot is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_characters_amount","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_character_id","type":"integer"}},"title":"get_fw_leaderboards_characters_active_total_active_total","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_active_total","type":"array"},"last_week":{"description":"Top 100 ranking of pilots by kills in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_characters_last_week_amount","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_last_week_character_id","type":"integer"}},"title":"get_fw_leaderboards_characters_last_week_last_week","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_last_week","type":"array"},"yesterday":{"description":"Top 100 ranking of pilots by kills in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_characters_yesterday_amount","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_yesterday_character_id","type":"integer"}},"title":"get_fw_leaderboards_characters_yesterday_yesterday","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_characters_kills","type":"object"},"victory_points":{"description":"Top 100 rankings of pilots by victory points from yesterday, last week and in total","properties":{"active_total":{"description":"Top 100 ranking of pilots active in faction warfare by total victory points. A pilot is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_characters_active_total_amount","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_active_total_character_id","type":"integer"}},"title":"get_fw_leaderboards_characters_active_total_active_total_1","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_victory_points_active_total","type":"array"},"last_week":{"description":"Top 100 ranking of pilots by victory points in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_characters_last_week_amount_1","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_last_week_character_id_1","type":"integer"}},"title":"get_fw_leaderboards_characters_last_week_last_week_1","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_victory_points_last_week","type":"array"},"yesterday":{"description":"Top 100 ranking of pilots by victory points in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_characters_yesterday_amount_1","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_yesterday_character_id_1","type":"integer"}},"title":"get_fw_leaderboards_characters_yesterday_yesterday_1","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_victory_points_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_characters_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_fw_leaderboards_characters_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List of the top pilots in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/fw/leaderboards/corporations/":{"get":{"description":"Top 10 leaderboard of corporations for kills and victory points separated by total, last week and yesterday\n\n---\nAlternate route: `/dev/fw/leaderboards/corporations/`\n\nAlternate route: `/legacy/fw/leaderboards/corporations/`\n\nAlternate route: `/v1/fw/leaderboards/corporations/`\n\nAlternate route: `/v2/fw/leaderboards/corporations/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_leaderboards_corporations","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Corporation leaderboard of kills and victory points within faction warfare","examples":{"application/json":{"kills":{"active_total":[{"amount":81692,"corporation_id":1000180},{"amount":76793,"corporation_id":1000182}],"last_week":[{"amount":290,"corporation_id":1000180},{"amount":169,"corporation_id":1000182}],"yesterday":[{"amount":51,"corporation_id":1000180},{"amount":39,"corporation_id":1000182}]},"victory_points":{"active_total":[{"amount":18640927,"corporation_id":1000180},{"amount":18078265,"corporation_id":1000181}],"last_week":[{"amount":91980,"corporation_id":1000180},{"amount":58920,"corporation_id":1000181}],"yesterday":[{"amount":12600,"corporation_id":1000180},{"amount":8240,"corporation_id":1000181}]}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"kills":{"description":"Top 10 rankings of corporations by number of kills from yesterday, last week and in total","properties":{"active_total":{"description":"Top 10 ranking of corporations active in faction warfare by total kills. A corporation is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_corporations_amount","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_corporation_id","type":"integer"}},"title":"get_fw_leaderboards_corporations_active_total_active_total","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_active_total","type":"array"},"last_week":{"description":"Top 10 ranking of corporations by kills in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_corporations_last_week_amount","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_last_week_corporation_id","type":"integer"}},"title":"get_fw_leaderboards_corporations_last_week_last_week","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_last_week","type":"array"},"yesterday":{"description":"Top 10 ranking of corporations by kills in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_corporations_yesterday_amount","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_yesterday_corporation_id","type":"integer"}},"title":"get_fw_leaderboards_corporations_yesterday_yesterday","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_corporations_kills","type":"object"},"victory_points":{"description":"Top 10 rankings of corporations by victory points from yesterday, last week and in total","properties":{"active_total":{"description":"Top 10 ranking of corporations active in faction warfare by total victory points. A corporation is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_corporations_active_total_amount","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_active_total_corporation_id","type":"integer"}},"title":"get_fw_leaderboards_corporations_active_total_active_total_1","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_victory_points_active_total","type":"array"},"last_week":{"description":"Top 10 ranking of corporations by victory points in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_corporations_last_week_amount_1","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_last_week_corporation_id_1","type":"integer"}},"title":"get_fw_leaderboards_corporations_last_week_last_week_1","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_victory_points_last_week","type":"array"},"yesterday":{"description":"Top 10 ranking of corporations by victory points in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_corporations_yesterday_amount_1","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_yesterday_corporation_id_1","type":"integer"}},"title":"get_fw_leaderboards_corporations_yesterday_yesterday_1","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_victory_points_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_corporations_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_fw_leaderboards_corporations_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List of the top corporations in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/fw/stats/":{"get":{"description":"Statistical overviews of factions involved in faction warfare\n\n---\nAlternate route: `/dev/fw/stats/`\n\nAlternate route: `/legacy/fw/stats/`\n\nAlternate route: `/v1/fw/stats/`\n\nAlternate route: `/v2/fw/stats/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_stats","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Per faction breakdown of faction warfare statistics","examples":{"application/json":[{"faction_id":500001,"kills":{"last_week":893,"total":684350,"yesterday":136},"pilots":28863,"systems_controlled":20,"victory_points":{"last_week":102640,"total":52658260,"yesterday":15980}}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_stats_faction_id","type":"integer"},"kills":{"description":"Summary of kills against an enemy faction for the given faction","properties":{"last_week":{"description":"Last week's total number of kills against enemy factions","format":"int32","title":"get_fw_stats_last_week","type":"integer"},"total":{"description":"Total number of kills against enemy factions since faction warfare began","format":"int32","title":"get_fw_stats_total","type":"integer"},"yesterday":{"description":"Yesterday's total number of kills against enemy factions","format":"int32","title":"get_fw_stats_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_fw_stats_kills","type":"object"},"pilots":{"description":"How many pilots fight for the given faction","format":"int32","title":"get_fw_stats_pilots","type":"integer"},"systems_controlled":{"description":"The number of solar systems controlled by the given faction","format":"int32","title":"get_fw_stats_systems_controlled","type":"integer"},"victory_points":{"description":"Summary of victory points gained for the given faction","properties":{"last_week":{"description":"Last week's victory points gained","format":"int32","title":"get_fw_stats_victory_points_last_week","type":"integer"},"total":{"description":"Total victory points gained since faction warfare began","format":"int32","title":"get_fw_stats_victory_points_total","type":"integer"},"yesterday":{"description":"Yesterday's victory points gained","format":"int32","title":"get_fw_stats_victory_points_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_fw_stats_victory_points","type":"object"}},"required":["faction_id","pilots","systems_controlled","kills","victory_points"],"title":"get_fw_stats_200_ok","type":"object"},"maxItems":4,"title":"get_fw_stats_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"An overview of statistics about factions involved in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/fw/systems/":{"get":{"description":"An overview of the current ownership of faction warfare solar systems\n\n---\nAlternate route: `/dev/fw/systems/`\n\nAlternate route: `/v2/fw/systems/`\n\nAlternate route: `/v3/fw/systems/`\n\n---\nThis route is cached for up to 1800 seconds","operationId":"get_fw_systems","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"All faction warfare solar systems","examples":{"application/json":[{"contested":"uncontested","occupier_faction_id":500001,"owner_faction_id":500001,"solar_system_id":30002096,"victory_points":60,"victory_points_threshold":3000}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"contested":{"description":"contested string","enum":["captured","contested","uncontested","vulnerable"],"title":"get_fw_systems_contested","type":"string"},"occupier_faction_id":{"description":"occupier_faction_id integer","format":"int32","title":"get_fw_systems_occupier_faction_id","type":"integer"},"owner_faction_id":{"description":"owner_faction_id integer","format":"int32","title":"get_fw_systems_owner_faction_id","type":"integer"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_fw_systems_solar_system_id","type":"integer"},"victory_points":{"description":"victory_points integer","format":"int32","title":"get_fw_systems_victory_points","type":"integer"},"victory_points_threshold":{"description":"victory_points_threshold integer","format":"int32","title":"get_fw_systems_victory_points_threshold","type":"integer"}},"required":["solar_system_id","occupier_faction_id","owner_faction_id","victory_points","victory_points_threshold","contested"],"title":"get_fw_systems_200_ok","type":"object"},"maxItems":171,"title":"get_fw_systems_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Ownership of faction warfare systems","tags":["Faction Warfare"],"x-alternate-versions":["dev","v2","v3"],"x-cached-seconds":1800}},"/fw/wars/":{"get":{"description":"Data about which NPC factions are at war\n\n---\nAlternate route: `/dev/fw/wars/`\n\nAlternate route: `/legacy/fw/wars/`\n\nAlternate route: `/v1/fw/wars/`\n\nAlternate route: `/v2/fw/wars/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_wars","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of NPC factions at war","examples":{"application/json":[{"against_id":500002,"faction_id":500001}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"List of factions at war","items":{"description":"200 ok object","properties":{"against_id":{"description":"The faction ID of the enemy faction.","format":"int32","title":"get_fw_wars_against_id","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_wars_faction_id","type":"integer"}},"required":["faction_id","against_id"],"title":"get_fw_wars_200_ok","type":"object"},"maxItems":8,"title":"get_fw_wars_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Data about which NPC factions are at war","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/incursions/":{"get":{"description":"Return a list of current incursions\n\n---\nAlternate route: `/dev/incursions/`\n\nAlternate route: `/legacy/incursions/`\n\nAlternate route: `/v1/incursions/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_incursions","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of incursions","examples":{"application/json":[{"constellation_id":20000607,"faction_id":500019,"has_boss":true,"infested_solar_systems":[30004148,30004149,30004150,30004151,30004152,30004153,30004154],"influence":0.9,"staging_solar_system_id":30004154,"state":"mobilizing","type":"Incursion"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"constellation_id":{"description":"The constellation id in which this incursion takes place","format":"int32","title":"get_incursions_constellation_id","type":"integer"},"faction_id":{"description":"The attacking faction's id","format":"int32","title":"get_incursions_faction_id","type":"integer"},"has_boss":{"description":"Whether the final encounter has boss or not","title":"get_incursions_has_boss","type":"boolean"},"infested_solar_systems":{"description":"A list of infested solar system ids that are a part of this incursion","items":{"description":"infested_solar_system integer","format":"int32","title":"get_incursions_infested_solar_system","type":"integer"},"maxItems":100,"title":"get_incursions_infested_solar_systems","type":"array"},"influence":{"description":"Influence of this incursion as a float from 0 to 1","format":"float","title":"get_incursions_influence","type":"number"},"staging_solar_system_id":{"description":"Staging solar system for this incursion","format":"int32","title":"get_incursions_staging_solar_system_id","type":"integer"},"state":{"description":"The state of this incursion","enum":["withdrawing","mobilizing","established"],"title":"get_incursions_state","type":"string"},"type":{"description":"The type of this incursion","title":"get_incursions_type","type":"string"}},"required":["type","state","influence","has_boss","faction_id","constellation_id","staging_solar_system_id","infested_solar_systems"],"title":"get_incursions_200_ok","type":"object"},"maxItems":100,"title":"get_incursions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List incursions","tags":["Incursions"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/industry/facilities/":{"get":{"description":"Return a list of industry facilities\n\n---\nAlternate route: `/dev/industry/facilities/`\n\nAlternate route: `/legacy/industry/facilities/`\n\nAlternate route: `/v1/industry/facilities/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_industry_facilities","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of facilities","examples":{"application/json":[{"facility_id":60012544,"owner_id":1000126,"region_id":10000001,"solar_system_id":30000032,"tax":0.1,"type_id":2502}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"facility_id":{"description":"ID of the facility","format":"int64","title":"get_industry_facilities_facility_id","type":"integer"},"owner_id":{"description":"Owner of the facility","format":"int32","title":"get_industry_facilities_owner_id","type":"integer"},"region_id":{"description":"Region ID where the facility is","format":"int32","title":"get_industry_facilities_region_id","type":"integer"},"solar_system_id":{"description":"Solar system ID where the facility is","format":"int32","title":"get_industry_facilities_solar_system_id","type":"integer"},"tax":{"description":"Tax imposed by the facility","format":"float","title":"get_industry_facilities_tax","type":"number"},"type_id":{"description":"Type ID of the facility","format":"int32","title":"get_industry_facilities_type_id","type":"integer"}},"required":["facility_id","owner_id","type_id","solar_system_id","region_id"],"title":"get_industry_facilities_200_ok","type":"object"},"maxItems":10000,"title":"get_industry_facilities_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List industry facilities","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/industry/systems/":{"get":{"description":"Return cost indices for solar systems\n\n---\nAlternate route: `/dev/industry/systems/`\n\nAlternate route: `/legacy/industry/systems/`\n\nAlternate route: `/v1/industry/systems/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_industry_systems","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of cost indicies","examples":{"application/json":[{"cost_indices":[{"activity":"invention","cost_index":0.0048}],"solar_system_id":30011392}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"cost_indices":{"description":"cost_indices array","items":{"description":"cost_indice object","properties":{"activity":{"description":"activity string","enum":["copying","duplicating","invention","manufacturing","none","reaction","researching_material_efficiency","researching_technology","researching_time_efficiency","reverse_engineering"],"title":"get_industry_systems_activity","type":"string"},"cost_index":{"description":"cost_index number","format":"float","title":"get_industry_systems_cost_index","type":"number"}},"required":["activity","cost_index"],"title":"get_industry_systems_cost_indice","type":"object"},"maxItems":10,"title":"get_industry_systems_cost_indices","type":"array"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_industry_systems_solar_system_id","type":"integer"}},"required":["solar_system_id","cost_indices"],"title":"get_industry_systems_200_ok","type":"object"},"maxItems":10000,"title":"get_industry_systems_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List solar system cost indices","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/insurance/prices/":{"get":{"description":"Return available insurance levels for all ship types\n\n---\nAlternate route: `/dev/insurance/prices/`\n\nAlternate route: `/legacy/insurance/prices/`\n\nAlternate route: `/v1/insurance/prices/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_insurance_prices","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of insurance levels for all ship types","examples":{"application/json":[{"levels":[{"cost":10.01,"name":"Basic","payout":20.01}],"type_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"levels":{"description":"A list of a available insurance levels for this ship type","items":{"description":"level object","properties":{"cost":{"description":"cost number","format":"float","title":"get_insurance_prices_cost","type":"number"},"name":{"description":"Localized insurance level","title":"get_insurance_prices_name","type":"string"},"payout":{"description":"payout number","format":"float","title":"get_insurance_prices_payout","type":"number"}},"required":["cost","payout","name"],"title":"get_insurance_prices_level","type":"object"},"maxItems":6,"title":"get_insurance_prices_levels","type":"array"},"type_id":{"description":"type_id integer","format":"int32","title":"get_insurance_prices_type_id","type":"integer"}},"required":["type_id","levels"],"title":"get_insurance_prices_200_ok","type":"object"},"maxItems":1000,"title":"get_insurance_prices_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List insurance levels","tags":["Insurance"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/killmails/{killmail_id}/{killmail_hash}/":{"get":{"description":"Return a single killmail from its ID and hash\n\n---\nAlternate route: `/dev/killmails/{killmail_id}/{killmail_hash}/`\n\nAlternate route: `/legacy/killmails/{killmail_id}/{killmail_hash}/`\n\nAlternate route: `/v1/killmails/{killmail_id}/{killmail_hash}/`\n\n---\nThis route is cached for up to 30758400 seconds","operationId":"get_killmails_killmail_id_killmail_hash","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"The killmail hash for verification","in":"path","name":"killmail_hash","required":true,"type":"string"},{"description":"The killmail ID to be queried","format":"int32","in":"path","name":"killmail_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A killmail","examples":{"application/json":{"attackers":[{"character_id":95810944,"corporation_id":1000179,"damage_done":5745,"faction_id":500003,"final_blow":true,"security_status":-0.3,"ship_type_id":17841,"weapon_type_id":3074}],"killmail_id":56733821,"killmail_time":"2016-10-22T17:13:36Z","solar_system_id":30002976,"victim":{"alliance_id":621338554,"character_id":92796241,"corporation_id":841363671,"damage_taken":5745,"items":[{"flag":20,"item_type_id":5973,"quantity_dropped":1,"singleton":0}],"position":{"x":452186600569.4748,"y":146704961490.90222,"z":109514596532.54477},"ship_type_id":17812}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"attackers":{"description":"attackers array","items":{"description":"attacker object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_alliance_id","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_character_id","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_corporation_id","type":"integer"},"damage_done":{"description":"damage_done integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_damage_done","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_faction_id","type":"integer"},"final_blow":{"description":"Was the attacker the one to achieve the final blow\n","title":"get_killmails_killmail_id_killmail_hash_final_blow","type":"boolean"},"security_status":{"description":"Security status for the attacker\n","format":"float","title":"get_killmails_killmail_id_killmail_hash_security_status","type":"number"},"ship_type_id":{"description":"What ship was the attacker flying\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_ship_type_id","type":"integer"},"weapon_type_id":{"description":"What weapon was used by the attacker for the kill\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_weapon_type_id","type":"integer"}},"required":["security_status","final_blow","damage_done"],"title":"get_killmails_killmail_id_killmail_hash_attacker","type":"object"},"maxItems":10000,"title":"get_killmails_killmail_id_killmail_hash_attackers","type":"array"},"killmail_id":{"description":"ID of the killmail","format":"int32","title":"get_killmails_killmail_id_killmail_hash_killmail_id","type":"integer"},"killmail_time":{"description":"Time that the victim was killed and the killmail generated\n","format":"date-time","title":"get_killmails_killmail_id_killmail_hash_killmail_time","type":"string"},"moon_id":{"description":"Moon if the kill took place at one","format":"int32","title":"get_killmails_killmail_id_killmail_hash_moon_id","type":"integer"},"solar_system_id":{"description":"Solar system that the kill took place in\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_solar_system_id","type":"integer"},"victim":{"description":"victim object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_alliance_id","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_character_id","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_corporation_id","type":"integer"},"damage_taken":{"description":"How much total damage was taken by the victim\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_damage_taken","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_faction_id","type":"integer"},"items":{"description":"items array","items":{"description":"item object","properties":{"flag":{"description":"Flag for the location of the item\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_flag","type":"integer"},"item_type_id":{"description":"item_type_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_item_type_id","type":"integer"},"items":{"description":"items array","items":{"description":"item object","properties":{"flag":{"description":"flag integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_item_flag","type":"integer"},"item_type_id":{"description":"item_type_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_item_item_type_id","type":"integer"},"quantity_destroyed":{"description":"quantity_destroyed integer","format":"int64","title":"get_killmails_killmail_id_killmail_hash_item_quantity_destroyed","type":"integer"},"quantity_dropped":{"description":"quantity_dropped integer","format":"int64","title":"get_killmails_killmail_id_killmail_hash_item_quantity_dropped","type":"integer"},"singleton":{"description":"singleton integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_item_singleton","type":"integer"}},"required":["item_type_id","singleton","flag"],"title":"get_killmails_killmail_id_killmail_hash_items_item","type":"object"},"maxItems":10000,"title":"get_killmails_killmail_id_killmail_hash_item_items","type":"array"},"quantity_destroyed":{"description":"How many of the item were destroyed if any\n","format":"int64","title":"get_killmails_killmail_id_killmail_hash_quantity_destroyed","type":"integer"},"quantity_dropped":{"description":"How many of the item were dropped if any\n","format":"int64","title":"get_killmails_killmail_id_killmail_hash_quantity_dropped","type":"integer"},"singleton":{"description":"singleton integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_singleton","type":"integer"}},"required":["item_type_id","singleton","flag"],"title":"get_killmails_killmail_id_killmail_hash_item","type":"object"},"maxItems":10000,"title":"get_killmails_killmail_id_killmail_hash_items","type":"array"},"position":{"description":"Coordinates of the victim in Cartesian space relative to the Sun\n","properties":{"x":{"description":"x number","format":"double","title":"get_killmails_killmail_id_killmail_hash_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_killmails_killmail_id_killmail_hash_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_killmails_killmail_id_killmail_hash_z","type":"number"}},"required":["x","y","z"],"title":"get_killmails_killmail_id_killmail_hash_position","type":"object"},"ship_type_id":{"description":"The ship that the victim was piloting and was destroyed\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_ship_type_id","type":"integer"}},"required":["damage_taken","ship_type_id"],"title":"get_killmails_killmail_id_killmail_hash_victim","type":"object"},"war_id":{"description":"War if the killmail is generated in relation to an official war\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_war_id","type":"integer"}},"required":["killmail_id","killmail_time","victim","attackers","solar_system_id"],"title":"get_killmails_killmail_id_killmail_hash_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Invalid killmail_id and/or killmail_hash","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_killmails_killmail_id_killmail_hash_422_unprocessable_entity","type":"string"}},"title":"get_killmails_killmail_id_killmail_hash_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get a single killmail","tags":["Killmails"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":30758400}},"/loyalty/stores/{corporation_id}/offers/":{"get":{"description":"Return a list of offers from a specific corporation's loyalty store\n\n---\nAlternate route: `/dev/loyalty/stores/{corporation_id}/offers/`\n\nAlternate route: `/legacy/loyalty/stores/{corporation_id}/offers/`\n\nAlternate route: `/v1/loyalty/stores/{corporation_id}/offers/`\n\n---\nThis route expires daily at 11:05","operationId":"get_loyalty_stores_corporation_id_offers","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of offers","examples":{"application/json":[{"ak_cost":35000,"isk_cost":0,"lp_cost":100,"offer_id":1,"quantity":1,"required_items":[],"type_id":123},{"isk_cost":1000,"lp_cost":100,"offer_id":2,"quantity":10,"required_items":[{"quantity":10,"type_id":1234}],"type_id":1235}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"ak_cost":{"description":"Analysis kredit cost","format":"int32","title":"get_loyalty_stores_corporation_id_offers_ak_cost","type":"integer"},"isk_cost":{"description":"isk_cost integer","format":"int64","title":"get_loyalty_stores_corporation_id_offers_isk_cost","type":"integer"},"lp_cost":{"description":"lp_cost integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_lp_cost","type":"integer"},"offer_id":{"description":"offer_id integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_offer_id","type":"integer"},"quantity":{"description":"quantity integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_quantity","type":"integer"},"required_items":{"description":"required_items array","items":{"description":"required_item object","properties":{"quantity":{"description":"quantity integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_required_item_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_required_item_type_id","type":"integer"}},"required":["type_id","quantity"],"title":"get_loyalty_stores_corporation_id_offers_required_item","type":"object"},"maxItems":100,"title":"get_loyalty_stores_corporation_id_offers_required_items","type":"array"},"type_id":{"description":"type_id integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_type_id","type":"integer"}},"required":["offer_id","type_id","quantity","lp_cost","isk_cost","required_items"],"title":"get_loyalty_stores_corporation_id_offers_200_ok","type":"object"},"maxItems":10000,"title":"get_loyalty_stores_corporation_id_offers_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No loyalty point store found for the provided corporation","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_loyalty_stores_corporation_id_offers_404_not_found","type":"string"}},"title":"get_loyalty_stores_corporation_id_offers_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List loyalty store offers","tags":["Loyalty"],"x-alternate-versions":["dev","legacy","v1"]}},"/markets/groups/":{"get":{"description":"Get a list of item groups\n\n---\nAlternate route: `/dev/markets/groups/`\n\nAlternate route: `/legacy/markets/groups/`\n\nAlternate route: `/v1/markets/groups/`\n\n---\nThis route expires daily at 11:05","operationId":"get_markets_groups","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of item group ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_markets_groups_200_ok","type":"integer"},"maxItems":5000,"title":"get_markets_groups_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item groups","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"]}},"/markets/groups/{market_group_id}/":{"get":{"description":"Get information on an item group\n\n---\nAlternate route: `/dev/markets/groups/{market_group_id}/`\n\nAlternate route: `/legacy/markets/groups/{market_group_id}/`\n\nAlternate route: `/v1/markets/groups/{market_group_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_markets_groups_market_group_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"An Eve item group ID","format":"int32","in":"path","name":"market_group_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about an item group","examples":{"application/json":{"description":"Small, fast vessels suited to a variety of purposes.","market_group_id":5,"name":"Standard Frigates","parent_group_id":1361,"types":[582,583]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"description":{"description":"description string","title":"get_markets_groups_market_group_id_description","type":"string"},"market_group_id":{"description":"market_group_id integer","format":"int32","title":"get_markets_groups_market_group_id_market_group_id","type":"integer"},"name":{"description":"name string","title":"get_markets_groups_market_group_id_name","type":"string"},"parent_group_id":{"description":"parent_group_id integer","format":"int32","title":"get_markets_groups_market_group_id_parent_group_id","type":"integer"},"types":{"description":"types array","items":{"description":"type integer","format":"int32","title":"get_markets_groups_market_group_id_type","type":"integer"},"maxItems":5000,"title":"get_markets_groups_market_group_id_types","type":"array"}},"required":["market_group_id","name","description","types"],"title":"get_markets_groups_market_group_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Market group not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_markets_groups_market_group_id_404_not_found","type":"string"}},"title":"get_markets_groups_market_group_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item group information","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"]}},"/markets/prices/":{"get":{"description":"Return a list of prices\n\n---\nAlternate route: `/dev/markets/prices/`\n\nAlternate route: `/legacy/markets/prices/`\n\nAlternate route: `/v1/markets/prices/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_markets_prices","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of prices","examples":{"application/json":[{"adjusted_price":306988.09,"average_price":306292.67,"type_id":32772}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"adjusted_price":{"description":"adjusted_price number","format":"double","title":"get_markets_prices_adjusted_price","type":"number"},"average_price":{"description":"average_price number","format":"double","title":"get_markets_prices_average_price","type":"number"},"type_id":{"description":"type_id integer","format":"int32","title":"get_markets_prices_type_id","type":"integer"}},"required":["type_id"],"title":"get_markets_prices_200_ok","type":"object"},"maxItems":20000,"title":"get_markets_prices_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List market prices","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/markets/structures/{structure_id}/":{"get":{"description":"Return all orders in a structure\n\n---\nAlternate route: `/dev/markets/structures/{structure_id}/`\n\nAlternate route: `/legacy/markets/structures/{structure_id}/`\n\nAlternate route: `/v1/markets/structures/{structure_id}/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_markets_structures_structure_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"description":"Return orders in this structure","format":"int64","in":"path","name":"structure_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of orders","examples":{"application/json":[{"duration":90,"is_buy_order":false,"issued":"2016-09-03T05:12:25Z","location_id":1020988381992,"min_volume":1,"order_id":4623824223,"price":9.9,"range":"region","type_id":34,"volume_remain":1296000,"volume_total":2000000}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"duration integer","format":"int32","title":"get_markets_structures_structure_id_duration","type":"integer"},"is_buy_order":{"description":"is_buy_order boolean","title":"get_markets_structures_structure_id_is_buy_order","type":"boolean"},"issued":{"description":"issued string","format":"date-time","title":"get_markets_structures_structure_id_issued","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_markets_structures_structure_id_location_id","type":"integer"},"min_volume":{"description":"min_volume integer","format":"int32","title":"get_markets_structures_structure_id_min_volume","type":"integer"},"order_id":{"description":"order_id integer","format":"int64","title":"get_markets_structures_structure_id_order_id","type":"integer"},"price":{"description":"price number","format":"double","title":"get_markets_structures_structure_id_price","type":"number"},"range":{"description":"range string","enum":["station","region","solarsystem","1","2","3","4","5","10","20","30","40"],"title":"get_markets_structures_structure_id_range","type":"string"},"type_id":{"description":"type_id integer","format":"int32","title":"get_markets_structures_structure_id_type_id","type":"integer"},"volume_remain":{"description":"volume_remain integer","format":"int32","title":"get_markets_structures_structure_id_volume_remain","type":"integer"},"volume_total":{"description":"volume_total integer","format":"int32","title":"get_markets_structures_structure_id_volume_total","type":"integer"}},"required":["order_id","type_id","location_id","volume_total","volume_remain","min_volume","price","is_buy_order","duration","issued","range"],"title":"get_markets_structures_structure_id_200_ok","type":"object"},"maxItems":1000,"title":"get_markets_structures_structure_id_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.structure_markets.v1"]}],"summary":"List orders in a structure","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/markets/{region_id}/history/":{"get":{"description":"Return a list of historical market statistics for the specified type in a region\n\n---\nAlternate route: `/dev/markets/{region_id}/history/`\n\nAlternate route: `/legacy/markets/{region_id}/history/`\n\nAlternate route: `/v1/markets/{region_id}/history/`\n\n---\nThis route expires daily at 11:05","operationId":"get_markets_region_id_history","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Return statistics in this region","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"},{"description":"Return statistics for this type","format":"int32","in":"query","name":"type_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A list of historical market statistics","examples":{"application/json":[{"average":5.25,"date":"2015-05-01","highest":5.27,"lowest":5.11,"order_count":2267,"volume":16276782035}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"average":{"description":"average number","format":"double","title":"get_markets_region_id_history_average","type":"number"},"date":{"description":"The date of this historical statistic entry","format":"date","title":"get_markets_region_id_history_date","type":"string"},"highest":{"description":"highest number","format":"double","title":"get_markets_region_id_history_highest","type":"number"},"lowest":{"description":"lowest number","format":"double","title":"get_markets_region_id_history_lowest","type":"number"},"order_count":{"description":"Total number of orders happened that day","format":"int64","title":"get_markets_region_id_history_order_count","type":"integer"},"volume":{"description":"Total","format":"int64","title":"get_markets_region_id_history_volume","type":"integer"}},"required":["date","order_count","volume","highest","average","lowest"],"title":"get_markets_region_id_history_200_ok","type":"object"},"maxItems":500,"title":"get_markets_region_id_history_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Type not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_markets_region_id_history_404_not_found","type":"string"}},"title":"get_markets_region_id_history_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Not found","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_markets_region_id_history_422_unprocessable_entity","type":"string"}},"title":"get_markets_region_id_history_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}},"520":{"description":"Internal error thrown from the EVE server","examples":{"application/json":{"error":"Error 520 message"}},"schema":{"description":"Error 520","properties":{"error":{"description":"Error 520 message","title":"get_markets_region_id_history_520_error_520","type":"string"}},"title":"get_markets_region_id_history_error_520","type":"object"}}},"summary":"List historical market statistics in a region","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"]}},"/markets/{region_id}/orders/":{"get":{"description":"Return a list of orders in a region\n\n---\nAlternate route: `/dev/markets/{region_id}/orders/`\n\nAlternate route: `/legacy/markets/{region_id}/orders/`\n\nAlternate route: `/v1/markets/{region_id}/orders/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_markets_region_id_orders","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"default":"all","description":"Filter buy/sell orders, return all orders by default. If you query without type_id, we always return both buy and sell orders","enum":["buy","sell","all"],"in":"query","name":"order_type","required":true,"type":"string"},{"$ref":"#/parameters/page"},{"description":"Return orders in this region","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"},{"description":"Return orders only for this type","format":"int32","in":"query","name":"type_id","required":false,"type":"integer"}],"responses":{"200":{"description":"A list of orders","examples":{"application/json":[{"duration":90,"is_buy_order":false,"issued":"2016-09-03T05:12:25Z","location_id":60005599,"min_volume":1,"order_id":4623824223,"price":9.9,"range":"region","system_id":30000053,"type_id":34,"volume_remain":1296000,"volume_total":2000000}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"duration integer","format":"int32","title":"get_markets_region_id_orders_duration","type":"integer"},"is_buy_order":{"description":"is_buy_order boolean","title":"get_markets_region_id_orders_is_buy_order","type":"boolean"},"issued":{"description":"issued string","format":"date-time","title":"get_markets_region_id_orders_issued","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_markets_region_id_orders_location_id","type":"integer"},"min_volume":{"description":"min_volume integer","format":"int32","title":"get_markets_region_id_orders_min_volume","type":"integer"},"order_id":{"description":"order_id integer","format":"int64","title":"get_markets_region_id_orders_order_id","type":"integer"},"price":{"description":"price number","format":"double","title":"get_markets_region_id_orders_price","type":"number"},"range":{"description":"range string","enum":["station","region","solarsystem","1","2","3","4","5","10","20","30","40"],"title":"get_markets_region_id_orders_range","type":"string"},"system_id":{"description":"The solar system this order was placed","format":"int32","title":"get_markets_region_id_orders_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_markets_region_id_orders_type_id","type":"integer"},"volume_remain":{"description":"volume_remain integer","format":"int32","title":"get_markets_region_id_orders_volume_remain","type":"integer"},"volume_total":{"description":"volume_total integer","format":"int32","title":"get_markets_region_id_orders_volume_total","type":"integer"}},"required":["order_id","type_id","location_id","system_id","volume_total","volume_remain","min_volume","price","is_buy_order","duration","issued","range"],"title":"get_markets_region_id_orders_200_ok","type":"object"},"maxItems":1000,"title":"get_markets_region_id_orders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_markets_region_id_orders_404_not_found","type":"string"}},"title":"get_markets_region_id_orders_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Not found","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_markets_region_id_orders_422_unprocessable_entity","type":"string"}},"title":"get_markets_region_id_orders_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List orders in a region","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/markets/{region_id}/types/":{"get":{"description":"Return a list of type IDs that have active orders in the region, for efficient market indexing.\n\n---\nAlternate route: `/dev/markets/{region_id}/types/`\n\nAlternate route: `/legacy/markets/{region_id}/types/`\n\nAlternate route: `/v1/markets/{region_id}/types/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_markets_region_id_types","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"description":"Return statistics in this region","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A list of type IDs","examples":{"application/json":[587,593,597]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_markets_region_id_types_200_ok","type":"integer"},"maxItems":1000,"title":"get_markets_region_id_types_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List type IDs relevant to a market","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":600}},"/opportunities/groups/":{"get":{"description":"Return a list of opportunities groups\n\n---\nAlternate route: `/dev/opportunities/groups/`\n\nAlternate route: `/legacy/opportunities/groups/`\n\nAlternate route: `/v1/opportunities/groups/`\n\n---\nThis route expires daily at 11:05","operationId":"get_opportunities_groups","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of opportunities group ids","examples":{"application/json":[100,101,102,103]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_opportunities_groups_200_ok","type":"integer"},"maxItems":50,"title":"get_opportunities_groups_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get opportunities groups","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"]}},"/opportunities/groups/{group_id}/":{"get":{"description":"Return information of an opportunities group\n\n---\nAlternate route: `/dev/opportunities/groups/{group_id}/`\n\nAlternate route: `/legacy/opportunities/groups/{group_id}/`\n\nAlternate route: `/v1/opportunities/groups/{group_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_opportunities_groups_group_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"description":"ID of an opportunities group","format":"int32","in":"path","name":"group_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"Details of an opportunities group","examples":{"application/json":{"connected_groups":[100],"description":"As a capsuleer...","group_id":103,"name":"Welcome to New Eden","notification":"Completed:
Welcome to New Eden","required_tasks":[19]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"connected_groups":{"description":"The groups that are connected to this group on the opportunities map","items":{"description":"connected_group integer","format":"int32","title":"get_opportunities_groups_group_id_connected_group","type":"integer"},"maxItems":50,"title":"get_opportunities_groups_group_id_connected_groups","type":"array"},"description":{"description":"description string","title":"get_opportunities_groups_group_id_description","type":"string"},"group_id":{"description":"group_id integer","format":"int32","title":"get_opportunities_groups_group_id_group_id","type":"integer"},"name":{"description":"name string","title":"get_opportunities_groups_group_id_name","type":"string"},"notification":{"description":"notification string","title":"get_opportunities_groups_group_id_notification","type":"string"},"required_tasks":{"description":"Tasks need to complete for this group","items":{"description":"required_task integer","format":"int32","title":"get_opportunities_groups_group_id_required_task","type":"integer"},"maxItems":100,"title":"get_opportunities_groups_group_id_required_tasks","type":"array"}},"required":["group_id","name","description","notification","required_tasks","connected_groups"],"title":"get_opportunities_groups_group_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get opportunities group","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"]}},"/opportunities/tasks/":{"get":{"description":"Return a list of opportunities tasks\n\n---\nAlternate route: `/dev/opportunities/tasks/`\n\nAlternate route: `/legacy/opportunities/tasks/`\n\nAlternate route: `/v1/opportunities/tasks/`\n\n---\nThis route expires daily at 11:05","operationId":"get_opportunities_tasks","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of opportunities task ids","examples":{"application/json":[1,2,3,4]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_opportunities_tasks_200_ok","type":"integer"},"maxItems":100,"title":"get_opportunities_tasks_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get opportunities tasks","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"]}},"/opportunities/tasks/{task_id}/":{"get":{"description":"Return information of an opportunities task\n\n---\nAlternate route: `/dev/opportunities/tasks/{task_id}/`\n\nAlternate route: `/legacy/opportunities/tasks/{task_id}/`\n\nAlternate route: `/v1/opportunities/tasks/{task_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_opportunities_tasks_task_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"ID of an opportunities task","format":"int32","in":"path","name":"task_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Details of an opportunities task","examples":{"application/json":{"description":"To use station services...","name":"Dock in the station","notification":"Completed:
Docked in a station!","task_id":10}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"description":{"description":"description string","title":"get_opportunities_tasks_task_id_description","type":"string"},"name":{"description":"name string","title":"get_opportunities_tasks_task_id_name","type":"string"},"notification":{"description":"notification string","title":"get_opportunities_tasks_task_id_notification","type":"string"},"task_id":{"description":"task_id integer","format":"int32","title":"get_opportunities_tasks_task_id_task_id","type":"integer"}},"required":["task_id","name","description","notification"],"title":"get_opportunities_tasks_task_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get opportunities task","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"]}},"/route/{origin}/{destination}/":{"get":{"description":"Get the systems between origin and destination\n\n---\nAlternate route: `/dev/route/{origin}/{destination}/`\n\nAlternate route: `/legacy/route/{origin}/{destination}/`\n\nAlternate route: `/v1/route/{origin}/{destination}/`\n\n---\nThis route is cached for up to 86400 seconds","operationId":"get_route_origin_destination","parameters":[{"description":"avoid solar system ID(s)","in":"query","items":{"format":"int32","type":"integer"},"maxItems":100,"name":"avoid","type":"array","uniqueItems":true},{"description":"connected solar system pairs","in":"query","items":{"collectionFormat":"pipes","items":{"format":"int32","type":"integer"},"maxItems":2,"minItems":2,"type":"array","uniqueItems":true},"maxItems":100,"name":"connections","type":"array","uniqueItems":true},{"$ref":"#/parameters/datasource"},{"description":"destination solar system ID","format":"int32","in":"path","name":"destination","required":true,"type":"integer"},{"default":"shortest","description":"route security preference","enum":["shortest","secure","insecure"],"in":"query","name":"flag","type":"string"},{"$ref":"#/parameters/If-None-Match"},{"description":"origin solar system ID","format":"int32","in":"path","name":"origin","required":true,"type":"integer"}],"responses":{"200":{"description":"Solar systems in route from origin to destination","examples":{"application/json":[30002771,30002770,30002769,30002772]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Solar systems in route","items":{"description":"Solar system in route","format":"int32","title":"Solar system ID","type":"integer"},"maxItems":1000,"title":"get_route_origin_destination_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No route found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_route_origin_destination_404_not_found","type":"string"}},"title":"get_route_origin_destination_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get route","tags":["Routes"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":86400}},"/search/":{"get":{"description":"Search for entities that match a given sub-string.\n\n---\nAlternate route: `/dev/search/`\n\nAlternate route: `/legacy/search/`\n\nAlternate route: `/v2/search/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_search","parameters":[{"$ref":"#/parameters/Accept-Language"},{"description":"Type of entities to search for","in":"query","items":{"enum":["agent","alliance","character","constellation","corporation","faction","inventory_type","region","solar_system","station"],"type":"string"},"maxItems":10,"minItems":1,"name":"categories","required":true,"type":"array","uniqueItems":true},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"The string to search on","in":"query","minLength":3,"name":"search","required":true,"type":"string"},{"default":false,"description":"Whether the search should be a strict match","in":"query","name":"strict","type":"boolean"}],"responses":{"200":{"description":"A list of search results","examples":{"application/json":{"solar_system":[30002510],"station":[60004588,60004594,60005725,60009106,60012721,60012724,60012727]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"agent":{"description":"agent array","items":{"description":"agent integer","format":"int32","title":"get_search_agent_agent","type":"integer"},"maxItems":500,"title":"get_search_agent","type":"array"},"alliance":{"description":"alliance array","items":{"description":"alliance integer","format":"int32","title":"get_search_alliance_alliance","type":"integer"},"maxItems":500,"title":"get_search_alliance","type":"array"},"character":{"description":"character array","items":{"description":"character integer","format":"int32","title":"get_search_character_character","type":"integer"},"maxItems":500,"title":"get_search_character","type":"array"},"constellation":{"description":"constellation array","items":{"description":"constellation integer","format":"int32","title":"get_search_constellation_constellation","type":"integer"},"maxItems":500,"title":"get_search_constellation","type":"array"},"corporation":{"description":"corporation array","items":{"description":"corporation integer","format":"int32","title":"get_search_corporation_corporation","type":"integer"},"maxItems":500,"title":"get_search_corporation","type":"array"},"faction":{"description":"faction array","items":{"description":"faction integer","format":"int32","title":"get_search_faction_faction","type":"integer"},"maxItems":500,"title":"get_search_faction","type":"array"},"inventory_type":{"description":"inventory_type array","items":{"description":"inventory_type integer","format":"int32","title":"get_search_inventory_type_inventory_type","type":"integer"},"maxItems":500,"title":"get_search_inventory_type","type":"array"},"region":{"description":"region array","items":{"description":"region integer","format":"int32","title":"get_search_region_region","type":"integer"},"maxItems":500,"title":"get_search_region","type":"array"},"solar_system":{"description":"solar_system array","items":{"description":"solar_system integer","format":"int32","title":"get_search_solar_system_solar_system","type":"integer"},"maxItems":500,"title":"get_search_solar_system","type":"array"},"station":{"description":"station array","items":{"description":"station integer","format":"int32","title":"get_search_station_station","type":"integer"},"maxItems":500,"title":"get_search_station","type":"array"}},"title":"get_search_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Search on a string","tags":["Search"],"x-alternate-versions":["dev","legacy","v2"],"x-cached-seconds":3600}},"/sovereignty/campaigns/":{"get":{"description":"Shows sovereignty data for campaigns.\n\n---\nAlternate route: `/dev/sovereignty/campaigns/`\n\nAlternate route: `/legacy/sovereignty/campaigns/`\n\nAlternate route: `/v1/sovereignty/campaigns/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_sovereignty_campaigns","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of sovereignty campaigns","examples":{"application/json":[{"attackers_score":0.4,"campaign_id":32833,"constellation_id":20000125,"defender_id":1695357456,"defender_score":0.6,"event_type":"station_defense","solar_system_id":30000856,"start_time":"2016-10-29T14:34:40Z","structure_id":61001096}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"attackers_score":{"description":"Score for all attacking parties, only present in Defense Events.\n","format":"float","title":"get_sovereignty_campaigns_attackers_score","type":"number"},"campaign_id":{"description":"Unique ID for this campaign.","format":"int32","title":"get_sovereignty_campaigns_campaign_id","type":"integer"},"constellation_id":{"description":"The constellation in which the campaign will take place.\n","format":"int32","title":"get_sovereignty_campaigns_constellation_id","type":"integer"},"defender_id":{"description":"Defending alliance, only present in Defense Events\n","format":"int32","title":"get_sovereignty_campaigns_defender_id","type":"integer"},"defender_score":{"description":"Score for the defending alliance, only present in Defense Events.\n","format":"float","title":"get_sovereignty_campaigns_defender_score","type":"number"},"event_type":{"description":"Type of event this campaign is for. tcu_defense, ihub_defense and station_defense are referred to as \"Defense Events\", station_freeport as \"Freeport Events\".\n","enum":["tcu_defense","ihub_defense","station_defense","station_freeport"],"title":"get_sovereignty_campaigns_event_type","type":"string"},"participants":{"description":"Alliance participating and their respective scores, only present in Freeport Events.\n","items":{"description":"participant object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_sovereignty_campaigns_alliance_id","type":"integer"},"score":{"description":"score number","format":"float","title":"get_sovereignty_campaigns_score","type":"number"}},"required":["alliance_id","score"],"title":"get_sovereignty_campaigns_participant","type":"object"},"maxItems":5000,"title":"get_sovereignty_campaigns_participants","type":"array"},"solar_system_id":{"description":"The solar system the structure is located in.\n","format":"int32","title":"get_sovereignty_campaigns_solar_system_id","type":"integer"},"start_time":{"description":"Time the event is scheduled to start.\n","format":"date-time","title":"get_sovereignty_campaigns_start_time","type":"string"},"structure_id":{"description":"The structure item ID that is related to this campaign.\n","format":"int64","title":"get_sovereignty_campaigns_structure_id","type":"integer"}},"required":["campaign_id","structure_id","solar_system_id","constellation_id","event_type","start_time"],"title":"get_sovereignty_campaigns_200_ok","type":"object"},"maxItems":10000,"title":"get_sovereignty_campaigns_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List sovereignty campaigns","tags":["Sovereignty"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":5}},"/sovereignty/map/":{"get":{"description":"Shows sovereignty information for solar systems\n\n---\nAlternate route: `/dev/sovereignty/map/`\n\nAlternate route: `/legacy/sovereignty/map/`\n\nAlternate route: `/v1/sovereignty/map/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_sovereignty_map","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of sovereignty information for solar systems in New Eden","examples":{"application/json":[{"faction_id":500001,"system_id":30045334}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_sovereignty_map_alliance_id","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_sovereignty_map_corporation_id","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_sovereignty_map_faction_id","type":"integer"},"system_id":{"description":"system_id integer","format":"int32","title":"get_sovereignty_map_system_id","type":"integer"}},"required":["system_id"],"title":"get_sovereignty_map_200_ok","type":"object"},"maxItems":10000,"title":"get_sovereignty_map_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List sovereignty of systems","tags":["Sovereignty"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/sovereignty/structures/":{"get":{"description":"Shows sovereignty data for structures.\n\n---\nAlternate route: `/dev/sovereignty/structures/`\n\nAlternate route: `/legacy/sovereignty/structures/`\n\nAlternate route: `/v1/sovereignty/structures/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_sovereignty_structures","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of sovereignty structures","examples":{"application/json":[{"alliance_id":498125261,"solar_system_id":30000570,"structure_id":1018253388776,"structure_type_id":32226,"vulnerability_occupancy_level":2,"vulnerable_end_time":"2016-10-29T05:30:00Z","vulnerable_start_time":"2016-10-28T20:30:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"The alliance that owns the structure.\n","format":"int32","title":"get_sovereignty_structures_alliance_id","type":"integer"},"solar_system_id":{"description":"Solar system in which the structure is located.\n","format":"int32","title":"get_sovereignty_structures_solar_system_id","type":"integer"},"structure_id":{"description":"Unique item ID for this structure.","format":"int64","title":"get_sovereignty_structures_structure_id","type":"integer"},"structure_type_id":{"description":"A reference to the type of structure this is.\n","format":"int32","title":"get_sovereignty_structures_structure_type_id","type":"integer"},"vulnerability_occupancy_level":{"description":"The occupancy level for the next or current vulnerability window. This takes into account all development indexes and capital system bonuses. Also known as Activity Defense Multiplier from in the client. It increases the time that attackers must spend using their entosis links on the structure.\n","format":"float","title":"get_sovereignty_structures_vulnerability_occupancy_level","type":"number"},"vulnerable_end_time":{"description":"The time at which the next or current vulnerability window ends. At the end of a vulnerability window the next window is recalculated and locked in along with the vulnerabilityOccupancyLevel. If the structure is not in 100% entosis control of the defender, it will go in to 'overtime' and stay vulnerable for as long as that situation persists. Only once the defenders have 100% entosis control and has the vulnerableEndTime passed does the vulnerability interval expire and a new one is calculated.\n","format":"date-time","title":"get_sovereignty_structures_vulnerable_end_time","type":"string"},"vulnerable_start_time":{"description":"The next time at which the structure will become vulnerable. Or the start time of the current window if current time is between this and vulnerableEndTime.\n","format":"date-time","title":"get_sovereignty_structures_vulnerable_start_time","type":"string"}},"required":["alliance_id","solar_system_id","structure_id","structure_type_id"],"title":"get_sovereignty_structures_200_ok","type":"object"},"maxItems":10000,"title":"get_sovereignty_structures_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List sovereignty structures","tags":["Sovereignty"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":120}},"/status/":{"get":{"description":"EVE Server status\n\n---\nAlternate route: `/dev/status/`\n\nAlternate route: `/legacy/status/`\n\nAlternate route: `/v1/status/`\n\n---\nThis route is cached for up to 30 seconds","operationId":"get_status","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Server status","examples":{"application/json":{"players":12345,"server_version":"1132976","start_time":"2017-01-02T12:34:56Z"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"players":{"description":"Current online player count","title":"get_status_players","type":"integer"},"server_version":{"description":"Running version as string","title":"get_status_server_version","type":"string"},"start_time":{"description":"Server start timestamp","format":"date-time","title":"get_status_start_time","type":"string"},"vip":{"description":"If the server is in VIP mode","title":"get_status_vip","type":"boolean"}},"required":["start_time","players","server_version"],"title":"get_status_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Retrieve the uptime and player counts","tags":["Status"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":30}},"/ui/autopilot/waypoint/":{"post":{"description":"Set a solar system as autopilot waypoint\n\n---\nAlternate route: `/dev/ui/autopilot/waypoint/`\n\nAlternate route: `/legacy/ui/autopilot/waypoint/`\n\nAlternate route: `/v2/ui/autopilot/waypoint/`\n","operationId":"post_ui_autopilot_waypoint","parameters":[{"default":false,"description":"Whether this solar system should be added to the beginning of all waypoints","in":"query","name":"add_to_beginning","required":true,"type":"boolean"},{"default":false,"description":"Whether clean other waypoints beforing adding this one","in":"query","name":"clear_other_waypoints","required":true,"type":"boolean"},{"$ref":"#/parameters/datasource"},{"description":"The destination to travel to, can be solar system, station or structure's id","format":"int64","in":"query","name":"destination_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.write_waypoint.v1"]}],"summary":"Set Autopilot Waypoint","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v2"]}},"/ui/openwindow/contract/":{"post":{"description":"Open the contract window inside the client\n\n---\nAlternate route: `/dev/ui/openwindow/contract/`\n\nAlternate route: `/legacy/ui/openwindow/contract/`\n\nAlternate route: `/v1/ui/openwindow/contract/`\n","operationId":"post_ui_openwindow_contract","parameters":[{"description":"The contract to open","format":"int32","in":"query","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.open_window.v1"]}],"summary":"Open Contract Window","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v1"]}},"/ui/openwindow/information/":{"post":{"description":"Open the information window for a character, corporation or alliance inside the client\n\n---\nAlternate route: `/dev/ui/openwindow/information/`\n\nAlternate route: `/legacy/ui/openwindow/information/`\n\nAlternate route: `/v1/ui/openwindow/information/`\n","operationId":"post_ui_openwindow_information","parameters":[{"$ref":"#/parameters/datasource"},{"description":"The target to open","format":"int32","in":"query","name":"target_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.open_window.v1"]}],"summary":"Open Information Window","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v1"]}},"/ui/openwindow/marketdetails/":{"post":{"description":"Open the market details window for a specific typeID inside the client\n\n---\nAlternate route: `/dev/ui/openwindow/marketdetails/`\n\nAlternate route: `/legacy/ui/openwindow/marketdetails/`\n\nAlternate route: `/v1/ui/openwindow/marketdetails/`\n","operationId":"post_ui_openwindow_marketdetails","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/token"},{"description":"The item type to open in market window","format":"int32","in":"query","name":"type_id","required":true,"type":"integer"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.open_window.v1"]}],"summary":"Open Market Details","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v1"]}},"/ui/openwindow/newmail/":{"post":{"description":"Open the New Mail window, according to settings from the request if applicable\n\n---\nAlternate route: `/dev/ui/openwindow/newmail/`\n\nAlternate route: `/legacy/ui/openwindow/newmail/`\n\nAlternate route: `/v1/ui/openwindow/newmail/`\n","operationId":"post_ui_openwindow_newmail","parameters":[{"$ref":"#/parameters/datasource"},{"description":"The details of mail to create","in":"body","name":"new_mail","required":true,"schema":{"description":"new_mail object","properties":{"body":{"description":"body string","maxLength":10000,"title":"post_ui_openwindow_newmail_body","type":"string"},"recipients":{"description":"recipients array","items":{"description":"recipient integer","format":"int32","title":"post_ui_openwindow_newmail_recipient","type":"integer"},"maxItems":50,"minItems":1,"title":"post_ui_openwindow_newmail_recipients","type":"array"},"subject":{"description":"subject string","maxLength":1000,"title":"post_ui_openwindow_newmail_subject","type":"string"},"to_corp_or_alliance_id":{"description":"to_corp_or_alliance_id integer","format":"int32","title":"post_ui_openwindow_newmail_to_corp_or_alliance_id","type":"integer"},"to_mailing_list_id":{"description":"Corporations, alliances and mailing lists are all types of mailing groups. You may only send to one mailing group, at a time, so you may fill out either this field or the to_corp_or_alliance_ids field","format":"int32","title":"post_ui_openwindow_newmail_to_mailing_list_id","type":"integer"}},"required":["subject","body","recipients"],"title":"post_ui_openwindow_newmail_new_mail","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Invalid request","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"post_ui_openwindow_newmail_422_unprocessable_entity","type":"string"}},"title":"post_ui_openwindow_newmail_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.open_window.v1"]}],"summary":"Open New Mail Window","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/ancestries/":{"get":{"description":"Get all character ancestries\n\n---\nAlternate route: `/dev/universe/ancestries/`\n\nAlternate route: `/legacy/universe/ancestries/`\n\nAlternate route: `/v1/universe/ancestries/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_ancestries","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of ancestries","examples":{"application/json":[{"bloodline_id":1,"description":"Acutely aware of the small population...","id":12,"name":"Tube Child","short_description":"Manufactured citizens of the State."}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"bloodline_id":{"description":"The bloodline associated with this ancestry","format":"int32","title":"get_universe_ancestries_bloodline_id","type":"integer"},"description":{"description":"description string","title":"get_universe_ancestries_description","type":"string"},"icon_id":{"description":"icon_id integer","format":"int32","title":"get_universe_ancestries_icon_id","type":"integer"},"id":{"description":"id integer","format":"int32","title":"get_universe_ancestries_id","type":"integer"},"name":{"description":"name string","title":"get_universe_ancestries_name","type":"string"},"short_description":{"description":"short_description string","title":"get_universe_ancestries_short_description","type":"string"}},"required":["id","name","bloodline_id","description"],"title":"get_universe_ancestries_200_ok","type":"object"},"maxItems":42,"title":"get_universe_ancestries_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get ancestries","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/asteroid_belts/{asteroid_belt_id}/":{"get":{"description":"Get information on an asteroid belt\n\n---\nAlternate route: `/dev/universe/asteroid_belts/{asteroid_belt_id}/`\n\nAlternate route: `/legacy/universe/asteroid_belts/{asteroid_belt_id}/`\n\nAlternate route: `/v1/universe/asteroid_belts/{asteroid_belt_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_asteroid_belts_asteroid_belt_id","parameters":[{"description":"asteroid_belt_id integer","format":"int32","in":"path","name":"asteroid_belt_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Information about an asteroid belt","examples":{"application/json":{"name":"Tanoo I - Asteroid Belt 1","position":{"x":161967513600,"y":21288837120,"z":-73505464320},"system_id":30000001}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"name":{"description":"name string","title":"get_universe_asteroid_belts_asteroid_belt_id_name","type":"string"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_asteroid_belts_asteroid_belt_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_asteroid_belts_asteroid_belt_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_asteroid_belts_asteroid_belt_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_asteroid_belts_asteroid_belt_id_position","type":"object"},"system_id":{"description":"The solar system this asteroid belt is in","format":"int32","title":"get_universe_asteroid_belts_asteroid_belt_id_system_id","type":"integer"}},"required":["name","position","system_id"],"title":"get_universe_asteroid_belts_asteroid_belt_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Asteroid belt not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_asteroid_belts_asteroid_belt_id_404_not_found","type":"string"}},"title":"get_universe_asteroid_belts_asteroid_belt_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get asteroid belt information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/bloodlines/":{"get":{"description":"Get a list of bloodlines\n\n---\nAlternate route: `/dev/universe/bloodlines/`\n\nAlternate route: `/legacy/universe/bloodlines/`\n\nAlternate route: `/v1/universe/bloodlines/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_bloodlines","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of bloodlines","examples":{"application/json":[{"bloodline_id":1,"charisma":6,"corporation_id":1000006,"description":"The Deteis are regarded as ...","intelligence":7,"memory":7,"name":"Deteis","perception":5,"race_id":1,"ship_type_id":601,"willpower":5}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"bloodline_id":{"description":"bloodline_id integer","format":"int32","title":"get_universe_bloodlines_bloodline_id","type":"integer"},"charisma":{"description":"charisma integer","format":"int32","title":"get_universe_bloodlines_charisma","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_universe_bloodlines_corporation_id","type":"integer"},"description":{"description":"description string","title":"get_universe_bloodlines_description","type":"string"},"intelligence":{"description":"intelligence integer","format":"int32","title":"get_universe_bloodlines_intelligence","type":"integer"},"memory":{"description":"memory integer","format":"int32","title":"get_universe_bloodlines_memory","type":"integer"},"name":{"description":"name string","title":"get_universe_bloodlines_name","type":"string"},"perception":{"description":"perception integer","format":"int32","title":"get_universe_bloodlines_perception","type":"integer"},"race_id":{"description":"race_id integer","format":"int32","title":"get_universe_bloodlines_race_id","type":"integer"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_universe_bloodlines_ship_type_id","type":"integer"},"willpower":{"description":"willpower integer","format":"int32","title":"get_universe_bloodlines_willpower","type":"integer"}},"required":["bloodline_id","name","description","race_id","ship_type_id","corporation_id","perception","willpower","charisma","memory","intelligence"],"title":"get_universe_bloodlines_200_ok","type":"object"},"maxItems":100,"title":"get_universe_bloodlines_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get bloodlines","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/categories/":{"get":{"description":"Get a list of item categories\n\n---\nAlternate route: `/dev/universe/categories/`\n\nAlternate route: `/legacy/universe/categories/`\n\nAlternate route: `/v1/universe/categories/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_categories","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of item category ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_categories_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_categories_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item categories","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/categories/{category_id}/":{"get":{"description":"Get information of an item category\n\n---\nAlternate route: `/dev/universe/categories/{category_id}/`\n\nAlternate route: `/legacy/universe/categories/{category_id}/`\n\nAlternate route: `/v1/universe/categories/{category_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_categories_category_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"description":"An Eve item category ID","format":"int32","in":"path","name":"category_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"Information about an item category","examples":{"application/json":{"category_id":6,"groups":[25,26,27],"name":"Ship","published":true}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"category_id":{"description":"category_id integer","format":"int32","title":"get_universe_categories_category_id_category_id","type":"integer"},"groups":{"description":"groups array","items":{"description":"group integer","format":"int32","title":"get_universe_categories_category_id_group","type":"integer"},"maxItems":10000,"title":"get_universe_categories_category_id_groups","type":"array"},"name":{"description":"name string","title":"get_universe_categories_category_id_name","type":"string"},"published":{"description":"published boolean","title":"get_universe_categories_category_id_published","type":"boolean"}},"required":["category_id","name","published","groups"],"title":"get_universe_categories_category_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Category not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_categories_category_id_404_not_found","type":"string"}},"title":"get_universe_categories_category_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item category information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/constellations/":{"get":{"description":"Get a list of constellations\n\n---\nAlternate route: `/dev/universe/constellations/`\n\nAlternate route: `/legacy/universe/constellations/`\n\nAlternate route: `/v1/universe/constellations/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_constellations","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of constellation ids","examples":{"application/json":[20000001,20000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_constellations_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_constellations_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get constellations","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/constellations/{constellation_id}/":{"get":{"description":"Get information on a constellation\n\n---\nAlternate route: `/dev/universe/constellations/{constellation_id}/`\n\nAlternate route: `/legacy/universe/constellations/{constellation_id}/`\n\nAlternate route: `/v1/universe/constellations/{constellation_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_constellations_constellation_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"description":"constellation_id integer","format":"int32","in":"path","name":"constellation_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"Information about a constellation","examples":{"application/json":{"constellation_id":20000009,"name":"Mekashtad","position":{"x":67796138757472320,"y":-70591121348560960,"z":-59587016159270070},"region_id":10000001,"systems":[20000302,20000303]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"constellation_id":{"description":"constellation_id integer","format":"int32","title":"get_universe_constellations_constellation_id_constellation_id","type":"integer"},"name":{"description":"name string","title":"get_universe_constellations_constellation_id_name","type":"string"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_constellations_constellation_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_constellations_constellation_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_constellations_constellation_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_constellations_constellation_id_position","type":"object"},"region_id":{"description":"The region this constellation is in","format":"int32","title":"get_universe_constellations_constellation_id_region_id","type":"integer"},"systems":{"description":"systems array","items":{"description":"system integer","format":"int32","title":"get_universe_constellations_constellation_id_system","type":"integer"},"maxItems":10000,"title":"get_universe_constellations_constellation_id_systems","type":"array"}},"required":["constellation_id","name","position","region_id","systems"],"title":"get_universe_constellations_constellation_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Constellation not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_constellations_constellation_id_404_not_found","type":"string"}},"title":"get_universe_constellations_constellation_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get constellation information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/factions/":{"get":{"description":"Get a list of factions\n\n---\nAlternate route: `/dev/universe/factions/`\n\nAlternate route: `/v2/universe/factions/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_factions","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of factions","examples":{"application/json":[{"corporation_id":456,"description":"blah blah","faction_id":1,"is_unique":true,"name":"Faction","size_factor":1.0,"solar_system_id":123,"station_count":1000,"station_system_count":100}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_universe_factions_corporation_id","type":"integer"},"description":{"description":"description string","title":"get_universe_factions_description","type":"string"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_universe_factions_faction_id","type":"integer"},"is_unique":{"description":"is_unique boolean","title":"get_universe_factions_is_unique","type":"boolean"},"militia_corporation_id":{"description":"militia_corporation_id integer","format":"int32","title":"get_universe_factions_militia_corporation_id","type":"integer"},"name":{"description":"name string","title":"get_universe_factions_name","type":"string"},"size_factor":{"description":"size_factor number","format":"float","title":"get_universe_factions_size_factor","type":"number"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_universe_factions_solar_system_id","type":"integer"},"station_count":{"description":"station_count integer","format":"int32","title":"get_universe_factions_station_count","type":"integer"},"station_system_count":{"description":"station_system_count integer","format":"int32","title":"get_universe_factions_station_system_count","type":"integer"}},"required":["faction_id","name","description","size_factor","station_count","station_system_count","is_unique"],"title":"get_universe_factions_200_ok","type":"object"},"maxItems":10000,"title":"get_universe_factions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get factions","tags":["Universe"],"x-alternate-versions":["dev","v2"]}},"/universe/graphics/":{"get":{"description":"Get a list of graphics\n\n---\nAlternate route: `/dev/universe/graphics/`\n\nAlternate route: `/legacy/universe/graphics/`\n\nAlternate route: `/v1/universe/graphics/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_graphics","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of graphic ids","examples":{"application/json":[10,4106]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_graphics_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_graphics_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get graphics","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/graphics/{graphic_id}/":{"get":{"description":"Get information on a graphic\n\n---\nAlternate route: `/dev/universe/graphics/{graphic_id}/`\n\nAlternate route: `/legacy/universe/graphics/{graphic_id}/`\n\nAlternate route: `/v1/universe/graphics/{graphic_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_graphics_graphic_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"graphic_id integer","format":"int32","in":"path","name":"graphic_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Information about a graphic","examples":{"application/json":{"graphic_file":"res:/dx9/model/worldobject/planet/moon.red","graphic_id":10}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"collision_file":{"description":"collision_file string","title":"get_universe_graphics_graphic_id_collision_file","type":"string"},"graphic_file":{"description":"graphic_file string","title":"get_universe_graphics_graphic_id_graphic_file","type":"string"},"graphic_id":{"description":"graphic_id integer","format":"int32","title":"get_universe_graphics_graphic_id_graphic_id","type":"integer"},"icon_folder":{"description":"icon_folder string","title":"get_universe_graphics_graphic_id_icon_folder","type":"string"},"sof_dna":{"description":"sof_dna string","title":"get_universe_graphics_graphic_id_sof_dna","type":"string"},"sof_fation_name":{"description":"sof_fation_name string","title":"get_universe_graphics_graphic_id_sof_fation_name","type":"string"},"sof_hull_name":{"description":"sof_hull_name string","title":"get_universe_graphics_graphic_id_sof_hull_name","type":"string"},"sof_race_name":{"description":"sof_race_name string","title":"get_universe_graphics_graphic_id_sof_race_name","type":"string"}},"required":["graphic_id"],"title":"get_universe_graphics_graphic_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Graphic not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_graphics_graphic_id_404_not_found","type":"string"}},"title":"get_universe_graphics_graphic_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get graphic information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/groups/":{"get":{"description":"Get a list of item groups\n\n---\nAlternate route: `/dev/universe/groups/`\n\nAlternate route: `/legacy/universe/groups/`\n\nAlternate route: `/v1/universe/groups/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_groups","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"}],"responses":{"200":{"description":"A list of item group ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_groups_200_ok","type":"integer"},"maxItems":1000,"title":"get_universe_groups_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item groups","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/groups/{group_id}/":{"get":{"description":"Get information on an item group\n\n---\nAlternate route: `/dev/universe/groups/{group_id}/`\n\nAlternate route: `/legacy/universe/groups/{group_id}/`\n\nAlternate route: `/v1/universe/groups/{group_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_groups_group_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"description":"An Eve item group ID","format":"int32","in":"path","name":"group_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"Information about an item group","examples":{"application/json":{"category_id":6,"group_id":25,"name":"Frigate","published":true,"types":[587,586,585]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"category_id":{"description":"category_id integer","format":"int32","title":"get_universe_groups_group_id_category_id","type":"integer"},"group_id":{"description":"group_id integer","format":"int32","title":"get_universe_groups_group_id_group_id","type":"integer"},"name":{"description":"name string","title":"get_universe_groups_group_id_name","type":"string"},"published":{"description":"published boolean","title":"get_universe_groups_group_id_published","type":"boolean"},"types":{"description":"types array","items":{"description":"type integer","format":"int32","title":"get_universe_groups_group_id_type","type":"integer"},"maxItems":10000,"title":"get_universe_groups_group_id_types","type":"array"}},"required":["group_id","name","published","category_id","types"],"title":"get_universe_groups_group_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Group not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_groups_group_id_404_not_found","type":"string"}},"title":"get_universe_groups_group_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item group information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/ids/":{"post":{"description":"Resolve a set of names to IDs in the following categories: agents, alliances, characters, constellations, corporations factions, inventory_types, regions, stations, and systems. Only exact matches will be returned. All names searched for are cached for 12 hours\n\n---\nAlternate route: `/dev/universe/ids/`\n\nAlternate route: `/legacy/universe/ids/`\n\nAlternate route: `/v1/universe/ids/`\n","operationId":"post_universe_ids","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/language"},{"description":"The names to resolve","in":"body","name":"names","required":true,"schema":{"description":"names array","example":["CCP Zoetrope"],"items":{"description":"name string","maxLength":100,"minLength":1,"title":"post_universe_ids_name","type":"string"},"maxItems":500,"minItems":1,"title":"post_universe_ids_names","type":"array","uniqueItems":true}}],"responses":{"200":{"description":"List of id/name associations for a set of names divided by category. Any name passed in that did not have a match will be ommitted","examples":{"application/json":{"characters":[{"id":95465499,"name":"CCP Bartender"},{"id":2112625428,"name":"CCP Zoetrope"}],"systems":[{"id":30000142,"name":"Jita"}]}},"headers":{"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"}},"schema":{"description":"200 ok object","properties":{"agents":{"description":"agents array","items":{"description":"agent object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_name","type":"string"}},"title":"post_universe_ids_agent","type":"object"},"maxItems":500,"title":"post_universe_ids_agents","type":"array"},"alliances":{"description":"alliances array","items":{"description":"alliance object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_alliance_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_alliance_name","type":"string"}},"title":"post_universe_ids_alliance","type":"object"},"maxItems":500,"title":"post_universe_ids_alliances","type":"array"},"characters":{"description":"characters array","items":{"description":"character object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_character_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_character_name","type":"string"}},"title":"post_universe_ids_character","type":"object"},"maxItems":500,"title":"post_universe_ids_characters","type":"array"},"constellations":{"description":"constellations array","items":{"description":"constellation object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_constellation_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_constellation_name","type":"string"}},"title":"post_universe_ids_constellation","type":"object"},"maxItems":500,"title":"post_universe_ids_constellations","type":"array"},"corporations":{"description":"corporations array","items":{"description":"corporation object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_corporation_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_corporation_name","type":"string"}},"title":"post_universe_ids_corporation","type":"object"},"maxItems":500,"title":"post_universe_ids_corporations","type":"array"},"factions":{"description":"factions array","items":{"description":"faction object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_faction_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_faction_name","type":"string"}},"title":"post_universe_ids_faction","type":"object"},"maxItems":500,"title":"post_universe_ids_factions","type":"array"},"inventory_types":{"description":"inventory_types array","items":{"description":"inventory_type object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_inventory_type_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_inventory_type_name","type":"string"}},"title":"post_universe_ids_inventory_type","type":"object"},"maxItems":500,"title":"post_universe_ids_inventory_types","type":"array"},"regions":{"description":"regions array","items":{"description":"region object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_region_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_region_name","type":"string"}},"title":"post_universe_ids_region","type":"object"},"maxItems":500,"title":"post_universe_ids_regions","type":"array"},"stations":{"description":"stations array","items":{"description":"station object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_station_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_station_name","type":"string"}},"title":"post_universe_ids_station","type":"object"},"maxItems":500,"title":"post_universe_ids_stations","type":"array"},"systems":{"description":"systems array","items":{"description":"system object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_system_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_system_name","type":"string"}},"title":"post_universe_ids_system","type":"object"},"maxItems":500,"title":"post_universe_ids_systems","type":"array"}},"title":"post_universe_ids_ok","type":"object"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Bulk names to IDs","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/moons/{moon_id}/":{"get":{"description":"Get information on a moon\n\n---\nAlternate route: `/dev/universe/moons/{moon_id}/`\n\nAlternate route: `/legacy/universe/moons/{moon_id}/`\n\nAlternate route: `/v1/universe/moons/{moon_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_moons_moon_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"moon_id integer","format":"int32","in":"path","name":"moon_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a moon","examples":{"application/json":{"moon_id":40000042,"name":"Akpivem I - Moon 1","position":{"x":58605102008,"y":-3066616285,"z":-55193617920},"system_id":30000003}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"moon_id":{"description":"moon_id integer","format":"int32","title":"get_universe_moons_moon_id_moon_id","type":"integer"},"name":{"description":"name string","title":"get_universe_moons_moon_id_name","type":"string"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_moons_moon_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_moons_moon_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_moons_moon_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_moons_moon_id_position","type":"object"},"system_id":{"description":"The solar system this moon is in","format":"int32","title":"get_universe_moons_moon_id_system_id","type":"integer"}},"required":["moon_id","name","position","system_id"],"title":"get_universe_moons_moon_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Moon not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_moons_moon_id_404_not_found","type":"string"}},"title":"get_universe_moons_moon_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get moon information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/names/":{"post":{"description":"Resolve a set of IDs to names and categories. Supported ID's for resolving are: Characters, Corporations, Alliances, Stations, Solar Systems, Constellations, Regions, Types, Factions\n\n---\nAlternate route: `/dev/universe/names/`\n\nAlternate route: `/v3/universe/names/`\n","operationId":"post_universe_names","parameters":[{"$ref":"#/parameters/datasource"},{"description":"The ids to resolve","in":"body","name":"ids","required":true,"schema":{"description":"ids array","example":[95465499,30000142],"items":{"description":"id integer","format":"int32","title":"post_universe_names_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_universe_names_ids","type":"array","uniqueItems":true}}],"responses":{"200":{"description":"List of id/name associations for a set of IDs. All IDs must resolve to a name, or nothing will be returned","examples":{"application/json":[{"category":"character","id":95465499,"name":"CCP Bartender"},{"category":"solar_system","id":30000142,"name":"Jita"}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"category":{"description":"category string","enum":["alliance","character","constellation","corporation","inventory_type","region","solar_system","station","faction"],"title":"post_universe_names_category","type":"string"},"id":{"description":"id integer","format":"int32","title":"post_universe_names_id","type":"integer"},"name":{"description":"name string","title":"post_universe_names_name","type":"string"}},"required":["id","name","category"],"title":"post_universe_names_200_ok","type":"object"},"maxItems":1000,"title":"post_universe_names_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Ensure all IDs are valid before resolving","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_universe_names_404_not_found","type":"string"}},"title":"post_universe_names_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get names and categories for a set of IDs","tags":["Universe"],"x-alternate-versions":["dev","v3"]}},"/universe/planets/{planet_id}/":{"get":{"description":"Get information on a planet\n\n---\nAlternate route: `/dev/universe/planets/{planet_id}/`\n\nAlternate route: `/legacy/universe/planets/{planet_id}/`\n\nAlternate route: `/v1/universe/planets/{planet_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_planets_planet_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"planet_id integer","format":"int32","in":"path","name":"planet_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a planet","examples":{"application/json":{"name":"Akpivem III","planet_id":40000046,"position":{"x":-189226344497,"y":9901605317,"z":-254852632979},"system_id":30000003,"type_id":13}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"name":{"description":"name string","title":"get_universe_planets_planet_id_name","type":"string"},"planet_id":{"description":"planet_id integer","format":"int32","title":"get_universe_planets_planet_id_planet_id","type":"integer"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_planets_planet_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_planets_planet_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_planets_planet_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_planets_planet_id_position","type":"object"},"system_id":{"description":"The solar system this planet is in","format":"int32","title":"get_universe_planets_planet_id_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_planets_planet_id_type_id","type":"integer"}},"required":["planet_id","name","type_id","position","system_id"],"title":"get_universe_planets_planet_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Planet not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_planets_planet_id_404_not_found","type":"string"}},"title":"get_universe_planets_planet_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get planet information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/races/":{"get":{"description":"Get a list of character races\n\n---\nAlternate route: `/dev/universe/races/`\n\nAlternate route: `/legacy/universe/races/`\n\nAlternate route: `/v1/universe/races/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_races","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of character races","examples":{"application/json":[{"alliance_id":500001,"description":"Founded on the tenets of patriotism and hard work...","name":"Caldari","race_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"The alliance generally associated with this race","format":"int32","title":"get_universe_races_alliance_id","type":"integer"},"description":{"description":"description string","title":"get_universe_races_description","type":"string"},"name":{"description":"name string","title":"get_universe_races_name","type":"string"},"race_id":{"description":"race_id integer","format":"int32","title":"get_universe_races_race_id","type":"integer"}},"required":["race_id","name","description","alliance_id"],"title":"get_universe_races_200_ok","type":"object"},"maxItems":4,"title":"get_universe_races_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get character races","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/regions/":{"get":{"description":"Get a list of regions\n\n---\nAlternate route: `/dev/universe/regions/`\n\nAlternate route: `/legacy/universe/regions/`\n\nAlternate route: `/v1/universe/regions/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_regions","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of region ids","examples":{"application/json":[11000001,11000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_regions_200_ok","type":"integer"},"maxItems":1000,"title":"get_universe_regions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get regions","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/regions/{region_id}/":{"get":{"description":"Get information on a region\n\n---\nAlternate route: `/dev/universe/regions/{region_id}/`\n\nAlternate route: `/legacy/universe/regions/{region_id}/`\n\nAlternate route: `/v1/universe/regions/{region_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_regions_region_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"region_id integer","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a region","examples":{"application/json":{"constellations":[20000302,20000303],"description":"It has long been an established fact of civilization...","name":"Metropolis","region_id":10000042}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"constellations":{"description":"constellations array","items":{"description":"constellation integer","format":"int32","title":"get_universe_regions_region_id_constellation","type":"integer"},"maxItems":1000,"title":"get_universe_regions_region_id_constellations","type":"array"},"description":{"description":"description string","title":"get_universe_regions_region_id_description","type":"string"},"name":{"description":"name string","title":"get_universe_regions_region_id_name","type":"string"},"region_id":{"description":"region_id integer","format":"int32","title":"get_universe_regions_region_id_region_id","type":"integer"}},"required":["region_id","name","constellations"],"title":"get_universe_regions_region_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Region not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_regions_region_id_404_not_found","type":"string"}},"title":"get_universe_regions_region_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get region information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/schematics/{schematic_id}/":{"get":{"description":"Get information on a planetary factory schematic\n\n---\nAlternate route: `/dev/universe/schematics/{schematic_id}/`\n\nAlternate route: `/legacy/universe/schematics/{schematic_id}/`\n\nAlternate route: `/v1/universe/schematics/{schematic_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_schematics_schematic_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"A PI schematic ID","format":"int32","in":"path","name":"schematic_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Public data about a schematic","examples":{"application/json":{"cycle_time":1800,"schematic_name":"Bacteria"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"cycle_time":{"description":"Time in seconds to process a run","format":"int32","title":"get_universe_schematics_schematic_id_cycle_time","type":"integer"},"schematic_name":{"description":"schematic_name string","title":"get_universe_schematics_schematic_id_schematic_name","type":"string"}},"required":["schematic_name","cycle_time"],"title":"get_universe_schematics_schematic_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Schematic not found","examples":{"application/json":{"error":"Schematic not found"}},"schema":{"description":"Schematic not found","properties":{"error":{"description":"error message","title":"get_universe_schematics_schematic_id_error","type":"string"}},"title":"get_universe_schematics_schematic_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get schematic information","tags":["Planetary Interaction"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/universe/stargates/{stargate_id}/":{"get":{"description":"Get information on a stargate\n\n---\nAlternate route: `/dev/universe/stargates/{stargate_id}/`\n\nAlternate route: `/legacy/universe/stargates/{stargate_id}/`\n\nAlternate route: `/v1/universe/stargates/{stargate_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_stargates_stargate_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"stargate_id integer","format":"int32","in":"path","name":"stargate_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a stargate","examples":{"application/json":{"destination":{"stargate_id":50000056,"system_id":30000001},"name":"Stargate (Tanoo)","position":{"x":-101092761600,"y":5279539200,"z":1550503403520},"stargate_id":50000342,"system_id":30000003,"type_id":29624}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"destination":{"description":"destination object","properties":{"stargate_id":{"description":"The stargate this stargate connects to","format":"int32","title":"get_universe_stargates_stargate_id_destination_stargate_id","type":"integer"},"system_id":{"description":"The solar system this stargate connects to","format":"int32","title":"get_universe_stargates_stargate_id_destination_system_id","type":"integer"}},"required":["system_id","stargate_id"],"title":"get_universe_stargates_stargate_id_destination","type":"object"},"name":{"description":"name string","title":"get_universe_stargates_stargate_id_name","type":"string"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_stargates_stargate_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_stargates_stargate_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_stargates_stargate_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_stargates_stargate_id_position","type":"object"},"stargate_id":{"description":"stargate_id integer","format":"int32","title":"get_universe_stargates_stargate_id_stargate_id","type":"integer"},"system_id":{"description":"The solar system this stargate is in","format":"int32","title":"get_universe_stargates_stargate_id_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_stargates_stargate_id_type_id","type":"integer"}},"required":["stargate_id","name","type_id","position","system_id","destination"],"title":"get_universe_stargates_stargate_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Stargate not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_stargates_stargate_id_404_not_found","type":"string"}},"title":"get_universe_stargates_stargate_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get stargate information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/stars/{star_id}/":{"get":{"description":"Get information on a star\n\n---\nAlternate route: `/dev/universe/stars/{star_id}/`\n\nAlternate route: `/legacy/universe/stars/{star_id}/`\n\nAlternate route: `/v1/universe/stars/{star_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_stars_star_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"star_id integer","format":"int32","in":"path","name":"star_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a star","examples":{"application/json":{"age":9398686722,"luminosity":0.06615000218153,"name":"BKG-Q2 - Star","radius":346600000,"solar_system_id":30004333,"spectral_class":"K2 V","temperature":3953,"type_id":45033}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"age":{"description":"Age of star in years","format":"int64","title":"get_universe_stars_star_id_age","type":"integer"},"luminosity":{"description":"luminosity number","format":"float","title":"get_universe_stars_star_id_luminosity","type":"number"},"name":{"description":"name string","title":"get_universe_stars_star_id_name","type":"string"},"radius":{"description":"radius integer","format":"int64","title":"get_universe_stars_star_id_radius","type":"integer"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_universe_stars_star_id_solar_system_id","type":"integer"},"spectral_class":{"description":"spectral_class string","enum":["K2 V","K4 V","G2 V","G8 V","M7 V","K7 V","M2 V","K5 V","M3 V","G0 V","G7 V","G3 V","F9 V","G5 V","F6 V","K8 V","K9 V","K6 V","G9 V","G6 V","G4 VI","G4 V","F8 V","F2 V","F1 V","K3 V","F0 VI","G1 VI","G0 VI","K1 V","M4 V","M1 V","M6 V","M0 V","K2 IV","G2 VI","K0 V","K5 IV","F5 VI","G6 VI","F6 VI","F2 IV","G3 VI","M8 V","F1 VI","K1 IV","F7 V","G5 VI","M5 V","G7 VI","F5 V","F4 VI","F8 VI","K3 IV","F4 IV","F0 V","G7 IV","G8 VI","F2 VI","F4 V","F7 VI","F3 V","G1 V","G9 VI","F3 IV","F9 VI","M9 V","K0 IV","F1 IV","G4 IV","F3 VI","K4 IV","G5 IV","G3 IV","G1 IV","K7 IV","G0 IV","K6 IV","K9 IV","G2 IV","F9 IV","F0 IV","K8 IV","G8 IV","F6 IV","F5 IV","A0","A0IV","A0IV2"],"title":"get_universe_stars_star_id_spectral_class","type":"string"},"temperature":{"description":"temperature integer","format":"int32","title":"get_universe_stars_star_id_temperature","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_stars_star_id_type_id","type":"integer"}},"required":["name","type_id","age","luminosity","radius","spectral_class","temperature","solar_system_id"],"title":"get_universe_stars_star_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get star information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/stations/{station_id}/":{"get":{"description":"Get information on a station\n\n---\nAlternate route: `/dev/universe/stations/{station_id}/`\n\nAlternate route: `/v2/universe/stations/{station_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_stations_station_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"station_id integer","format":"int32","in":"path","name":"station_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a station","examples":{"application/json":{"max_dockable_ship_volume":50000000,"name":"Jakanerva III - Moon 15 - Prompt Delivery Storage","office_rental_cost":10000,"owner":1000003,"position":{"x":165632286720,"y":2771804160,"z":-2455331266560},"race_id":1,"reprocessing_efficiency":0.5,"reprocessing_stations_take":0.05,"services":["courier-missions","reprocessing-plant","market","repair-facilities","fitting","news","storage","insurance","docking","office-rental","loyalty-point-store","navy-offices"],"station_id":60000277,"system_id":30000148,"type_id":1531}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"max_dockable_ship_volume":{"description":"max_dockable_ship_volume number","format":"float","title":"get_universe_stations_station_id_max_dockable_ship_volume","type":"number"},"name":{"description":"name string","title":"get_universe_stations_station_id_name","type":"string"},"office_rental_cost":{"description":"office_rental_cost number","format":"float","title":"get_universe_stations_station_id_office_rental_cost","type":"number"},"owner":{"description":"ID of the corporation that controls this station","format":"int32","title":"get_universe_stations_station_id_owner","type":"integer"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_stations_station_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_stations_station_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_stations_station_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_stations_station_id_position","type":"object"},"race_id":{"description":"race_id integer","format":"int32","title":"get_universe_stations_station_id_race_id","type":"integer"},"reprocessing_efficiency":{"description":"reprocessing_efficiency number","format":"float","title":"get_universe_stations_station_id_reprocessing_efficiency","type":"number"},"reprocessing_stations_take":{"description":"reprocessing_stations_take number","format":"float","title":"get_universe_stations_station_id_reprocessing_stations_take","type":"number"},"services":{"description":"services array","items":{"description":"service string","enum":["bounty-missions","assasination-missions","courier-missions","interbus","reprocessing-plant","refinery","market","black-market","stock-exchange","cloning","surgery","dna-therapy","repair-facilities","factory","labratory","gambling","fitting","paintshop","news","storage","insurance","docking","office-rental","jump-clone-facility","loyalty-point-store","navy-offices","security-offices"],"title":"get_universe_stations_station_id_service","type":"string"},"maxItems":30,"title":"get_universe_stations_station_id_services","type":"array"},"station_id":{"description":"station_id integer","format":"int32","title":"get_universe_stations_station_id_station_id","type":"integer"},"system_id":{"description":"The solar system this station is in","format":"int32","title":"get_universe_stations_station_id_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_stations_station_id_type_id","type":"integer"}},"required":["station_id","name","type_id","position","system_id","reprocessing_efficiency","reprocessing_stations_take","max_dockable_ship_volume","office_rental_cost","services"],"title":"get_universe_stations_station_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Station not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_stations_station_id_404_not_found","type":"string"}},"title":"get_universe_stations_station_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get station information","tags":["Universe"],"x-alternate-versions":["dev","v2"]}},"/universe/structures/":{"get":{"description":"List all public structures\n\n---\nAlternate route: `/dev/universe/structures/`\n\nAlternate route: `/legacy/universe/structures/`\n\nAlternate route: `/v1/universe/structures/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_structures","parameters":[{"$ref":"#/parameters/datasource"},{"description":"Only list public structures that have this service online","enum":["market","manufacturing_basic"],"in":"query","name":"filter","required":false,"type":"string"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"List of public structure IDs","examples":{"application/json":[1020988381992,1020988381991]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int64","minimum":0,"title":"get_universe_structures_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_structures_ok","type":"array","uniqueItems":true}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List all public structures","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/universe/structures/{structure_id}/":{"get":{"description":"Returns information on requested structure if you are on the ACL. Otherwise, returns \"Forbidden\" for all inputs.\n\n---\nAlternate route: `/dev/universe/structures/{structure_id}/`\n\nAlternate route: `/v2/universe/structures/{structure_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_structures_structure_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"An Eve structure ID","format":"int64","in":"path","name":"structure_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Data about a structure","examples":{"application/json":{"name":"V-3YG7 VI - The Capital","owner_id":109299958,"solar_system_id":30000142}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"name":{"description":"The full name of the structure","title":"get_universe_structures_structure_id_name","type":"string"},"owner_id":{"description":"The ID of the corporation who owns this particular structure","format":"int32","title":"get_universe_structures_structure_id_owner_id","type":"integer"},"position":{"description":"Coordinates of the structure in Cartesian space relative to the Sun, in metres.\n","properties":{"x":{"description":"x number","format":"double","title":"get_universe_structures_structure_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_structures_structure_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_structures_structure_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_structures_structure_id_position","type":"object"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_universe_structures_structure_id_solar_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_structures_structure_id_type_id","type":"integer"}},"required":["name","solar_system_id","owner_id"],"title":"get_universe_structures_structure_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Structure not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_structures_structure_id_404_not_found","type":"string"}},"title":"get_universe_structures_structure_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-universe.read_structures.v1"]}],"summary":"Get structure information","tags":["Universe"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/universe/system_jumps/":{"get":{"description":"Get the number of jumps in solar systems within the last hour ending at the timestamp of the Last-Modified header, excluding wormhole space. Only systems with jumps will be listed\n\n---\nAlternate route: `/dev/universe/system_jumps/`\n\nAlternate route: `/legacy/universe/system_jumps/`\n\nAlternate route: `/v1/universe/system_jumps/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_system_jumps","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of systems and number of jumps","examples":{"application/json":[{"ship_jumps":42,"system_id":30002410}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"ship_jumps":{"description":"ship_jumps integer","format":"int32","title":"get_universe_system_jumps_ship_jumps","type":"integer"},"system_id":{"description":"system_id integer","format":"int32","title":"get_universe_system_jumps_system_id","type":"integer"}},"required":["system_id","ship_jumps"],"title":"get_universe_system_jumps_200_ok","type":"object"},"maxItems":10000,"title":"get_universe_system_jumps_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get system jumps","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/universe/system_kills/":{"get":{"description":"Get the number of ship, pod and NPC kills per solar system within the last hour ending at the timestamp of the Last-Modified header, excluding wormhole space. Only systems with kills will be listed\n\n---\nAlternate route: `/dev/universe/system_kills/`\n\nAlternate route: `/v2/universe/system_kills/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_system_kills","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of systems and number of ship, pod and NPC kills","examples":{"application/json":[{"npc_kills":0,"pod_kills":24,"ship_kills":42,"system_id":30002410}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"npc_kills":{"description":"Number of NPC ships killed in this system","format":"int32","title":"get_universe_system_kills_npc_kills","type":"integer"},"pod_kills":{"description":"Number of pods killed in this system","format":"int32","title":"get_universe_system_kills_pod_kills","type":"integer"},"ship_kills":{"description":"Number of player ships killed in this system","format":"int32","title":"get_universe_system_kills_ship_kills","type":"integer"},"system_id":{"description":"system_id integer","format":"int32","title":"get_universe_system_kills_system_id","type":"integer"}},"required":["system_id","ship_kills","npc_kills","pod_kills"],"title":"get_universe_system_kills_200_ok","type":"object"},"maxItems":10000,"title":"get_universe_system_kills_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get system kills","tags":["Universe"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/universe/systems/":{"get":{"description":"Get a list of solar systems\n\n---\nAlternate route: `/dev/universe/systems/`\n\nAlternate route: `/legacy/universe/systems/`\n\nAlternate route: `/v1/universe/systems/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_systems","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of solar system ids","examples":{"application/json":[30000001,30000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_systems_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_systems_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get solar systems","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/systems/{system_id}/":{"get":{"description":"Get information on a solar system.\n\n---\nAlternate route: `/dev/universe/systems/{system_id}/`\n\nAlternate route: `/v4/universe/systems/{system_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_systems_system_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"system_id integer","format":"int32","in":"path","name":"system_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a solar system","examples":{"application/json":{"constellation_id":20000001,"name":"Akpivem","planets":[{"moons":[40000042],"planet_id":40000041},{"planet_id":40000043}],"position":{"x":-91174141133075340,"y":43938227486247170,"z":-56482824383339900},"security_class":"B","security_status":0.8462923765182495,"star_id":40000040,"stargates":[50000342],"system_id":30000003}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"constellation_id":{"description":"The constellation this solar system is in","format":"int32","title":"get_universe_systems_system_id_constellation_id","type":"integer"},"name":{"description":"name string","title":"get_universe_systems_system_id_name","type":"string"},"planets":{"description":"planets array","items":{"description":"planet object","properties":{"asteroid_belts":{"description":"asteroid_belts array","items":{"description":"asteroid_belt integer","format":"int32","title":"get_universe_systems_system_id_asteroid_belt","type":"integer"},"maxItems":100,"title":"get_universe_systems_system_id_asteroid_belts","type":"array"},"moons":{"description":"moons array","items":{"description":"moon integer","format":"int32","title":"get_universe_systems_system_id_moon","type":"integer"},"maxItems":1000,"title":"get_universe_systems_system_id_moons","type":"array"},"planet_id":{"description":"planet_id integer","format":"int32","title":"get_universe_systems_system_id_planet_id","type":"integer"}},"required":["planet_id"],"title":"get_universe_systems_system_id_planet","type":"object"},"maxItems":1000,"title":"get_universe_systems_system_id_planets","type":"array"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_systems_system_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_systems_system_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_systems_system_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_systems_system_id_position","type":"object"},"security_class":{"description":"security_class string","title":"get_universe_systems_system_id_security_class","type":"string"},"security_status":{"description":"security_status number","format":"float","title":"get_universe_systems_system_id_security_status","type":"number"},"star_id":{"description":"star_id integer","format":"int32","title":"get_universe_systems_system_id_star_id","type":"integer"},"stargates":{"description":"stargates array","items":{"description":"stargate integer","format":"int32","title":"get_universe_systems_system_id_stargate","type":"integer"},"maxItems":25,"title":"get_universe_systems_system_id_stargates","type":"array"},"stations":{"description":"stations array","items":{"description":"station integer","format":"int32","title":"get_universe_systems_system_id_station","type":"integer"},"maxItems":25,"title":"get_universe_systems_system_id_stations","type":"array"},"system_id":{"description":"system_id integer","format":"int32","title":"get_universe_systems_system_id_system_id","type":"integer"}},"required":["system_id","name","position","security_status","constellation_id"],"title":"get_universe_systems_system_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Solar system not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_systems_system_id_404_not_found","type":"string"}},"title":"get_universe_systems_system_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get solar system information","tags":["Universe"],"x-alternate-versions":["dev","v4"]}},"/universe/types/":{"get":{"description":"Get a list of type ids\n\n---\nAlternate route: `/dev/universe/types/`\n\nAlternate route: `/legacy/universe/types/`\n\nAlternate route: `/v1/universe/types/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_types","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"}],"responses":{"200":{"description":"A list of type ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_types_200_ok","type":"integer"},"maxItems":1000,"title":"get_universe_types_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get types","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/types/{type_id}/":{"get":{"description":"Get information on a type\n\n---\nAlternate route: `/dev/universe/types/{type_id}/`\n\nAlternate route: `/v3/universe/types/{type_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_types_type_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"An Eve item type ID","format":"int32","in":"path","name":"type_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a type","examples":{"application/json":{"description":"The Rifter is a...","group_id":25,"name":"Rifter","published":true,"type_id":587}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"capacity":{"description":"capacity number","format":"float","title":"get_universe_types_type_id_capacity","type":"number"},"description":{"description":"description string","title":"get_universe_types_type_id_description","type":"string"},"dogma_attributes":{"description":"dogma_attributes array","items":{"description":"dogma_attribute object","properties":{"attribute_id":{"description":"attribute_id integer","format":"int32","title":"get_universe_types_type_id_attribute_id","type":"integer"},"value":{"description":"value number","format":"float","title":"get_universe_types_type_id_value","type":"number"}},"required":["attribute_id","value"],"title":"get_universe_types_type_id_dogma_attribute","type":"object"},"maxItems":1000,"title":"get_universe_types_type_id_dogma_attributes","type":"array"},"dogma_effects":{"description":"dogma_effects array","items":{"description":"dogma_effect object","properties":{"effect_id":{"description":"effect_id integer","format":"int32","title":"get_universe_types_type_id_effect_id","type":"integer"},"is_default":{"description":"is_default boolean","title":"get_universe_types_type_id_is_default","type":"boolean"}},"required":["effect_id","is_default"],"title":"get_universe_types_type_id_dogma_effect","type":"object"},"maxItems":1000,"title":"get_universe_types_type_id_dogma_effects","type":"array"},"graphic_id":{"description":"graphic_id integer","format":"int32","title":"get_universe_types_type_id_graphic_id","type":"integer"},"group_id":{"description":"group_id integer","format":"int32","title":"get_universe_types_type_id_group_id","type":"integer"},"icon_id":{"description":"icon_id integer","format":"int32","title":"get_universe_types_type_id_icon_id","type":"integer"},"market_group_id":{"description":"This only exists for types that can be put on the market","format":"int32","title":"get_universe_types_type_id_market_group_id","type":"integer"},"mass":{"description":"mass number","format":"float","title":"get_universe_types_type_id_mass","type":"number"},"name":{"description":"name string","title":"get_universe_types_type_id_name","type":"string"},"packaged_volume":{"description":"packaged_volume number","format":"float","title":"get_universe_types_type_id_packaged_volume","type":"number"},"portion_size":{"description":"portion_size integer","format":"int32","title":"get_universe_types_type_id_portion_size","type":"integer"},"published":{"description":"published boolean","title":"get_universe_types_type_id_published","type":"boolean"},"radius":{"description":"radius number","format":"float","title":"get_universe_types_type_id_radius","type":"number"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_types_type_id_type_id","type":"integer"},"volume":{"description":"volume number","format":"float","title":"get_universe_types_type_id_volume","type":"number"}},"required":["type_id","name","description","published","group_id"],"title":"get_universe_types_type_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Type not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_types_type_id_404_not_found","type":"string"}},"title":"get_universe_types_type_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get type information","tags":["Universe"],"x-alternate-versions":["dev","v3"]}},"/wars/":{"get":{"description":"Return a list of wars\n\n---\nAlternate route: `/dev/wars/`\n\nAlternate route: `/legacy/wars/`\n\nAlternate route: `/v1/wars/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_wars","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Only return wars with ID smaller than this","format":"int32","in":"query","name":"max_war_id","required":false,"type":"integer"}],"responses":{"200":{"description":"A list of war IDs, in descending order by war_id","examples":{"application/json":[3,2,1]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_wars_200_ok","type":"integer"},"maxItems":2000,"title":"get_wars_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List wars","tags":["Wars"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/wars/{war_id}/":{"get":{"description":"Return details about a war\n\n---\nAlternate route: `/dev/wars/{war_id}/`\n\nAlternate route: `/legacy/wars/{war_id}/`\n\nAlternate route: `/v1/wars/{war_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_wars_war_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"ID for a war","format":"int32","in":"path","minimum":1,"name":"war_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Details about a war","examples":{"application/json":{"aggressor":{"corporation_id":986665792,"isk_destroyed":0,"ships_killed":0},"declared":"2004-05-22T05:20:00Z","defender":{"corporation_id":1001562011,"isk_destroyed":0,"ships_killed":0},"id":1941,"mutual":false,"open_for_allies":false}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"aggressor":{"description":"The aggressor corporation or alliance that declared this war, only contains either corporation_id or alliance_id","properties":{"alliance_id":{"description":"Alliance ID if and only if the aggressor is an alliance","format":"int32","title":"get_wars_war_id_alliance_id","type":"integer"},"corporation_id":{"description":"Corporation ID if and only if the aggressor is a corporation","format":"int32","title":"get_wars_war_id_corporation_id","type":"integer"},"isk_destroyed":{"description":"ISK value of ships the aggressor has destroyed","format":"float","title":"get_wars_war_id_isk_destroyed","type":"number"},"ships_killed":{"description":"The number of ships the aggressor has killed","format":"int32","title":"get_wars_war_id_ships_killed","type":"integer"}},"required":["ships_killed","isk_destroyed"],"title":"get_wars_war_id_aggressor","type":"object"},"allies":{"description":"allied corporations or alliances, each object contains either corporation_id or alliance_id","items":{"description":"ally object","properties":{"alliance_id":{"description":"Alliance ID if and only if this ally is an alliance","format":"int32","title":"get_wars_war_id_ally_alliance_id","type":"integer"},"corporation_id":{"description":"Corporation ID if and only if this ally is a corporation","format":"int32","title":"get_wars_war_id_ally_corporation_id","type":"integer"}},"title":"get_wars_war_id_ally","type":"object"},"maxItems":10000,"title":"get_wars_war_id_allies","type":"array"},"declared":{"description":"Time that the war was declared","format":"date-time","title":"get_wars_war_id_declared","type":"string"},"defender":{"description":"The defending corporation or alliance that declared this war, only contains either corporation_id or alliance_id","properties":{"alliance_id":{"description":"Alliance ID if and only if the defender is an alliance","format":"int32","title":"get_wars_war_id_defender_alliance_id","type":"integer"},"corporation_id":{"description":"Corporation ID if and only if the defender is a corporation","format":"int32","title":"get_wars_war_id_defender_corporation_id","type":"integer"},"isk_destroyed":{"description":"ISK value of ships the defender has killed","format":"float","title":"get_wars_war_id_defender_isk_destroyed","type":"number"},"ships_killed":{"description":"The number of ships the defender has killed","format":"int32","title":"get_wars_war_id_defender_ships_killed","type":"integer"}},"required":["ships_killed","isk_destroyed"],"title":"get_wars_war_id_defender","type":"object"},"finished":{"description":"Time the war ended and shooting was no longer allowed","format":"date-time","title":"get_wars_war_id_finished","type":"string"},"id":{"description":"ID of the specified war","format":"int32","title":"get_wars_war_id_id","type":"integer"},"mutual":{"description":"Was the war declared mutual by both parties","title":"get_wars_war_id_mutual","type":"boolean"},"open_for_allies":{"description":"Is the war currently open for allies or not","title":"get_wars_war_id_open_for_allies","type":"boolean"},"retracted":{"description":"Time the war was retracted but both sides could still shoot each other","format":"date-time","title":"get_wars_war_id_retracted","type":"string"},"started":{"description":"Time when the war started and both sides could shoot each other","format":"date-time","title":"get_wars_war_id_started","type":"string"}},"required":["id","declared","mutual","open_for_allies","aggressor","defender"],"title":"get_wars_war_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"War not found","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_wars_war_id_422_unprocessable_entity","type":"string"}},"title":"get_wars_war_id_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get war information","tags":["Wars"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/wars/{war_id}/killmails/":{"get":{"description":"Return a list of kills related to a war\n\n---\nAlternate route: `/dev/wars/{war_id}/killmails/`\n\nAlternate route: `/legacy/wars/{war_id}/killmails/`\n\nAlternate route: `/v1/wars/{war_id}/killmails/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_wars_war_id_killmails","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"description":"A valid war ID","format":"int32","in":"path","minimum":1,"name":"war_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A list of killmail IDs and hashes","examples":{"application/json":[{"killmail_hash":"8eef5e8fb6b88fe3407c489df33822b2e3b57a5e","killmail_id":2},{"killmail_hash":"b41ccb498ece33d64019f64c0db392aa3aa701fb","killmail_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"killmail_hash":{"description":"A hash of this killmail","title":"get_wars_war_id_killmails_killmail_hash","type":"string"},"killmail_id":{"description":"ID of this killmail","format":"int32","title":"get_wars_war_id_killmails_killmail_id","type":"integer"}},"required":["killmail_id","killmail_hash"],"title":"get_wars_war_id_killmails_200_ok","type":"object"},"maxItems":2000,"title":"get_wars_war_id_killmails_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"War not found","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_wars_war_id_killmails_422_unprocessable_entity","type":"string"}},"title":"get_wars_war_id_killmails_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List kills for a war","tags":["Wars"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}}},"produces":["application/json"],"schemes":["https"],"securityDefinitions":{"evesso":{"authorizationUrl":"https://login.eveonline.com/v2/oauth/authorize","flow":"implicit","scopes":{"esi-alliances.read_contacts.v1":"EVE SSO scope esi-alliances.read_contacts.v1","esi-assets.read_assets.v1":"EVE SSO scope esi-assets.read_assets.v1","esi-assets.read_corporation_assets.v1":"EVE SSO scope esi-assets.read_corporation_assets.v1","esi-bookmarks.read_character_bookmarks.v1":"EVE SSO scope esi-bookmarks.read_character_bookmarks.v1","esi-bookmarks.read_corporation_bookmarks.v1":"EVE SSO scope esi-bookmarks.read_corporation_bookmarks.v1","esi-calendar.read_calendar_events.v1":"EVE SSO scope esi-calendar.read_calendar_events.v1","esi-calendar.respond_calendar_events.v1":"EVE SSO scope esi-calendar.respond_calendar_events.v1","esi-characters.read_agents_research.v1":"EVE SSO scope esi-characters.read_agents_research.v1","esi-characters.read_blueprints.v1":"EVE SSO scope esi-characters.read_blueprints.v1","esi-characters.read_contacts.v1":"EVE SSO scope esi-characters.read_contacts.v1","esi-characters.read_corporation_roles.v1":"EVE SSO scope esi-characters.read_corporation_roles.v1","esi-characters.read_fatigue.v1":"EVE SSO scope esi-characters.read_fatigue.v1","esi-characters.read_fw_stats.v1":"EVE SSO scope esi-characters.read_fw_stats.v1","esi-characters.read_loyalty.v1":"EVE SSO scope esi-characters.read_loyalty.v1","esi-characters.read_medals.v1":"EVE SSO scope esi-characters.read_medals.v1","esi-characters.read_notifications.v1":"EVE SSO scope esi-characters.read_notifications.v1","esi-characters.read_opportunities.v1":"EVE SSO scope esi-characters.read_opportunities.v1","esi-characters.read_standings.v1":"EVE SSO scope esi-characters.read_standings.v1","esi-characters.read_titles.v1":"EVE SSO scope esi-characters.read_titles.v1","esi-characters.write_contacts.v1":"EVE SSO scope esi-characters.write_contacts.v1","esi-characterstats.read.v1":"EVE SSO scope esi-characterstats.read.v1","esi-clones.read_clones.v1":"EVE SSO scope esi-clones.read_clones.v1","esi-clones.read_implants.v1":"EVE SSO scope esi-clones.read_implants.v1","esi-contracts.read_character_contracts.v1":"EVE SSO scope esi-contracts.read_character_contracts.v1","esi-contracts.read_corporation_contracts.v1":"EVE SSO scope esi-contracts.read_corporation_contracts.v1","esi-corporations.read_blueprints.v1":"EVE SSO scope esi-corporations.read_blueprints.v1","esi-corporations.read_contacts.v1":"EVE SSO scope esi-corporations.read_contacts.v1","esi-corporations.read_container_logs.v1":"EVE SSO scope esi-corporations.read_container_logs.v1","esi-corporations.read_corporation_membership.v1":"EVE SSO scope esi-corporations.read_corporation_membership.v1","esi-corporations.read_divisions.v1":"EVE SSO scope esi-corporations.read_divisions.v1","esi-corporations.read_facilities.v1":"EVE SSO scope esi-corporations.read_facilities.v1","esi-corporations.read_fw_stats.v1":"EVE SSO scope esi-corporations.read_fw_stats.v1","esi-corporations.read_medals.v1":"EVE SSO scope esi-corporations.read_medals.v1","esi-corporations.read_standings.v1":"EVE SSO scope esi-corporations.read_standings.v1","esi-corporations.read_starbases.v1":"EVE SSO scope esi-corporations.read_starbases.v1","esi-corporations.read_structures.v1":"EVE SSO scope esi-corporations.read_structures.v1","esi-corporations.read_titles.v1":"EVE SSO scope esi-corporations.read_titles.v1","esi-corporations.track_members.v1":"EVE SSO scope esi-corporations.track_members.v1","esi-fittings.read_fittings.v1":"EVE SSO scope esi-fittings.read_fittings.v1","esi-fittings.write_fittings.v1":"EVE SSO scope esi-fittings.write_fittings.v1","esi-fleets.read_fleet.v1":"EVE SSO scope esi-fleets.read_fleet.v1","esi-fleets.write_fleet.v1":"EVE SSO scope esi-fleets.write_fleet.v1","esi-industry.read_character_jobs.v1":"EVE SSO scope esi-industry.read_character_jobs.v1","esi-industry.read_character_mining.v1":"EVE SSO scope esi-industry.read_character_mining.v1","esi-industry.read_corporation_jobs.v1":"EVE SSO scope esi-industry.read_corporation_jobs.v1","esi-industry.read_corporation_mining.v1":"EVE SSO scope esi-industry.read_corporation_mining.v1","esi-killmails.read_corporation_killmails.v1":"EVE SSO scope esi-killmails.read_corporation_killmails.v1","esi-killmails.read_killmails.v1":"EVE SSO scope esi-killmails.read_killmails.v1","esi-location.read_location.v1":"EVE SSO scope esi-location.read_location.v1","esi-location.read_online.v1":"EVE SSO scope esi-location.read_online.v1","esi-location.read_ship_type.v1":"EVE SSO scope esi-location.read_ship_type.v1","esi-mail.organize_mail.v1":"EVE SSO scope esi-mail.organize_mail.v1","esi-mail.read_mail.v1":"EVE SSO scope esi-mail.read_mail.v1","esi-mail.send_mail.v1":"EVE SSO scope esi-mail.send_mail.v1","esi-markets.read_character_orders.v1":"EVE SSO scope esi-markets.read_character_orders.v1","esi-markets.read_corporation_orders.v1":"EVE SSO scope esi-markets.read_corporation_orders.v1","esi-markets.structure_markets.v1":"EVE SSO scope esi-markets.structure_markets.v1","esi-planets.manage_planets.v1":"EVE SSO scope esi-planets.manage_planets.v1","esi-planets.read_customs_offices.v1":"EVE SSO scope esi-planets.read_customs_offices.v1","esi-search.search_structures.v1":"EVE SSO scope esi-search.search_structures.v1","esi-skills.read_skillqueue.v1":"EVE SSO scope esi-skills.read_skillqueue.v1","esi-skills.read_skills.v1":"EVE SSO scope esi-skills.read_skills.v1","esi-ui.open_window.v1":"EVE SSO scope esi-ui.open_window.v1","esi-ui.write_waypoint.v1":"EVE SSO scope esi-ui.write_waypoint.v1","esi-universe.read_structures.v1":"EVE SSO scope esi-universe.read_structures.v1","esi-wallet.read_character_wallet.v1":"EVE SSO scope esi-wallet.read_character_wallet.v1","esi-wallet.read_corporation_wallets.v1":"EVE SSO scope esi-wallet.read_corporation_wallets.v1"},"type":"oauth2"}},"swagger":"2.0"} \ No newline at end of file +{"basePath":"/latest","consumes":["application/json"],"definitions":{"bad_request":{"description":"Bad request model","properties":{"error":{"description":"Bad request message","type":"string"}},"required":["error"],"title":"Bad request","type":"object"},"error_limited":{"description":"Error limited model","properties":{"error":{"description":"Error limited message","type":"string"}},"required":["error"],"title":"Error limited","type":"object"},"forbidden":{"description":"Forbidden model","properties":{"error":{"description":"Forbidden message","type":"string"},"sso_status":{"description":"status code received from SSO","type":"integer"}},"required":["error"],"title":"Forbidden","type":"object"},"gateway_timeout":{"description":"Gateway timeout model","properties":{"error":{"description":"Gateway timeout message","type":"string"},"timeout":{"description":"number of seconds the request was given","type":"integer"}},"required":["error"],"title":"Gateway timeout","type":"object"},"internal_server_error":{"description":"Internal server error model","properties":{"error":{"description":"Internal server error message","type":"string"}},"required":["error"],"title":"Internal server error","type":"object"},"service_unavailable":{"description":"Service unavailable model","properties":{"error":{"description":"Service unavailable message","type":"string"}},"required":["error"],"title":"Service unavailable","type":"object"},"unauthorized":{"description":"Unauthorized model","properties":{"error":{"description":"Unauthorized message","type":"string"}},"required":["error"],"title":"Unauthorized","type":"object"}},"host":"esi.evetech.net","info":{"description":"An OpenAPI for EVE Online","title":"EVE Swagger Interface","version":"1.3.8"},"parameters":{"Accept-Language":{"default":"en-us","description":"Language to use in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"in":"header","name":"Accept-Language","type":"string"},"If-None-Match":{"description":"ETag from a previous request. A 304 will be returned if this matches the current ETag","in":"header","name":"If-None-Match","type":"string"},"alliance_id":{"description":"An EVE alliance ID","format":"int32","in":"path","minimum":1,"name":"alliance_id","required":true,"type":"integer"},"character_id":{"description":"An EVE character ID","format":"int32","in":"path","minimum":1,"name":"character_id","required":true,"type":"integer"},"corporation_id":{"description":"An EVE corporation ID","format":"int32","in":"path","minimum":1,"name":"corporation_id","required":true,"type":"integer"},"datasource":{"default":"tranquility","description":"The server name you would like data from","enum":["tranquility"],"in":"query","name":"datasource","type":"string"},"language":{"default":"en-us","description":"Language to use in the response, takes precedence over Accept-Language","enum":["de","en-us","fr","ja","ru","zh","ko"],"in":"query","name":"language","type":"string"},"page":{"default":1,"description":"Which page of results to return","format":"int32","in":"query","minimum":1,"name":"page","type":"integer"},"token":{"description":"Access token to use if unable to set a header","in":"query","name":"token","type":"string"}},"paths":{"/alliances/":{"get":{"description":"List all active player alliances\n\n---\nAlternate route: `/dev/alliances/`\n\nAlternate route: `/legacy/alliances/`\n\nAlternate route: `/v1/alliances/`\n\nAlternate route: `/v2/alliances/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_alliances","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"List of Alliance IDs","examples":{"application/json":[99000001,99000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","minimum":0,"title":"get_alliances_200_ok","type":"integer","uniqueItems":true},"maxItems":5000,"title":"get_alliances_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List all alliances","tags":["Alliance"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":3600}},"/alliances/{alliance_id}/":{"get":{"description":"Public information about an alliance\n\n---\nAlternate route: `/dev/alliances/{alliance_id}/`\n\nAlternate route: `/v3/alliances/{alliance_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_alliances_alliance_id","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Public data about an alliance","examples":{"application/json":{"creator_corporation_id":45678,"creator_id":12345,"date_founded":"2016-06-26T21:00:00Z","executor_corporation_id":98356193,"name":"C C P Alliance","ticker":""}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"creator_corporation_id":{"description":"ID of the corporation that created the alliance","format":"int32","title":"get_alliances_alliance_id_creator_corporation_id","type":"integer"},"creator_id":{"description":"ID of the character that created the alliance","format":"int32","title":"get_alliances_alliance_id_creator_id","type":"integer"},"date_founded":{"description":"date_founded string","format":"date-time","title":"get_alliances_alliance_id_date_founded","type":"string"},"executor_corporation_id":{"description":"the executor corporation ID, if this alliance is not closed","format":"int32","title":"get_alliances_alliance_id_executor_corporation_id","type":"integer"},"faction_id":{"description":"Faction ID this alliance is fighting for, if this alliance is enlisted in factional warfare","format":"int32","title":"get_alliances_alliance_id_faction_id","type":"integer"},"name":{"description":"the full name of the alliance","title":"get_alliances_alliance_id_name","type":"string"},"ticker":{"description":"the short name of the alliance","title":"get_alliances_alliance_id_ticker","type":"string"}},"required":["name","creator_id","creator_corporation_id","ticker","date_founded"],"title":"get_alliances_alliance_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Alliance not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_alliances_alliance_id_404_not_found","type":"string"}},"title":"get_alliances_alliance_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get alliance information","tags":["Alliance"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":3600}},"/alliances/{alliance_id}/contacts/":{"get":{"description":"Return contacts of an alliance\n\n---\nAlternate route: `/dev/alliances/{alliance_id}/contacts/`\n\nAlternate route: `/v2/alliances/{alliance_id}/contacts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_alliances_alliance_id_contacts","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contacts","examples":{"application/json":[{"contact_id":2112625428,"contact_type":"character","standing":9.9}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"contact_id":{"description":"contact_id integer","format":"int32","title":"get_alliances_alliance_id_contacts_contact_id","type":"integer"},"contact_type":{"description":"contact_type string","enum":["character","corporation","alliance","faction"],"title":"get_alliances_alliance_id_contacts_contact_type","type":"string"},"label_ids":{"description":"label_ids array","items":{"description":"Label IDs applied to the contact","format":"int64","title":"get_alliances_alliance_id_contacts_label_id","type":"integer"},"maxItems":63,"title":"get_alliances_alliance_id_contacts_label_ids","type":"array"},"standing":{"description":"Standing of the contact","format":"float","title":"get_alliances_alliance_id_contacts_standing","type":"number"}},"required":["standing","contact_type","contact_id"],"title":"get_alliances_alliance_id_contacts_200_ok","type":"object"},"maxItems":1000,"title":"get_alliances_alliance_id_contacts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-alliances.read_contacts.v1"]}],"summary":"Get alliance contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":300}},"/alliances/{alliance_id}/contacts/labels/":{"get":{"description":"Return custom labels for an alliance's contacts\n\n---\nAlternate route: `/dev/alliances/{alliance_id}/contacts/labels/`\n\nAlternate route: `/legacy/alliances/{alliance_id}/contacts/labels/`\n\nAlternate route: `/v1/alliances/{alliance_id}/contacts/labels/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_alliances_alliance_id_contacts_labels","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of alliance contact labels","examples":{"application/json":[{"label_id":1,"label_name":"Alliance Friends"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"label_id":{"description":"label_id integer","format":"int64","title":"get_alliances_alliance_id_contacts_labels_label_id","type":"integer"},"label_name":{"description":"label_name string","title":"get_alliances_alliance_id_contacts_labels_label_name","type":"string"}},"required":["label_id","label_name"],"title":"get_alliances_alliance_id_contacts_labels_200_ok","type":"object"},"maxItems":64,"title":"get_alliances_alliance_id_contacts_labels_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-alliances.read_contacts.v1"]}],"summary":"Get alliance contact labels","tags":["Contacts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/alliances/{alliance_id}/corporations/":{"get":{"description":"List all current member corporations of an alliance\n\n---\nAlternate route: `/dev/alliances/{alliance_id}/corporations/`\n\nAlternate route: `/v1/alliances/{alliance_id}/corporations/`\n\nAlternate route: `/v2/alliances/{alliance_id}/corporations/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_alliances_alliance_id_corporations","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"List of corporation IDs","examples":{"application/json":[98000001]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","minimum":0,"title":"get_alliances_alliance_id_corporations_200_ok","type":"integer","uniqueItems":true},"maxItems":1000,"title":"get_alliances_alliance_id_corporations_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List alliance's corporations","tags":["Alliance"],"x-alternate-versions":["dev","v1","v2"],"x-cached-seconds":3600}},"/alliances/{alliance_id}/icons/":{"get":{"description":"Get the icon urls for a alliance\n\n---\nAlternate route: `/legacy/alliances/{alliance_id}/icons/`\n\nAlternate route: `/v1/alliances/{alliance_id}/icons/`\n\n---\nThis route expires daily at 11:05\n\n---\n[Diff of the upcoming changes](https://esi.evetech.net/diff/latest/dev/#GET-/alliances/{alliance_id}/icons/)","operationId":"get_alliances_alliance_id_icons","parameters":[{"$ref":"#/parameters/alliance_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Icon URLs for the given alliance id and server","examples":{"application/json":{"px128x128":"https://images.evetech.net/Alliance/503818424_128.png","px64x64":"https://images.evetech.net/Alliance/503818424_64.png"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"px128x128":{"description":"px128x128 string","title":"get_alliances_alliance_id_icons_px128x128","type":"string"},"px64x64":{"description":"px64x64 string","title":"get_alliances_alliance_id_icons_px64x64","type":"string"}},"title":"get_alliances_alliance_id_icons_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No image server for this datasource","examples":{"application/json":{"error":"No image server for this datasource"}},"schema":{"description":"No image server for this datasource","properties":{"error":{"description":"error message","title":"get_alliances_alliance_id_icons_error","type":"string"}},"title":"get_alliances_alliance_id_icons_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get alliance icon","tags":["Alliance"],"x-alternate-versions":["legacy","v1"]}},"/characters/affiliation/":{"post":{"description":"Bulk lookup of character IDs to corporation, alliance and faction\n\n---\nAlternate route: `/dev/characters/affiliation/`\n\nAlternate route: `/legacy/characters/affiliation/`\n\nAlternate route: `/v1/characters/affiliation/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"post_characters_affiliation","parameters":[{"description":"The character IDs to fetch affiliations for. All characters must exist, or none will be returned","in":"body","name":"characters","required":true,"schema":{"description":"characters array","items":{"description":"character integer","format":"int32","title":"post_characters_affiliation_character","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_characters_affiliation_characters","type":"array","uniqueItems":true}},{"$ref":"#/parameters/datasource"}],"responses":{"200":{"description":"Character corporation, alliance and faction IDs","examples":{"application/json":[{"alliance_id":434243723,"character_id":95538921,"corporation_id":109299958}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"The character's alliance ID, if their corporation is in an alliance","format":"int32","title":"post_characters_affiliation_alliance_id","type":"integer"},"character_id":{"description":"The character's ID","format":"int32","title":"post_characters_affiliation_character_id","type":"integer"},"corporation_id":{"description":"The character's corporation ID","format":"int32","title":"post_characters_affiliation_corporation_id","type":"integer"},"faction_id":{"description":"The character's faction ID, if their corporation is in a faction","format":"int32","title":"post_characters_affiliation_faction_id","type":"integer"}},"required":["character_id","corporation_id"],"title":"post_characters_affiliation_200_ok","type":"object"},"maxItems":1000,"title":"post_characters_affiliation_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No characters found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_characters_affiliation_404_not_found","type":"string"}},"title":"post_characters_affiliation_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Character affiliation","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/":{"get":{"description":"Public information about a character\n\n---\nAlternate route: `/dev/characters/{character_id}/`\n\nAlternate route: `/v4/characters/{character_id}/`\n\n---\nThis route is cached for up to 86400 seconds","operationId":"get_characters_character_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Public data for the given character","examples":{"application/json":{"ancestry_id":19,"birthday":"2015-03-24T11:37:00Z","bloodline_id":3,"corporation_id":109299958,"description":"","gender":"male","name":"CCP Bartender","race_id":2,"title":"All round pretty awesome guy"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"alliance_id":{"description":"The character's alliance ID","format":"int32","title":"get_characters_character_id_alliance_id","type":"integer"},"ancestry_id":{"description":"ancestry_id integer","format":"int32","title":"get_characters_character_id_ancestry_id","type":"integer"},"birthday":{"description":"Creation date of the character","format":"date-time","title":"get_characters_character_id_birthday","type":"string"},"bloodline_id":{"description":"bloodline_id integer","format":"int32","title":"get_characters_character_id_bloodline_id","type":"integer"},"corporation_id":{"description":"The character's corporation ID","format":"int32","title":"get_characters_character_id_corporation_id","type":"integer"},"description":{"description":"description string","title":"get_characters_character_id_description","type":"string"},"faction_id":{"description":"ID of the faction the character is fighting for, if the character is enlisted in Factional Warfare","format":"int32","title":"get_characters_character_id_faction_id","type":"integer"},"gender":{"description":"gender string","enum":["female","male"],"title":"get_characters_character_id_gender","type":"string"},"name":{"description":"name string","title":"get_characters_character_id_name","type":"string"},"race_id":{"description":"race_id integer","format":"int32","title":"get_characters_character_id_race_id","type":"integer"},"security_status":{"description":"security_status number","format":"float","maximum":10,"minimum":-10,"title":"get_characters_character_id_security_status","type":"number"},"title":{"description":"The individual title of the character","title":"get_characters_character_id_title","type":"string"}},"required":["corporation_id","birthday","name","gender","race_id","bloodline_id"],"title":"get_characters_character_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Character not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_404_not_found","type":"string"}},"title":"get_characters_character_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get character's public information","tags":["Character"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":86400}},"/characters/{character_id}/agents_research/":{"get":{"description":"Return a list of agents research information for a character. The formula for finding the current research points with an agent is: currentPoints = remainderPoints + pointsPerDay * days(currentTime - researchStartDate)\n\n---\nAlternate route: `/dev/characters/{character_id}/agents_research/`\n\nAlternate route: `/legacy/characters/{character_id}/agents_research/`\n\nAlternate route: `/v1/characters/{character_id}/agents_research/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_agents_research","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of agents research information","examples":{"application/json":[{"agent_id":3009358,"points_per_day":53.5346162146776,"remainder_points":53604.0634303189,"skill_type_id":11450,"started_at":"2017-03-23T14:47:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"agent_id":{"description":"agent_id integer","format":"int32","title":"get_characters_character_id_agents_research_agent_id","type":"integer"},"points_per_day":{"description":"points_per_day number","format":"float","title":"get_characters_character_id_agents_research_points_per_day","type":"number"},"remainder_points":{"description":"remainder_points number","format":"float","title":"get_characters_character_id_agents_research_remainder_points","type":"number"},"skill_type_id":{"description":"skill_type_id integer","format":"int32","title":"get_characters_character_id_agents_research_skill_type_id","type":"integer"},"started_at":{"description":"started_at string","format":"date-time","title":"get_characters_character_id_agents_research_started_at","type":"string"}},"required":["agent_id","skill_type_id","started_at","points_per_day","remainder_points"],"title":"get_characters_character_id_agents_research_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_agents_research_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_agents_research.v1"]}],"summary":"Get agents research","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/assets/":{"get":{"description":"Return a list of the characters assets\n\n---\nAlternate route: `/dev/characters/{character_id}/assets/`\n\nAlternate route: `/v4/characters/{character_id}/assets/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_assets","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A flat list of the users assets","examples":{"application/json":[{"is_blueprint_copy":true,"is_singleton":true,"item_id":1000000016835,"location_flag":"Hangar","location_id":60002959,"location_type":"station","quantity":1,"type_id":3516}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_blueprint_copy":{"description":"is_blueprint_copy boolean","title":"get_characters_character_id_assets_is_blueprint_copy","type":"boolean"},"is_singleton":{"description":"is_singleton boolean","title":"get_characters_character_id_assets_is_singleton","type":"boolean"},"item_id":{"description":"item_id integer","format":"int64","title":"get_characters_character_id_assets_item_id","type":"integer"},"location_flag":{"description":"location_flag string","enum":["AssetSafety","AutoFit","BoosterBay","Cargo","CorpseBay","Deliveries","DroneBay","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","FleetHangar","FrigateEscapeBay","Hangar","HangarAll","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","HiddenModifiers","Implant","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","Locked","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","QuafeBay","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","ShipHangar","Skill","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedFuelBay","SpecializedGasHold","SpecializedIndustrialShipHold","SpecializedLargeShipHold","SpecializedMaterialBay","SpecializedMediumShipHold","SpecializedMineralHold","SpecializedOreHold","SpecializedPlanetaryCommoditiesHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","SubSystemBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","Unlocked","Wardrobe"],"title":"get_characters_character_id_assets_location_flag","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_characters_character_id_assets_location_id","type":"integer"},"location_type":{"description":"location_type string","enum":["station","solar_system","item","other"],"title":"get_characters_character_id_assets_location_type","type":"string"},"quantity":{"description":"quantity integer","format":"int32","title":"get_characters_character_id_assets_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_assets_type_id","type":"integer"}},"required":["type_id","quantity","location_id","location_type","item_id","location_flag","is_singleton"],"title":"get_characters_character_id_assets_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_assets_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_assets.v1"]}],"summary":"Get character assets","tags":["Assets"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":3600}},"/characters/{character_id}/assets/locations/":{"post":{"description":"Return locations for a set of item ids, which you can get from character assets endpoint. Coordinates for items in hangars or stations are set to (0,0,0)\n\n---\nAlternate route: `/dev/characters/{character_id}/assets/locations/`\n\nAlternate route: `/v2/characters/{character_id}/assets/locations/`\n","operationId":"post_characters_character_id_assets_locations","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"A list of item ids","in":"body","name":"item_ids","required":true,"schema":{"description":"item_ids array","items":{"description":"item_id integer","format":"int64","title":"post_characters_character_id_assets_locations_item_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_characters_character_id_assets_locations_item_ids","type":"array","uniqueItems":true}},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of asset locations","examples":{"application/json":[{"item_id":12345,"position":{"x":1.2,"y":2.3,"z":-3.4}}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"post_characters_character_id_assets_locations_item_id","type":"integer"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"post_characters_character_id_assets_locations_x","type":"number"},"y":{"description":"y number","format":"double","title":"post_characters_character_id_assets_locations_y","type":"number"},"z":{"description":"z number","format":"double","title":"post_characters_character_id_assets_locations_z","type":"number"}},"required":["x","y","z"],"title":"post_characters_character_id_assets_locations_position","type":"object"}},"required":["item_id","position"],"title":"post_characters_character_id_assets_locations_200_ok","type":"object"},"maxItems":1000,"title":"post_characters_character_id_assets_locations_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_assets.v1"]}],"summary":"Get character asset locations","tags":["Assets"],"x-alternate-versions":["dev","v2"]}},"/characters/{character_id}/assets/names/":{"post":{"description":"Return names for a set of item ids, which you can get from character assets endpoint. Typically used for items that can customize names, like containers or ships.\n\n---\nAlternate route: `/dev/characters/{character_id}/assets/names/`\n\nAlternate route: `/legacy/characters/{character_id}/assets/names/`\n\nAlternate route: `/v1/characters/{character_id}/assets/names/`\n","operationId":"post_characters_character_id_assets_names","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"A list of item ids","in":"body","name":"item_ids","required":true,"schema":{"description":"item_ids array","items":{"description":"item_id integer","format":"int64","title":"post_characters_character_id_assets_names_item_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_characters_character_id_assets_names_item_ids","type":"array","uniqueItems":true}},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of asset names","examples":{"application/json":[{"item_id":12345,"name":"Awesome Name"}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"post_characters_character_id_assets_names_item_id","type":"integer"},"name":{"description":"name string","title":"post_characters_character_id_assets_names_name","type":"string"}},"required":["item_id","name"],"title":"post_characters_character_id_assets_names_200_ok","type":"object"},"maxItems":1000,"title":"post_characters_character_id_assets_names_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_assets.v1"]}],"summary":"Get character asset names","tags":["Assets"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/attributes/":{"get":{"description":"Return attributes of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/attributes/`\n\nAlternate route: `/legacy/characters/{character_id}/attributes/`\n\nAlternate route: `/v1/characters/{character_id}/attributes/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_attributes","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Attributes of a character","examples":{"application/json":{"charisma":20,"intelligence":20,"memory":20,"perception":20,"willpower":20}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"accrued_remap_cooldown_date":{"description":"Neural remapping cooldown after a character uses remap accrued over time","format":"date-time","title":"get_characters_character_id_attributes_accrued_remap_cooldown_date","type":"string"},"bonus_remaps":{"description":"Number of available bonus character neural remaps","format":"int32","title":"get_characters_character_id_attributes_bonus_remaps","type":"integer"},"charisma":{"description":"charisma integer","format":"int32","title":"get_characters_character_id_attributes_charisma","type":"integer"},"intelligence":{"description":"intelligence integer","format":"int32","title":"get_characters_character_id_attributes_intelligence","type":"integer"},"last_remap_date":{"description":"Datetime of last neural remap, including usage of bonus remaps","format":"date-time","title":"get_characters_character_id_attributes_last_remap_date","type":"string"},"memory":{"description":"memory integer","format":"int32","title":"get_characters_character_id_attributes_memory","type":"integer"},"perception":{"description":"perception integer","format":"int32","title":"get_characters_character_id_attributes_perception","type":"integer"},"willpower":{"description":"willpower integer","format":"int32","title":"get_characters_character_id_attributes_willpower","type":"integer"}},"required":["charisma","intelligence","memory","perception","willpower"],"title":"get_characters_character_id_attributes_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-skills.read_skills.v1"]}],"summary":"Get character attributes","tags":["Skills"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":120}},"/characters/{character_id}/blueprints/":{"get":{"description":"Return a list of blueprints the character owns\n\n---\nAlternate route: `/dev/characters/{character_id}/blueprints/`\n\nAlternate route: `/v2/characters/{character_id}/blueprints/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_blueprints","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of blueprints","examples":{"application/json":[{"item_id":1000000010495,"location_flag":"Hangar","location_id":60014719,"material_efficiency":0,"quantity":1,"runs":-1,"time_efficiency":0,"type_id":691}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"Unique ID for this item.","format":"int64","title":"get_characters_character_id_blueprints_item_id","type":"integer"},"location_flag":{"description":"Type of the location_id","enum":["AutoFit","Cargo","CorpseBay","DroneBay","FleetHangar","Deliveries","HiddenModifiers","Hangar","HangarAll","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","AssetSafety","Locked","Unlocked","Implant","QuafeBay","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","ShipHangar","SpecializedFuelBay","SpecializedOreHold","SpecializedGasHold","SpecializedMineralHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","SpecializedMediumShipHold","SpecializedLargeShipHold","SpecializedIndustrialShipHold","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedPlanetaryCommoditiesHold","SpecializedMaterialBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","Module"],"title":"get_characters_character_id_blueprints_location_flag","type":"string"},"location_id":{"description":"References a station, a ship or an item_id if this blueprint is located within a container. If the return value is an item_id, then the Character AssetList API must be queried to find the container using the given item_id to determine the correct location of the Blueprint.","format":"int64","title":"get_characters_character_id_blueprints_location_id","type":"integer"},"material_efficiency":{"description":"Material Efficiency Level of the blueprint.","format":"int32","maximum":25,"minimum":0,"title":"get_characters_character_id_blueprints_material_efficiency","type":"integer"},"quantity":{"description":"A range of numbers with a minimum of -2 and no maximum value where -1 is an original and -2 is a copy. It can be a positive integer if it is a stack of blueprint originals fresh from the market (e.g. no activities performed on them yet).","format":"int32","minimum":-2,"title":"get_characters_character_id_blueprints_quantity","type":"integer"},"runs":{"description":"Number of runs remaining if the blueprint is a copy, -1 if it is an original.","format":"int32","minimum":-1,"title":"get_characters_character_id_blueprints_runs","type":"integer"},"time_efficiency":{"description":"Time Efficiency Level of the blueprint.","format":"int32","maximum":20,"minimum":0,"title":"get_characters_character_id_blueprints_time_efficiency","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_blueprints_type_id","type":"integer"}},"required":["item_id","type_id","location_id","location_flag","quantity","time_efficiency","material_efficiency","runs"],"title":"get_characters_character_id_blueprints_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_blueprints_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_blueprints.v1"]}],"summary":"Get blueprints","tags":["Character"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/characters/{character_id}/bookmarks/":{"get":{"description":"A list of your character's personal bookmarks\n\n---\nAlternate route: `/dev/characters/{character_id}/bookmarks/`\n\nAlternate route: `/v2/characters/{character_id}/bookmarks/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_bookmarks","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of bookmarks","examples":{"application/json":[{"bookmark_id":4,"created":"2016-08-09T11:57:47Z","creator_id":2112625428,"folder_id":5,"item":{"item_id":50006722,"type_id":29633},"label":"Stargate","location_id":30003430,"notes":"This is a stargate"},{"bookmark_id":5,"coordinates":{"x":-2958928814000,"y":-338367275823,"z":2114538075090},"created":"2016-08-09T11:57:47Z","creator_id":2112625428,"folder_id":5,"label":"Random location","location_id":30003430,"notes":"This is a random location in space"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"bookmark_id":{"description":"bookmark_id integer","format":"int32","title":"get_characters_character_id_bookmarks_bookmark_id","type":"integer"},"coordinates":{"description":"Optional object that is returned if a bookmark was made on a planet or a random location in space.","properties":{"x":{"description":"x number","format":"double","title":"get_characters_character_id_bookmarks_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_characters_character_id_bookmarks_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_characters_character_id_bookmarks_z","type":"number"}},"required":["x","y","z"],"title":"get_characters_character_id_bookmarks_coordinates","type":"object"},"created":{"description":"created string","format":"date-time","title":"get_characters_character_id_bookmarks_created","type":"string"},"creator_id":{"description":"creator_id integer","format":"int32","title":"get_characters_character_id_bookmarks_creator_id","type":"integer"},"folder_id":{"description":"folder_id integer","format":"int32","title":"get_characters_character_id_bookmarks_folder_id","type":"integer"},"item":{"description":"Optional object that is returned if a bookmark was made on a particular item.","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"get_characters_character_id_bookmarks_item_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_bookmarks_type_id","type":"integer"}},"required":["item_id","type_id"],"title":"get_characters_character_id_bookmarks_item","type":"object"},"label":{"description":"label string","title":"get_characters_character_id_bookmarks_label","type":"string"},"location_id":{"description":"location_id integer","format":"int32","title":"get_characters_character_id_bookmarks_location_id","type":"integer"},"notes":{"description":"notes string","title":"get_characters_character_id_bookmarks_notes","type":"string"}},"required":["bookmark_id","created","label","notes","location_id","creator_id"],"title":"get_characters_character_id_bookmarks_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_bookmarks_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-bookmarks.read_character_bookmarks.v1"]}],"summary":"List bookmarks","tags":["Bookmarks"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/characters/{character_id}/bookmarks/folders/":{"get":{"description":"A list of your character's personal bookmark folders\n\n---\nAlternate route: `/dev/characters/{character_id}/bookmarks/folders/`\n\nAlternate route: `/v2/characters/{character_id}/bookmarks/folders/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_bookmarks_folders","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of bookmark folders","examples":{"application/json":[{"folder_id":5,"name":"Icecream"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"folder_id":{"description":"folder_id integer","format":"int32","title":"get_characters_character_id_bookmarks_folders_folder_id","type":"integer"},"name":{"description":"name string","title":"get_characters_character_id_bookmarks_folders_name","type":"string"}},"required":["folder_id","name"],"title":"get_characters_character_id_bookmarks_folders_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_bookmarks_folders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-bookmarks.read_character_bookmarks.v1"]}],"summary":"List bookmark folders","tags":["Bookmarks"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/characters/{character_id}/calendar/":{"get":{"description":"Get 50 event summaries from the calendar. If no from_event ID is given, the resource will return the next 50 chronological event summaries from now. If a from_event ID is specified, it will return the next 50 chronological event summaries from after that event\n\n---\nAlternate route: `/dev/characters/{character_id}/calendar/`\n\nAlternate route: `/legacy/characters/{character_id}/calendar/`\n\nAlternate route: `/v1/characters/{character_id}/calendar/`\n\nAlternate route: `/v2/characters/{character_id}/calendar/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_characters_character_id_calendar","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The event ID to retrieve events from","format":"int32","in":"query","name":"from_event","required":false,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A collection of event summaries","examples":{"application/json":[{"event_date":"2016-06-26T20:00:00Z","event_id":1386435,"event_response":"accepted","importance":0,"title":"o7 The EVE Online Show"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Up to 50 events from now or the event you requested","items":{"description":"event","properties":{"event_date":{"description":"event_date string","format":"date-time","title":"get_characters_character_id_calendar_event_date","type":"string"},"event_id":{"description":"event_id integer","format":"int32","title":"get_characters_character_id_calendar_event_id","type":"integer"},"event_response":{"description":"event_response string","enum":["declined","not_responded","accepted","tentative"],"title":"get_characters_character_id_calendar_event_response","type":"string"},"importance":{"description":"importance integer","format":"int32","title":"get_characters_character_id_calendar_importance","type":"integer"},"title":{"description":"title string","title":"get_characters_character_id_calendar_title","type":"string"}},"title":"get_characters_character_id_calendar_200_ok","type":"object"},"maxItems":50,"title":"get_characters_character_id_calendar_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-calendar.read_calendar_events.v1"]}],"summary":"List calendar event summaries","tags":["Calendar"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":5}},"/characters/{character_id}/calendar/{event_id}/":{"get":{"description":"Get all the information for a specific event\n\n---\nAlternate route: `/dev/characters/{character_id}/calendar/{event_id}/`\n\nAlternate route: `/v3/characters/{character_id}/calendar/{event_id}/`\n\nAlternate route: `/v4/characters/{character_id}/calendar/{event_id}/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_characters_character_id_calendar_event_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The id of the event requested","format":"int32","in":"path","name":"event_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Full details of a specific event","examples":{"application/json":{"date":"2016-06-26T21:00:00Z","duration":60,"event_id":1386435,"importance":1,"owner_id":1,"owner_name":"EVE System","owner_type":"eve_server","response":"Undecided","text":"o7: The EVE Online Show features latest developer news, fast paced action, community overviews and a lot more with CCP Guard and CCP Mimic. Join the thrilling o7 live broadcast at 20:00 EVE time (=UTC) on EVE TV. Don't miss it!","title":"o7 The EVE Online Show"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Full details of a specific event","properties":{"date":{"description":"date string","format":"date-time","title":"get_characters_character_id_calendar_event_id_date","type":"string"},"duration":{"description":"Length in minutes","format":"int32","title":"get_characters_character_id_calendar_event_id_duration","type":"integer"},"event_id":{"description":"event_id integer","format":"int32","title":"get_characters_character_id_calendar_event_id_event_id","type":"integer"},"importance":{"description":"importance integer","format":"int32","title":"get_characters_character_id_calendar_event_id_importance","type":"integer"},"owner_id":{"description":"owner_id integer","format":"int32","title":"get_characters_character_id_calendar_event_id_owner_id","type":"integer"},"owner_name":{"description":"owner_name string","title":"get_characters_character_id_calendar_event_id_owner_name","type":"string"},"owner_type":{"description":"owner_type string","enum":["eve_server","corporation","faction","character","alliance"],"title":"get_characters_character_id_calendar_event_id_owner_type","type":"string"},"response":{"description":"response string","title":"get_characters_character_id_calendar_event_id_response","type":"string"},"text":{"description":"text string","title":"get_characters_character_id_calendar_event_id_text","type":"string"},"title":{"description":"title string","title":"get_characters_character_id_calendar_event_id_title","type":"string"}},"required":["event_id","owner_id","owner_name","date","title","duration","importance","response","text","owner_type"],"title":"get_characters_character_id_calendar_event_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_calendar_event_id_404_not_found","type":"string"}},"title":"get_characters_character_id_calendar_event_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-calendar.read_calendar_events.v1"]}],"summary":"Get an event","tags":["Calendar"],"x-alternate-versions":["dev","v3","v4"],"x-cached-seconds":5},"put":{"description":"Set your response status to an event\n\n---\nAlternate route: `/dev/characters/{character_id}/calendar/{event_id}/`\n\nAlternate route: `/v3/characters/{character_id}/calendar/{event_id}/`\n\nAlternate route: `/v4/characters/{character_id}/calendar/{event_id}/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"put_characters_character_id_calendar_event_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The ID of the event requested","format":"int32","in":"path","name":"event_id","required":true,"type":"integer"},{"description":"The response value to set, overriding current value","in":"body","name":"response","required":true,"schema":{"description":"response object","properties":{"response":{"description":"response string","enum":["accepted","declined","tentative"],"title":"put_characters_character_id_calendar_event_id_response_response","type":"string"}},"required":["response"],"title":"put_characters_character_id_calendar_event_id_response","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Event updated"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-calendar.respond_calendar_events.v1"]}],"summary":"Respond to an event","tags":["Calendar"],"x-alternate-versions":["dev","v3","v4"],"x-cached-seconds":5}},"/characters/{character_id}/calendar/{event_id}/attendees/":{"get":{"description":"Get all invited attendees for a given event\n\n---\nAlternate route: `/dev/characters/{character_id}/calendar/{event_id}/attendees/`\n\nAlternate route: `/legacy/characters/{character_id}/calendar/{event_id}/attendees/`\n\nAlternate route: `/v1/characters/{character_id}/calendar/{event_id}/attendees/`\n\nAlternate route: `/v2/characters/{character_id}/calendar/{event_id}/attendees/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_calendar_event_id_attendees","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The id of the event requested","format":"int32","in":"path","name":"event_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of attendees","examples":{"application/json":[{"character_id":2112625428,"event_response":"accepted"},{"character_id":95465499,"event_response":"tentative"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"List of attendees for a given event","items":{"description":"character_id and response of an attendee","properties":{"character_id":{"description":"character_id integer","format":"int32","title":"get_characters_character_id_calendar_event_id_attendees_character_id","type":"integer"},"event_response":{"description":"event_response string","enum":["declined","not_responded","accepted","tentative"],"title":"get_characters_character_id_calendar_event_id_attendees_event_response","type":"string"}},"title":"get_characters_character_id_calendar_event_id_attendees_200_ok","type":"object"},"maxItems":100,"title":"get_characters_character_id_calendar_event_id_attendees_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_calendar_event_id_attendees_404_not_found","type":"string"}},"title":"get_characters_character_id_calendar_event_id_attendees_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-calendar.read_calendar_events.v1"]}],"summary":"Get attendees","tags":["Calendar"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":600}},"/characters/{character_id}/clones/":{"get":{"description":"A list of the character's clones\n\n---\nAlternate route: `/dev/characters/{character_id}/clones/`\n\nAlternate route: `/v3/characters/{character_id}/clones/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_clones","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Clone information for the given character","examples":{"application/json":{"home_location":{"location_id":1021348135816,"location_type":"structure"},"jump_clones":[{"implants":[22118],"jump_clone_id":12345,"location_id":60003463,"location_type":"station"}]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"home_location":{"description":"home_location object","properties":{"location_id":{"description":"location_id integer","format":"int64","title":"get_characters_character_id_clones_location_id","type":"integer"},"location_type":{"description":"location_type string","enum":["station","structure"],"title":"get_characters_character_id_clones_location_type","type":"string"}},"title":"get_characters_character_id_clones_home_location","type":"object"},"jump_clones":{"description":"jump_clones array","items":{"description":"jump_clone object","properties":{"implants":{"description":"implants array","items":{"description":"implant integer","format":"int32","title":"get_characters_character_id_clones_implant","type":"integer"},"maxItems":11,"title":"get_characters_character_id_clones_implants","type":"array"},"jump_clone_id":{"description":"jump_clone_id integer","format":"int32","title":"get_characters_character_id_clones_jump_clone_id","type":"integer"},"location_id":{"description":"location_id integer","format":"int64","title":"get_characters_character_id_clones_jump_clone_location_id","type":"integer"},"location_type":{"description":"location_type string","enum":["station","structure"],"title":"get_characters_character_id_clones_jump_clone_location_type","type":"string"},"name":{"description":"name string","title":"get_characters_character_id_clones_name","type":"string"}},"required":["jump_clone_id","location_id","location_type","implants"],"title":"get_characters_character_id_clones_jump_clone","type":"object"},"maxItems":10,"title":"get_characters_character_id_clones_jump_clones","type":"array"},"last_clone_jump_date":{"description":"last_clone_jump_date string","format":"date-time","title":"get_characters_character_id_clones_last_clone_jump_date","type":"string"},"last_station_change_date":{"description":"last_station_change_date string","format":"date-time","title":"get_characters_character_id_clones_last_station_change_date","type":"string"}},"required":["jump_clones"],"title":"get_characters_character_id_clones_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-clones.read_clones.v1"]}],"summary":"Get clones","tags":["Clones"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":120}},"/characters/{character_id}/contacts/":{"delete":{"description":"Bulk delete contacts\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/`\n\nAlternate route: `/v2/characters/{character_id}/contacts/`\n","operationId":"delete_characters_character_id_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"description":"A list of contacts to delete","in":"query","items":{"format":"int32","type":"integer"},"maxItems":20,"minItems":1,"name":"contact_ids","required":true,"type":"array"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Contacts deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.write_contacts.v1"]}],"summary":"Delete contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"]},"get":{"description":"Return contacts of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/`\n\nAlternate route: `/v2/characters/{character_id}/contacts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contacts","examples":{"application/json":[{"contact_id":123,"contact_type":"character","is_blocked":true,"is_watched":true,"standing":9.9}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"contact_id":{"description":"contact_id integer","format":"int32","title":"get_characters_character_id_contacts_contact_id","type":"integer"},"contact_type":{"description":"contact_type string","enum":["character","corporation","alliance","faction"],"title":"get_characters_character_id_contacts_contact_type","type":"string"},"is_blocked":{"description":"Whether this contact is in the blocked list. Note a missing value denotes unknown, not true or false","title":"get_characters_character_id_contacts_is_blocked","type":"boolean"},"is_watched":{"description":"Whether this contact is being watched","title":"get_characters_character_id_contacts_is_watched","type":"boolean"},"label_ids":{"description":"label_ids array","items":{"description":"Label IDs applied to the contact","format":"int64","title":"get_characters_character_id_contacts_label_id","type":"integer"},"maxItems":63,"title":"get_characters_character_id_contacts_label_ids","type":"array"},"standing":{"description":"Standing of the contact","format":"float","title":"get_characters_character_id_contacts_standing","type":"number"}},"required":["standing","contact_type","contact_id"],"title":"get_characters_character_id_contacts_200_ok","type":"object"},"maxItems":1024,"title":"get_characters_character_id_contacts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_contacts.v1"]}],"summary":"Get contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":300},"post":{"description":"Bulk add contacts with same settings\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/`\n\nAlternate route: `/v2/characters/{character_id}/contacts/`\n","operationId":"post_characters_character_id_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"description":"A list of contacts","in":"body","name":"contact_ids","required":true,"schema":{"description":"contact_ids array","items":{"description":"ID of the contact to edit","format":"int32","title":"post_characters_character_id_contacts_contact_id","type":"integer"},"maxItems":100,"minItems":1,"title":"post_characters_character_id_contacts_contact_ids","type":"array"}},{"$ref":"#/parameters/datasource"},{"description":"Add custom labels to the new contact","in":"query","items":{"format":"int64","type":"integer"},"maxItems":63,"name":"label_ids","required":false,"type":"array"},{"description":"Standing for the contact","format":"float","in":"query","maximum":10,"minimum":-10,"name":"standing","required":true,"type":"number"},{"$ref":"#/parameters/token"},{"default":false,"description":"Whether the contact should be watched, note this is only effective on characters","in":"query","name":"watched","required":false,"type":"boolean"}],"responses":{"201":{"description":"A list of contact ids that successfully created","examples":{"application/json":[123,456]},"schema":{"description":"201 created array","items":{"description":"201 created integer","format":"int32","title":"post_characters_character_id_contacts_201_created","type":"integer"},"maxItems":100,"title":"post_characters_character_id_contacts_created","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}},"520":{"description":"Internal error thrown from the EVE server","examples":{"application/json":{"error":"Error 520 message"}},"schema":{"description":"Error 520","properties":{"error":{"description":"Error 520 message","title":"post_characters_character_id_contacts_520_error_520","type":"string"}},"title":"post_characters_character_id_contacts_error_520","type":"object"}}},"security":[{"evesso":["esi-characters.write_contacts.v1"]}],"summary":"Add contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"]},"put":{"description":"Bulk edit contacts with same settings\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/`\n\nAlternate route: `/v2/characters/{character_id}/contacts/`\n","operationId":"put_characters_character_id_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"description":"A list of contacts","in":"body","name":"contact_ids","required":true,"schema":{"description":"contact_ids array","items":{"description":"ID of the contact to edit","format":"int32","title":"put_characters_character_id_contacts_contact_id","type":"integer"},"maxItems":100,"minItems":1,"title":"put_characters_character_id_contacts_contact_ids","type":"array"}},{"$ref":"#/parameters/datasource"},{"description":"Add custom labels to the contact","in":"query","items":{"format":"int64","type":"integer"},"maxItems":63,"name":"label_ids","required":false,"type":"array"},{"description":"Standing for the contact","format":"float","in":"query","maximum":10,"minimum":-10,"name":"standing","required":true,"type":"number"},{"$ref":"#/parameters/token"},{"default":false,"description":"Whether the contact should be watched, note this is only effective on characters","in":"query","name":"watched","required":false,"type":"boolean"}],"responses":{"204":{"description":"Contacts updated"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.write_contacts.v1"]}],"summary":"Edit contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"]}},"/characters/{character_id}/contacts/labels/":{"get":{"description":"Return custom labels for a character's contacts\n\n---\nAlternate route: `/dev/characters/{character_id}/contacts/labels/`\n\nAlternate route: `/legacy/characters/{character_id}/contacts/labels/`\n\nAlternate route: `/v1/characters/{character_id}/contacts/labels/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_contacts_labels","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contact labels","examples":{"application/json":[{"label_id":123,"label_name":"Friends"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"label_id":{"description":"label_id integer","format":"int64","title":"get_characters_character_id_contacts_labels_label_id","type":"integer"},"label_name":{"description":"label_name string","title":"get_characters_character_id_contacts_labels_label_name","type":"string"}},"required":["label_id","label_name"],"title":"get_characters_character_id_contacts_labels_200_ok","type":"object"},"maxItems":64,"title":"get_characters_character_id_contacts_labels_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_contacts.v1"]}],"summary":"Get contact labels","tags":["Contacts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/contracts/":{"get":{"description":"Returns contracts available to a character, only if the character is issuer, acceptor or assignee. Only returns contracts no older than 30 days, or if the status is \"in_progress\".\n\n---\nAlternate route: `/dev/characters/{character_id}/contracts/`\n\nAlternate route: `/legacy/characters/{character_id}/contracts/`\n\nAlternate route: `/v1/characters/{character_id}/contracts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_contracts","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contracts","examples":{"application/json":[{"acceptor_id":0,"assignee_id":0,"availability":"public","buyout":10000000000.01,"contract_id":1,"date_accepted":"2017-06-06T13:12:32Z","date_completed":"2017-06-06T13:12:32Z","date_expired":"2017-06-13T13:12:32Z","date_issued":"2017-06-06T13:12:32Z","days_to_complete":0,"end_location_id":60014719,"for_corporation":true,"issuer_corporation_id":456,"issuer_id":123,"price":1000000.01,"reward":0.01,"start_location_id":60014719,"status":"outstanding","type":"auction","volume":0.01}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"acceptor_id":{"description":"Who will accept the contract","format":"int32","title":"get_characters_character_id_contracts_acceptor_id","type":"integer"},"assignee_id":{"description":"ID to whom the contract is assigned, can be corporation or character ID","format":"int32","title":"get_characters_character_id_contracts_assignee_id","type":"integer"},"availability":{"description":"To whom the contract is available","enum":["public","personal","corporation","alliance"],"title":"get_characters_character_id_contracts_availability","type":"string"},"buyout":{"description":"Buyout price (for Auctions only)","format":"double","title":"get_characters_character_id_contracts_buyout","type":"number"},"collateral":{"description":"Collateral price (for Couriers only)","format":"double","title":"get_characters_character_id_contracts_collateral","type":"number"},"contract_id":{"description":"contract_id integer","format":"int32","title":"get_characters_character_id_contracts_contract_id","type":"integer"},"date_accepted":{"description":"Date of confirmation of contract","format":"date-time","title":"get_characters_character_id_contracts_date_accepted","type":"string"},"date_completed":{"description":"Date of completed of contract","format":"date-time","title":"get_characters_character_id_contracts_date_completed","type":"string"},"date_expired":{"description":"Expiration date of the contract","format":"date-time","title":"get_characters_character_id_contracts_date_expired","type":"string"},"date_issued":{"description":"\u0421reation date of the contract","format":"date-time","title":"get_characters_character_id_contracts_date_issued","type":"string"},"days_to_complete":{"description":"Number of days to perform the contract","format":"int32","title":"get_characters_character_id_contracts_days_to_complete","type":"integer"},"end_location_id":{"description":"End location ID (for Couriers contract)","format":"int64","title":"get_characters_character_id_contracts_end_location_id","type":"integer"},"for_corporation":{"description":"true if the contract was issued on behalf of the issuer's corporation","title":"get_characters_character_id_contracts_for_corporation","type":"boolean"},"issuer_corporation_id":{"description":"Character's corporation ID for the issuer","format":"int32","title":"get_characters_character_id_contracts_issuer_corporation_id","type":"integer"},"issuer_id":{"description":"Character ID for the issuer","format":"int32","title":"get_characters_character_id_contracts_issuer_id","type":"integer"},"price":{"description":"Price of contract (for ItemsExchange and Auctions)","format":"double","title":"get_characters_character_id_contracts_price","type":"number"},"reward":{"description":"Remuneration for contract (for Couriers only)","format":"double","title":"get_characters_character_id_contracts_reward","type":"number"},"start_location_id":{"description":"Start location ID (for Couriers contract)","format":"int64","title":"get_characters_character_id_contracts_start_location_id","type":"integer"},"status":{"description":"Status of the the contract","enum":["outstanding","in_progress","finished_issuer","finished_contractor","finished","cancelled","rejected","failed","deleted","reversed"],"title":"get_characters_character_id_contracts_status","type":"string"},"title":{"description":"Title of the contract","title":"get_characters_character_id_contracts_title","type":"string"},"type":{"description":"Type of the contract","enum":["unknown","item_exchange","auction","courier","loan"],"title":"get_characters_character_id_contracts_type","type":"string"},"volume":{"description":"Volume of items in the contract","format":"double","title":"get_characters_character_id_contracts_volume","type":"number"}},"required":["contract_id","issuer_id","issuer_corporation_id","assignee_id","acceptor_id","type","status","for_corporation","availability","date_issued","date_expired"],"title":"get_characters_character_id_contracts_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_contracts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_character_contracts.v1"]}],"summary":"Get contracts","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/contracts/{contract_id}/bids/":{"get":{"description":"Lists bids on a particular auction contract\n\n---\nAlternate route: `/dev/characters/{character_id}/contracts/{contract_id}/bids/`\n\nAlternate route: `/legacy/characters/{character_id}/contracts/{contract_id}/bids/`\n\nAlternate route: `/v1/characters/{character_id}/contracts/{contract_id}/bids/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_contracts_contract_id_bids","parameters":[{"$ref":"#/parameters/character_id"},{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of bids","examples":{"application/json":[{"amount":1.23,"bid_id":1,"bidder_id":123,"date_bid":"2017-01-01T10:10:10Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount bid, in ISK","format":"float","title":"get_characters_character_id_contracts_contract_id_bids_amount","type":"number"},"bid_id":{"description":"Unique ID for the bid","format":"int32","title":"get_characters_character_id_contracts_contract_id_bids_bid_id","type":"integer"},"bidder_id":{"description":"Character ID of the bidder","format":"int32","title":"get_characters_character_id_contracts_contract_id_bids_bidder_id","type":"integer"},"date_bid":{"description":"Datetime when the bid was placed","format":"date-time","title":"get_characters_character_id_contracts_contract_id_bids_date_bid","type":"string"}},"required":["bid_id","bidder_id","date_bid","amount"],"title":"get_characters_character_id_contracts_contract_id_bids_200_ok","type":"object"},"maxItems":2000,"title":"get_characters_character_id_contracts_contract_id_bids_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_contracts_contract_id_bids_404_not_found","type":"string"}},"title":"get_characters_character_id_contracts_contract_id_bids_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_character_contracts.v1"]}],"summary":"Get contract bids","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/contracts/{contract_id}/items/":{"get":{"description":"Lists items of a particular contract\n\n---\nAlternate route: `/dev/characters/{character_id}/contracts/{contract_id}/items/`\n\nAlternate route: `/legacy/characters/{character_id}/contracts/{contract_id}/items/`\n\nAlternate route: `/v1/characters/{character_id}/contracts/{contract_id}/items/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_contracts_contract_id_items","parameters":[{"$ref":"#/parameters/character_id"},{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of items in this contract","examples":{"application/json":[{"is_included":true,"is_singleton":false,"quantity":1,"record_id":123456,"type_id":587}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_included":{"description":"true if the contract issuer has submitted this item with the contract, false if the isser is asking for this item in the contract","title":"get_characters_character_id_contracts_contract_id_items_is_included","type":"boolean"},"is_singleton":{"description":"is_singleton boolean","title":"get_characters_character_id_contracts_contract_id_items_is_singleton","type":"boolean"},"quantity":{"description":"Number of items in the stack","format":"int32","title":"get_characters_character_id_contracts_contract_id_items_quantity","type":"integer"},"raw_quantity":{"description":"-1 indicates that the item is a singleton (non-stackable). If the item happens to be a Blueprint, -1 is an Original and -2 is a Blueprint Copy","format":"int32","title":"get_characters_character_id_contracts_contract_id_items_raw_quantity","type":"integer"},"record_id":{"description":"Unique ID for the item","format":"int64","title":"get_characters_character_id_contracts_contract_id_items_record_id","type":"integer"},"type_id":{"description":"Type ID for item","format":"int32","title":"get_characters_character_id_contracts_contract_id_items_type_id","type":"integer"}},"required":["record_id","type_id","quantity","is_singleton","is_included"],"title":"get_characters_character_id_contracts_contract_id_items_200_ok","type":"object"},"maxItems":2000,"title":"get_characters_character_id_contracts_contract_id_items_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_contracts_contract_id_items_404_not_found","type":"string"}},"title":"get_characters_character_id_contracts_contract_id_items_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_character_contracts.v1"]}],"summary":"Get contract items","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/corporationhistory/":{"get":{"description":"Get a list of all the corporations a character has been a member of\n\n---\nAlternate route: `/dev/characters/{character_id}/corporationhistory/`\n\nAlternate route: `/legacy/characters/{character_id}/corporationhistory/`\n\nAlternate route: `/v1/characters/{character_id}/corporationhistory/`\n\n---\nThis route is cached for up to 86400 seconds","operationId":"get_characters_character_id_corporationhistory","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Corporation history for the given character","examples":{"application/json":[{"corporation_id":90000001,"is_deleted":true,"record_id":500,"start_date":"2016-06-26T20:00:00Z"},{"corporation_id":90000002,"record_id":501,"start_date":"2016-07-26T20:00:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_characters_character_id_corporationhistory_corporation_id","type":"integer"},"is_deleted":{"description":"True if the corporation has been deleted","title":"get_characters_character_id_corporationhistory_is_deleted","type":"boolean"},"record_id":{"description":"An incrementing ID that can be used to canonically establish order of records in cases where dates may be ambiguous","format":"int32","title":"get_characters_character_id_corporationhistory_record_id","type":"integer"},"start_date":{"description":"start_date string","format":"date-time","title":"get_characters_character_id_corporationhistory_start_date","type":"string"}},"required":["start_date","corporation_id","record_id"],"title":"get_characters_character_id_corporationhistory_200_ok","type":"object"},"maxItems":10000,"title":"get_characters_character_id_corporationhistory_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get corporation history","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":86400}},"/characters/{character_id}/cspa/":{"post":{"description":"Takes a source character ID in the url and a set of target character ID's in the body, returns a CSPA charge cost\n\n---\nAlternate route: `/dev/characters/{character_id}/cspa/`\n\nAlternate route: `/v4/characters/{character_id}/cspa/`\n","operationId":"post_characters_character_id_cspa","parameters":[{"$ref":"#/parameters/character_id"},{"description":"The target characters to calculate the charge for","in":"body","name":"characters","required":true,"schema":{"description":"characters array","items":{"description":"character integer","format":"int32","title":"post_characters_character_id_cspa_character","type":"integer"},"maxItems":100,"minItems":1,"title":"post_characters_character_id_cspa_characters","type":"array","uniqueItems":true}},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"Aggregate cost of sending a mail from the source character to the target characters, in ISK","examples":{"application/json":2950.0},"schema":{"description":"201 created number","format":"float","title":"post_characters_character_id_cspa_created","type":"number"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_contacts.v1"]}],"summary":"Calculate a CSPA charge cost","tags":["Character"],"x-alternate-versions":["dev","v4"]}},"/characters/{character_id}/fatigue/":{"get":{"description":"Return a character's jump activation and fatigue information\n\n---\nAlternate route: `/dev/characters/{character_id}/fatigue/`\n\nAlternate route: `/legacy/characters/{character_id}/fatigue/`\n\nAlternate route: `/v1/characters/{character_id}/fatigue/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_fatigue","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Jump activation and fatigue information","examples":{"application/json":{"jump_fatigue_expire_date":"2017-07-06T15:47:00Z","last_jump_date":"2017-07-05T15:47:00Z","last_update_date":"2017-07-05T15:42:00Z"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"jump_fatigue_expire_date":{"description":"Character's jump fatigue expiry","format":"date-time","title":"get_characters_character_id_fatigue_jump_fatigue_expire_date","type":"string"},"last_jump_date":{"description":"Character's last jump activation","format":"date-time","title":"get_characters_character_id_fatigue_last_jump_date","type":"string"},"last_update_date":{"description":"Character's last jump update","format":"date-time","title":"get_characters_character_id_fatigue_last_update_date","type":"string"}},"title":"get_characters_character_id_fatigue_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_fatigue.v1"]}],"summary":"Get jump fatigue","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/fittings/":{"get":{"description":"Return fittings of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/fittings/`\n\nAlternate route: `/v2/characters/{character_id}/fittings/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_fittings","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of fittings","examples":{"application/json":[{"description":"Awesome Vindi fitting","fitting_id":1,"items":[{"flag":"Cargo","quantity":1,"type_id":1234}],"name":"Best Vindicator","ship_type_id":123}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"description":{"description":"description string","title":"get_characters_character_id_fittings_description","type":"string"},"fitting_id":{"description":"fitting_id integer","format":"int32","title":"get_characters_character_id_fittings_fitting_id","type":"integer"},"items":{"description":"items array","items":{"description":"item object","properties":{"flag":{"description":"flag string","enum":["Cargo","DroneBay","FighterBay","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","Invalid","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","RigSlot0","RigSlot1","RigSlot2","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3"],"title":"get_characters_character_id_fittings_flag","type":"string"},"quantity":{"description":"quantity integer","format":"int32","title":"get_characters_character_id_fittings_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_fittings_type_id","type":"integer"}},"required":["type_id","flag","quantity"],"title":"get_characters_character_id_fittings_item","type":"object"},"maxItems":255,"title":"get_characters_character_id_fittings_items","type":"array"},"name":{"description":"name string","title":"get_characters_character_id_fittings_name","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_characters_character_id_fittings_ship_type_id","type":"integer"}},"required":["fitting_id","name","description","ship_type_id","items"],"title":"get_characters_character_id_fittings_200_ok","type":"object"},"maxItems":250,"title":"get_characters_character_id_fittings_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fittings.read_fittings.v1"]}],"summary":"Get fittings","tags":["Fittings"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":300},"post":{"description":"Save a new fitting for a character\n\n---\nAlternate route: `/dev/characters/{character_id}/fittings/`\n\nAlternate route: `/v2/characters/{character_id}/fittings/`\n","operationId":"post_characters_character_id_fittings","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"Details about the new fitting","in":"body","name":"fitting","required":true,"schema":{"description":"fitting object","properties":{"description":{"description":"description string","maxLength":500,"minLength":0,"title":"post_characters_character_id_fittings_description","type":"string"},"items":{"description":"items array","items":{"description":"item object","properties":{"flag":{"description":"Fitting location for the item. Entries placed in 'Invalid' will be discarded. If this leaves the fitting with nothing, it will cause an error.","enum":["Cargo","DroneBay","FighterBay","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","Invalid","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","RigSlot0","RigSlot1","RigSlot2","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3"],"title":"post_characters_character_id_fittings_flag","type":"string"},"quantity":{"description":"quantity integer","format":"int32","title":"post_characters_character_id_fittings_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"post_characters_character_id_fittings_type_id","type":"integer"}},"required":["type_id","flag","quantity"],"title":"post_characters_character_id_fittings_item","type":"object"},"maxItems":255,"minItems":1,"title":"post_characters_character_id_fittings_items","type":"array"},"name":{"description":"name string","maxLength":50,"minLength":1,"title":"post_characters_character_id_fittings_name","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"post_characters_character_id_fittings_ship_type_id","type":"integer"}},"required":["name","description","ship_type_id","items"],"title":"post_characters_character_id_fittings_fitting","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"A list of fittings","examples":{"application/json":{"fitting_id":2}},"schema":{"description":"201 created object","properties":{"fitting_id":{"description":"fitting_id integer","format":"int32","title":"post_characters_character_id_fittings_fitting_id","type":"integer"}},"required":["fitting_id"],"title":"post_characters_character_id_fittings_created","type":"object"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fittings.write_fittings.v1"]}],"summary":"Create fitting","tags":["Fittings"],"x-alternate-versions":["dev","v2"]}},"/characters/{character_id}/fittings/{fitting_id}/":{"delete":{"description":"Delete a fitting from a character\n\n---\nAlternate route: `/dev/characters/{character_id}/fittings/{fitting_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/fittings/{fitting_id}/`\n\nAlternate route: `/v1/characters/{character_id}/fittings/{fitting_id}/`\n","operationId":"delete_characters_character_id_fittings_fitting_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"ID for a fitting of this character","format":"int32","in":"path","name":"fitting_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fitting deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fittings.write_fittings.v1"]}],"summary":"Delete fitting","tags":["Fittings"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/fleet/":{"get":{"description":"Return the fleet ID the character is in, if any.\n\n---\nAlternate route: `/legacy/characters/{character_id}/fleet/`\n\nAlternate route: `/v1/characters/{character_id}/fleet/`\n\n---\nThis route is cached for up to 60 seconds\n\n---\nWarning: This route has an upgrade available\n\n---\n[Diff of the upcoming changes](https://esi.evetech.net/diff/latest/dev/#GET-/characters/{character_id}/fleet/)","operationId":"get_characters_character_id_fleet","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Details about the character's fleet","examples":{"application/json":{"fleet_id":1234567890,"role":"fleet_commander","squad_id":-1,"wing_id":-1}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"fleet_id":{"description":"The character's current fleet ID","format":"int64","title":"get_characters_character_id_fleet_fleet_id","type":"integer"},"role":{"description":"Member\u2019s role in fleet","enum":["fleet_commander","squad_commander","squad_member","wing_commander"],"title":"get_characters_character_id_fleet_role","type":"string"},"squad_id":{"description":"ID of the squad the member is in. If not applicable, will be set to -1","format":"int64","title":"get_characters_character_id_fleet_squad_id","type":"integer"},"wing_id":{"description":"ID of the wing the member is in. If not applicable, will be set to -1","format":"int64","title":"get_characters_character_id_fleet_wing_id","type":"integer"}},"required":["fleet_id","wing_id","squad_id","role"],"title":"get_characters_character_id_fleet_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The character is not in a fleet","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_fleet_404_not_found","type":"string"}},"title":"get_characters_character_id_fleet_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.read_fleet.v1"]}],"summary":"Get character fleet info","tags":["Fleets"],"x-alternate-versions":["legacy","v1"],"x-cached-seconds":60}},"/characters/{character_id}/fw/stats/":{"get":{"description":"Statistical overview of a character involved in faction warfare\n\n---\nAlternate route: `/dev/characters/{character_id}/fw/stats/`\n\nAlternate route: `/legacy/characters/{character_id}/fw/stats/`\n\nAlternate route: `/v1/characters/{character_id}/fw/stats/`\n\nAlternate route: `/v2/characters/{character_id}/fw/stats/`\n\n---\nThis route expires daily at 11:05","operationId":"get_characters_character_id_fw_stats","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Faction warfare statistics for a given character","examples":{"application/json":{"enlisted_on":"2017-10-17T00:00:00Z","faction_id":500001,"kills":{"last_week":893,"total":684350,"yesterday":136},"victory_points":{"last_week":102640,"total":52658260,"yesterday":15980}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"current_rank":{"description":"The given character's current faction rank","format":"int32","maximum":9,"minimum":0,"title":"get_characters_character_id_fw_stats_current_rank","type":"integer"},"enlisted_on":{"description":"The enlistment date of the given character into faction warfare. Will not be included if character is not enlisted in faction warfare","format":"date-time","title":"get_characters_character_id_fw_stats_enlisted_on","type":"string"},"faction_id":{"description":"The faction the given character is enlisted to fight for. Will not be included if character is not enlisted in faction warfare","format":"int32","title":"get_characters_character_id_fw_stats_faction_id","type":"integer"},"highest_rank":{"description":"The given character's highest faction rank achieved","format":"int32","maximum":9,"minimum":0,"title":"get_characters_character_id_fw_stats_highest_rank","type":"integer"},"kills":{"description":"Summary of kills done by the given character against enemy factions","properties":{"last_week":{"description":"Last week's total number of kills by a given character against enemy factions","format":"int32","title":"get_characters_character_id_fw_stats_last_week","type":"integer"},"total":{"description":"Total number of kills by a given character against enemy factions since the character enlisted","format":"int32","title":"get_characters_character_id_fw_stats_total","type":"integer"},"yesterday":{"description":"Yesterday's total number of kills by a given character against enemy factions","format":"int32","title":"get_characters_character_id_fw_stats_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_characters_character_id_fw_stats_kills","type":"object"},"victory_points":{"description":"Summary of victory points gained by the given character for the enlisted faction","properties":{"last_week":{"description":"Last week's victory points gained by the given character","format":"int32","title":"get_characters_character_id_fw_stats_victory_points_last_week","type":"integer"},"total":{"description":"Total victory points gained since the given character enlisted","format":"int32","title":"get_characters_character_id_fw_stats_victory_points_total","type":"integer"},"yesterday":{"description":"Yesterday's victory points gained by the given character","format":"int32","title":"get_characters_character_id_fw_stats_victory_points_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_characters_character_id_fw_stats_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_characters_character_id_fw_stats_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_fw_stats.v1"]}],"summary":"Overview of a character involved in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/characters/{character_id}/implants/":{"get":{"description":"Return implants on the active clone of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/implants/`\n\nAlternate route: `/legacy/characters/{character_id}/implants/`\n\nAlternate route: `/v1/characters/{character_id}/implants/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_implants","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of implant type ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_characters_character_id_implants_200_ok","type":"integer"},"maxItems":11,"title":"get_characters_character_id_implants_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-clones.read_implants.v1"]}],"summary":"Get active implants","tags":["Clones"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":120}},"/characters/{character_id}/industry/jobs/":{"get":{"description":"List industry jobs placed by a character\n\n---\nAlternate route: `/dev/characters/{character_id}/industry/jobs/`\n\nAlternate route: `/legacy/characters/{character_id}/industry/jobs/`\n\nAlternate route: `/v1/characters/{character_id}/industry/jobs/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_industry_jobs","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Whether to retrieve completed character industry jobs. Only includes jobs from the past 90 days","in":"query","name":"include_completed","required":false,"type":"boolean"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Industry jobs placed by a character","examples":{"application/json":[{"activity_id":1,"blueprint_id":1015116533326,"blueprint_location_id":60006382,"blueprint_type_id":2047,"cost":118.01,"duration":548,"end_date":"2014-07-19T15:56:14Z","facility_id":60006382,"installer_id":498338451,"job_id":229136101,"licensed_runs":200,"output_location_id":60006382,"runs":1,"start_date":"2014-07-19T15:47:06Z","station_id":60006382,"status":"active"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"activity_id":{"description":"Job activity ID","format":"int32","title":"get_characters_character_id_industry_jobs_activity_id","type":"integer"},"blueprint_id":{"description":"blueprint_id integer","format":"int64","title":"get_characters_character_id_industry_jobs_blueprint_id","type":"integer"},"blueprint_location_id":{"description":"Location ID of the location from which the blueprint was installed. Normally a station ID, but can also be an asset (e.g. container) or corporation facility","format":"int64","title":"get_characters_character_id_industry_jobs_blueprint_location_id","type":"integer"},"blueprint_type_id":{"description":"blueprint_type_id integer","format":"int32","title":"get_characters_character_id_industry_jobs_blueprint_type_id","type":"integer"},"completed_character_id":{"description":"ID of the character which completed this job","format":"int32","title":"get_characters_character_id_industry_jobs_completed_character_id","type":"integer"},"completed_date":{"description":"Date and time when this job was completed","format":"date-time","title":"get_characters_character_id_industry_jobs_completed_date","type":"string"},"cost":{"description":"The sume of job installation fee and industry facility tax","format":"double","title":"get_characters_character_id_industry_jobs_cost","type":"number"},"duration":{"description":"Job duration in seconds","format":"int32","title":"get_characters_character_id_industry_jobs_duration","type":"integer"},"end_date":{"description":"Date and time when this job finished","format":"date-time","title":"get_characters_character_id_industry_jobs_end_date","type":"string"},"facility_id":{"description":"ID of the facility where this job is running","format":"int64","title":"get_characters_character_id_industry_jobs_facility_id","type":"integer"},"installer_id":{"description":"ID of the character which installed this job","format":"int32","title":"get_characters_character_id_industry_jobs_installer_id","type":"integer"},"job_id":{"description":"Unique job ID","format":"int32","title":"get_characters_character_id_industry_jobs_job_id","type":"integer"},"licensed_runs":{"description":"Number of runs blueprint is licensed for","format":"int32","title":"get_characters_character_id_industry_jobs_licensed_runs","type":"integer"},"output_location_id":{"description":"Location ID of the location to which the output of the job will be delivered. Normally a station ID, but can also be a corporation facility","format":"int64","title":"get_characters_character_id_industry_jobs_output_location_id","type":"integer"},"pause_date":{"description":"Date and time when this job was paused (i.e. time when the facility where this job was installed went offline)","format":"date-time","title":"get_characters_character_id_industry_jobs_pause_date","type":"string"},"probability":{"description":"Chance of success for invention","format":"float","title":"get_characters_character_id_industry_jobs_probability","type":"number"},"product_type_id":{"description":"Type ID of product (manufactured, copied or invented)","format":"int32","title":"get_characters_character_id_industry_jobs_product_type_id","type":"integer"},"runs":{"description":"Number of runs for a manufacturing job, or number of copies to make for a blueprint copy","format":"int32","title":"get_characters_character_id_industry_jobs_runs","type":"integer"},"start_date":{"description":"Date and time when this job started","format":"date-time","title":"get_characters_character_id_industry_jobs_start_date","type":"string"},"station_id":{"description":"ID of the station where industry facility is located","format":"int64","title":"get_characters_character_id_industry_jobs_station_id","type":"integer"},"status":{"description":"status string","enum":["active","cancelled","delivered","paused","ready","reverted"],"title":"get_characters_character_id_industry_jobs_status","type":"string"},"successful_runs":{"description":"Number of successful runs for this job. Equal to runs unless this is an invention job","format":"int32","title":"get_characters_character_id_industry_jobs_successful_runs","type":"integer"}},"required":["job_id","installer_id","facility_id","station_id","activity_id","blueprint_id","blueprint_type_id","blueprint_location_id","output_location_id","runs","status","duration","start_date","end_date"],"title":"get_characters_character_id_industry_jobs_200_ok","type":"object"},"maxItems":2000,"title":"get_characters_character_id_industry_jobs_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_character_jobs.v1"]}],"summary":"List character industry jobs","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/killmails/recent/":{"get":{"description":"Return a list of a character's kills and losses going back 90 days\n\n---\nAlternate route: `/dev/characters/{character_id}/killmails/recent/`\n\nAlternate route: `/legacy/characters/{character_id}/killmails/recent/`\n\nAlternate route: `/v1/characters/{character_id}/killmails/recent/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_characters_character_id_killmails_recent","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of killmail IDs and hashes","examples":{"application/json":[{"killmail_hash":"8eef5e8fb6b88fe3407c489df33822b2e3b57a5e","killmail_id":2},{"killmail_hash":"b41ccb498ece33d64019f64c0db392aa3aa701fb","killmail_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"killmail_hash":{"description":"A hash of this killmail","title":"get_characters_character_id_killmails_recent_killmail_hash","type":"string"},"killmail_id":{"description":"ID of this killmail","format":"int32","title":"get_characters_character_id_killmails_recent_killmail_id","type":"integer"}},"required":["killmail_id","killmail_hash"],"title":"get_characters_character_id_killmails_recent_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_killmails_recent_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-killmails.read_killmails.v1"]}],"summary":"Get a character's recent kills and losses","tags":["Killmails"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/characters/{character_id}/location/":{"get":{"description":"Information about the characters current location. Returns the current solar system id, and also the current station or structure ID if applicable\n\n---\nAlternate route: `/dev/characters/{character_id}/location/`\n\nAlternate route: `/legacy/characters/{character_id}/location/`\n\nAlternate route: `/v1/characters/{character_id}/location/`\n\nAlternate route: `/v2/characters/{character_id}/location/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_characters_character_id_location","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Information about the characters current location. Returns the current solar system id, and also the current station or structure ID if applicable","examples":{"application/json":{"solar_system_id":30002505,"structure_id":1000000016989}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_characters_character_id_location_solar_system_id","type":"integer"},"station_id":{"description":"station_id integer","format":"int32","title":"get_characters_character_id_location_station_id","type":"integer"},"structure_id":{"description":"structure_id integer","format":"int64","title":"get_characters_character_id_location_structure_id","type":"integer"}},"required":["solar_system_id"],"title":"get_characters_character_id_location_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-location.read_location.v1"]}],"summary":"Get character location","tags":["Location"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":5}},"/characters/{character_id}/loyalty/points/":{"get":{"description":"Return a list of loyalty points for all corporations the character has worked for\n\n---\nAlternate route: `/dev/characters/{character_id}/loyalty/points/`\n\nAlternate route: `/legacy/characters/{character_id}/loyalty/points/`\n\nAlternate route: `/v1/characters/{character_id}/loyalty/points/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_loyalty_points","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of loyalty points","examples":{"application/json":[{"corporation_id":123,"loyalty_points":100}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_characters_character_id_loyalty_points_corporation_id","type":"integer"},"loyalty_points":{"description":"loyalty_points integer","format":"int32","title":"get_characters_character_id_loyalty_points_loyalty_points","type":"integer"}},"required":["corporation_id","loyalty_points"],"title":"get_characters_character_id_loyalty_points_200_ok","type":"object"},"maxItems":500,"title":"get_characters_character_id_loyalty_points_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_loyalty.v1"]}],"summary":"Get loyalty points","tags":["Loyalty"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/mail/":{"get":{"description":"Return the 50 most recent mail headers belonging to the character that match the query criteria. Queries can be filtered by label, and last_mail_id can be used to paginate backwards\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/`\n\nAlternate route: `/v1/characters/{character_id}/mail/`\n\n---\nThis route is cached for up to 30 seconds","operationId":"get_characters_character_id_mail","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Fetch only mails that match one or more of the given labels","in":"query","items":{"format":"int32","minimum":0,"type":"integer"},"maxItems":25,"minItems":1,"name":"labels","required":false,"type":"array","uniqueItems":true},{"description":"List only mail with an ID lower than the given ID, if present","format":"int32","in":"query","name":"last_mail_id","type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"The requested mail","examples":{"application/json":[{"from":90000001,"is_read":true,"labels":[3],"mail_id":7,"recipients":[{"recipient_id":90000002,"recipient_type":"character"}],"subject":"Title for EVE Mail","timestamp":"2015-09-30T16:07:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"from":{"description":"From whom the mail was sent","format":"int32","title":"get_characters_character_id_mail_from","type":"integer"},"is_read":{"description":"is_read boolean","title":"get_characters_character_id_mail_is_read","type":"boolean"},"labels":{"description":"labels array","items":{"description":"label integer","format":"int32","title":"get_characters_character_id_mail_label","type":"integer"},"maxItems":25,"minimum":0,"title":"get_characters_character_id_mail_labels","type":"array","uniqueItems":true},"mail_id":{"description":"mail_id integer","format":"int32","title":"get_characters_character_id_mail_mail_id","type":"integer"},"recipients":{"description":"Recipients of the mail","items":{"description":"recipient object","properties":{"recipient_id":{"description":"recipient_id integer","format":"int32","title":"get_characters_character_id_mail_recipient_id","type":"integer"},"recipient_type":{"description":"recipient_type string","enum":["alliance","character","corporation","mailing_list"],"title":"get_characters_character_id_mail_recipient_type","type":"string"}},"required":["recipient_type","recipient_id"],"title":"get_characters_character_id_mail_recipient","type":"object"},"maxItems":52,"minItems":1,"title":"get_characters_character_id_mail_recipients","type":"array","uniqueItems":true},"subject":{"description":"Mail subject","title":"get_characters_character_id_mail_subject","type":"string"},"timestamp":{"description":"When the mail was sent","format":"date-time","title":"get_characters_character_id_mail_timestamp","type":"string"}},"title":"get_characters_character_id_mail_200_ok","type":"object"},"maxItems":50,"title":"get_characters_character_id_mail_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.read_mail.v1"]}],"summary":"Return mail headers","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":30},"post":{"description":"Create and send a new mail\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/`\n\nAlternate route: `/v1/characters/{character_id}/mail/`\n","operationId":"post_characters_character_id_mail","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"The mail to send","in":"body","name":"mail","required":true,"schema":{"description":"mail object","properties":{"approved_cost":{"default":0,"description":"approved_cost integer","format":"int64","title":"post_characters_character_id_mail_approved_cost","type":"integer"},"body":{"description":"body string","maxLength":10000,"title":"post_characters_character_id_mail_body","type":"string"},"recipients":{"description":"recipients array","items":{"description":"recipient object","properties":{"recipient_id":{"description":"recipient_id integer","format":"int32","title":"post_characters_character_id_mail_recipient_id","type":"integer"},"recipient_type":{"description":"recipient_type string","enum":["alliance","character","corporation","mailing_list"],"title":"post_characters_character_id_mail_recipient_type","type":"string"}},"required":["recipient_type","recipient_id"],"title":"post_characters_character_id_mail_recipient","type":"object"},"maxItems":50,"minItems":1,"title":"post_characters_character_id_mail_recipients","type":"array"},"subject":{"description":"subject string","maxLength":1000,"title":"post_characters_character_id_mail_subject","type":"string"}},"required":["recipients","subject","body"],"title":"post_characters_character_id_mail_mail","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"Mail created","examples":{"application/json":13},"schema":{"description":"Mail ID","format":"int32","title":"post_characters_character_id_mail_created","type":"integer"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}},"520":{"description":"Internal error thrown from the EVE server. Most of the time this means you have hit an EVE server rate limit","examples":{"application/json":{"error":"Error 520 message"}},"schema":{"description":"Error 520","properties":{"error":{"description":"Error 520 message","title":"post_characters_character_id_mail_520_error_520","type":"string"}},"title":"post_characters_character_id_mail_error_520","type":"object"}}},"security":[{"evesso":["esi-mail.send_mail.v1"]}],"summary":"Send a new mail","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/mail/labels/":{"get":{"description":"Return a list of the users mail labels, unread counts for each label and a total unread count.\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/labels/`\n\nAlternate route: `/v3/characters/{character_id}/mail/labels/`\n\n---\nThis route is cached for up to 30 seconds","operationId":"get_characters_character_id_mail_labels","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of mail labels and unread counts","examples":{"application/json":{"labels":[{"color":"#660066","label_id":16,"name":"PINK","unread_count":4},{"color":"#ffffff","label_id":17,"name":"WHITE","unread_count":1}],"total_unread_count":5}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"labels":{"description":"labels array","items":{"description":"label object","properties":{"color":{"default":"#ffffff","description":"color string","enum":["#0000fe","#006634","#0099ff","#00ff33","#01ffff","#349800","#660066","#666666","#999999","#99ffff","#9a0000","#ccff9a","#e6e6e6","#fe0000","#ff6600","#ffff01","#ffffcd","#ffffff"],"title":"get_characters_character_id_mail_labels_color","type":"string"},"label_id":{"description":"label_id integer","format":"int32","minimum":0,"title":"get_characters_character_id_mail_labels_label_id","type":"integer"},"name":{"description":"name string","maxLength":40,"title":"get_characters_character_id_mail_labels_name","type":"string"},"unread_count":{"description":"unread_count integer","format":"int32","minimum":0,"title":"get_characters_character_id_mail_labels_unread_count","type":"integer"}},"title":"get_characters_character_id_mail_labels_label","type":"object"},"maxItems":30,"title":"get_characters_character_id_mail_labels_labels","type":"array"},"total_unread_count":{"description":"total_unread_count integer","format":"int32","minimum":0,"title":"get_characters_character_id_mail_labels_total_unread_count","type":"integer"}},"title":"get_characters_character_id_mail_labels_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.read_mail.v1"]}],"summary":"Get mail labels and unread counts","tags":["Mail"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":30},"post":{"description":"Create a mail label\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/labels/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/labels/`\n\nAlternate route: `/v2/characters/{character_id}/mail/labels/`\n","operationId":"post_characters_character_id_mail_labels","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"Label to create","in":"body","name":"label","required":true,"schema":{"description":"label object","properties":{"color":{"default":"#ffffff","description":"Hexadecimal string representing label color, in RGB format","enum":["#0000fe","#006634","#0099ff","#00ff33","#01ffff","#349800","#660066","#666666","#999999","#99ffff","#9a0000","#ccff9a","#e6e6e6","#fe0000","#ff6600","#ffff01","#ffffcd","#ffffff"],"title":"post_characters_character_id_mail_labels_color","type":"string"},"name":{"description":"name string","maxLength":40,"minLength":1,"title":"post_characters_character_id_mail_labels_name","type":"string"}},"required":["name"],"title":"post_characters_character_id_mail_labels_label","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"Label created","examples":{"application/json":128},"schema":{"description":"Label ID","format":"int32","title":"post_characters_character_id_mail_labels_created","type":"integer"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.organize_mail.v1"]}],"summary":"Create a mail label","tags":["Mail"],"x-alternate-versions":["dev","legacy","v2"]}},"/characters/{character_id}/mail/labels/{label_id}/":{"delete":{"description":"Delete a mail label\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/labels/{label_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/labels/{label_id}/`\n\nAlternate route: `/v1/characters/{character_id}/mail/labels/{label_id}/`\n","operationId":"delete_characters_character_id_mail_labels_label_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"An EVE label id","format":"int32","in":"path","name":"label_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Label deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Default labels cannot be deleted","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"delete_characters_character_id_mail_labels_label_id_422_unprocessable_entity","type":"string"}},"title":"delete_characters_character_id_mail_labels_label_id_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.organize_mail.v1"]}],"summary":"Delete a mail label","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/mail/lists/":{"get":{"description":"Return all mailing lists that the character is subscribed to\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/lists/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/lists/`\n\nAlternate route: `/v1/characters/{character_id}/mail/lists/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_mail_lists","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Mailing lists","examples":{"application/json":[{"mailing_list_id":1,"name":"test_mailing_list"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"mailing_list_id":{"description":"Mailing list ID","format":"int32","title":"get_characters_character_id_mail_lists_mailing_list_id","type":"integer"},"name":{"description":"name string","title":"get_characters_character_id_mail_lists_name","type":"string"}},"required":["mailing_list_id","name"],"title":"get_characters_character_id_mail_lists_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_mail_lists_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.read_mail.v1"]}],"summary":"Return mailing list subscriptions","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":120}},"/characters/{character_id}/mail/{mail_id}/":{"delete":{"description":"Delete a mail\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/v1/characters/{character_id}/mail/{mail_id}/`\n","operationId":"delete_characters_character_id_mail_mail_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"An EVE mail ID","format":"int32","in":"path","name":"mail_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Mail deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.organize_mail.v1"]}],"summary":"Delete a mail","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"]},"get":{"description":"Return the contents of an EVE mail\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/v1/characters/{character_id}/mail/{mail_id}/`\n\n---\nThis route is cached for up to 30 seconds","operationId":"get_characters_character_id_mail_mail_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"An EVE mail ID","format":"int32","in":"path","name":"mail_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Contents of a mail","examples":{"application/json":{"body":"blah blah blah","from":90000001,"labels":[2,32],"read":true,"subject":"test","timestamp":"2015-09-30T16:07:00Z"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"body":{"description":"Mail's body","title":"get_characters_character_id_mail_mail_id_body","type":"string"},"from":{"description":"From whom the mail was sent","format":"int32","title":"get_characters_character_id_mail_mail_id_from","type":"integer"},"labels":{"description":"Labels attached to the mail","items":{"description":"label integer","format":"int32","minimum":0,"title":"get_characters_character_id_mail_mail_id_label","type":"integer","uniqueItems":true},"maxItems":25,"title":"get_characters_character_id_mail_mail_id_labels","type":"array"},"read":{"description":"Whether the mail is flagged as read","title":"get_characters_character_id_mail_mail_id_read","type":"boolean"},"recipients":{"description":"Recipients of the mail","items":{"description":"recipient object","properties":{"recipient_id":{"description":"recipient_id integer","format":"int32","title":"get_characters_character_id_mail_mail_id_recipient_id","type":"integer"},"recipient_type":{"description":"recipient_type string","enum":["alliance","character","corporation","mailing_list"],"title":"get_characters_character_id_mail_mail_id_recipient_type","type":"string"}},"required":["recipient_type","recipient_id"],"title":"get_characters_character_id_mail_mail_id_recipient","type":"object"},"maxItems":52,"minItems":1,"title":"get_characters_character_id_mail_mail_id_recipients","type":"array","uniqueItems":true},"subject":{"description":"Mail subject","title":"get_characters_character_id_mail_mail_id_subject","type":"string"},"timestamp":{"description":"When the mail was sent","format":"date-time","title":"get_characters_character_id_mail_mail_id_timestamp","type":"string"}},"title":"get_characters_character_id_mail_mail_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Mail not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_characters_character_id_mail_mail_id_404_not_found","type":"string"}},"title":"get_characters_character_id_mail_mail_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.read_mail.v1"]}],"summary":"Return a mail","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":30},"put":{"description":"Update metadata about a mail\n\n---\nAlternate route: `/dev/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/legacy/characters/{character_id}/mail/{mail_id}/`\n\nAlternate route: `/v1/characters/{character_id}/mail/{mail_id}/`\n","operationId":"put_characters_character_id_mail_mail_id","parameters":[{"$ref":"#/parameters/character_id"},{"description":"Data used to update the mail","in":"body","name":"contents","required":true,"schema":{"description":"contents object","properties":{"labels":{"description":"Labels to assign to the mail. Pre-existing labels are unassigned.","items":{"description":"label integer","format":"int32","minimum":0,"title":"put_characters_character_id_mail_mail_id_label","type":"integer","uniqueItems":true},"maxItems":25,"title":"put_characters_character_id_mail_mail_id_labels","type":"array"},"read":{"description":"Whether the mail is flagged as read","title":"put_characters_character_id_mail_mail_id_read","type":"boolean"}},"title":"put_characters_character_id_mail_mail_id_contents","type":"object"}},{"$ref":"#/parameters/datasource"},{"description":"An EVE mail ID","format":"int32","in":"path","name":"mail_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Mail updated"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-mail.organize_mail.v1"]}],"summary":"Update metadata about a mail","tags":["Mail"],"x-alternate-versions":["dev","legacy","v1"]}},"/characters/{character_id}/medals/":{"get":{"description":"Return a list of medals the character has\n\n---\nAlternate route: `/dev/characters/{character_id}/medals/`\n\nAlternate route: `/legacy/characters/{character_id}/medals/`\n\nAlternate route: `/v1/characters/{character_id}/medals/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_medals","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of medals","examples":{"application/json":[{"corporation_id":98000001,"date":"2017-03-16T15:01:45Z","description":"For 33 corp!","graphics":[{"color":-1,"graphic":"caldari.1_1","layer":0,"part":1},{"color":-330271,"graphic":"caldari.1_2","layer":1,"part":1},{"color":-1,"graphic":"compass.1_2","layer":0,"part":2}],"issuer_id":2112000002,"medal_id":3,"reason":"Thanks!","status":"private","title":"33 tester medal"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_characters_character_id_medals_corporation_id","type":"integer"},"date":{"description":"date string","format":"date-time","title":"get_characters_character_id_medals_date","type":"string"},"description":{"description":"description string","title":"get_characters_character_id_medals_description","type":"string"},"graphics":{"description":"graphics array","items":{"description":"graphic object","properties":{"color":{"description":"color integer","format":"int32","title":"get_characters_character_id_medals_color","type":"integer"},"graphic":{"description":"graphic string","title":"get_characters_character_id_medals_graphic_graphic","type":"string"},"layer":{"description":"layer integer","format":"int32","title":"get_characters_character_id_medals_layer","type":"integer"},"part":{"description":"part integer","format":"int32","title":"get_characters_character_id_medals_part","type":"integer"}},"required":["part","layer","graphic"],"title":"get_characters_character_id_medals_graphic","type":"object"},"maxItems":9,"minItems":3,"title":"get_characters_character_id_medals_graphics","type":"array"},"issuer_id":{"description":"issuer_id integer","format":"int32","title":"get_characters_character_id_medals_issuer_id","type":"integer"},"medal_id":{"description":"medal_id integer","format":"int32","title":"get_characters_character_id_medals_medal_id","type":"integer"},"reason":{"description":"reason string","title":"get_characters_character_id_medals_reason","type":"string"},"status":{"description":"status string","enum":["public","private"],"title":"get_characters_character_id_medals_status","type":"string"},"title":{"description":"title string","title":"get_characters_character_id_medals_title","type":"string"}},"required":["medal_id","title","description","corporation_id","issuer_id","date","reason","status","graphics"],"title":"get_characters_character_id_medals_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_medals_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_medals.v1"]}],"summary":"Get medals","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/mining/":{"get":{"description":"Paginated record of all mining done by a character for the past 30 days\n\n\n---\nAlternate route: `/dev/characters/{character_id}/mining/`\n\nAlternate route: `/legacy/characters/{character_id}/mining/`\n\nAlternate route: `/v1/characters/{character_id}/mining/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_mining","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Mining ledger of a character","examples":{"application/json":[{"date":"2017-09-19","quantity":7004,"solar_system_id":30003707,"type_id":17471},{"date":"2017-09-18","quantity":5199,"solar_system_id":30003707,"type_id":17471}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"date":{"description":"date string","format":"date","title":"get_characters_character_id_mining_date","type":"string"},"quantity":{"description":"quantity integer","format":"int64","title":"get_characters_character_id_mining_quantity","type":"integer"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_characters_character_id_mining_solar_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_mining_type_id","type":"integer"}},"required":["date","solar_system_id","type_id","quantity"],"title":"get_characters_character_id_mining_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_mining_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_character_mining.v1"]}],"summary":"Character mining ledger","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":600}},"/characters/{character_id}/notifications/":{"get":{"description":"Return character notifications\n\n---\nAlternate route: `/dev/characters/{character_id}/notifications/`\n\nAlternate route: `/v5/characters/{character_id}/notifications/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_notifications","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Returns your recent notifications","examples":{"application/json":[{"is_read":true,"notification_id":1,"sender_id":1000132,"sender_type":"corporation","text":"amount: 3731016.4000000004\\nitemID: 1024881021663\\npayout: 1\\n","timestamp":"2017-08-16T10:08:00Z","type":"InsurancePayoutMsg"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_read":{"description":"is_read boolean","title":"get_characters_character_id_notifications_is_read","type":"boolean"},"notification_id":{"description":"notification_id integer","format":"int64","title":"get_characters_character_id_notifications_notification_id","type":"integer"},"sender_id":{"description":"sender_id integer","format":"int32","title":"get_characters_character_id_notifications_sender_id","type":"integer"},"sender_type":{"description":"sender_type string","enum":["character","corporation","alliance","faction","other"],"title":"get_characters_character_id_notifications_sender_type","type":"string"},"text":{"description":"text string","title":"get_characters_character_id_notifications_text","type":"string"},"timestamp":{"description":"timestamp string","format":"date-time","title":"get_characters_character_id_notifications_timestamp","type":"string"},"type":{"description":"type string","enum":["AcceptedAlly","AcceptedSurrender","AllAnchoringMsg","AllMaintenanceBillMsg","AllStrucInvulnerableMsg","AllStructVulnerableMsg","AllWarCorpJoinedAllianceMsg","AllWarDeclaredMsg","AllWarInvalidatedMsg","AllWarRetractedMsg","AllWarSurrenderMsg","AllianceCapitalChanged","AllianceWarDeclaredV2","AllyContractCancelled","AllyJoinedWarAggressorMsg","AllyJoinedWarAllyMsg","AllyJoinedWarDefenderMsg","BattlePunishFriendlyFire","BillOutOfMoneyMsg","BillPaidCorpAllMsg","BountyClaimMsg","BountyESSShared","BountyESSTaken","BountyPlacedAlliance","BountyPlacedChar","BountyPlacedCorp","BountyYourBountyClaimed","BuddyConnectContactAdd","CharAppAcceptMsg","CharAppRejectMsg","CharAppWithdrawMsg","CharLeftCorpMsg","CharMedalMsg","CharTerminationMsg","CloneActivationMsg","CloneActivationMsg2","CloneMovedMsg","CloneRevokedMsg1","CloneRevokedMsg2","CombatOperationFinished","ContactAdd","ContactEdit","ContainerPasswordMsg","CorpAllBillMsg","CorpAppAcceptMsg","CorpAppInvitedMsg","CorpAppNewMsg","CorpAppRejectCustomMsg","CorpAppRejectMsg","CorpBecameWarEligible","CorpDividendMsg","CorpFriendlyFireDisableTimerCompleted","CorpFriendlyFireDisableTimerStarted","CorpFriendlyFireEnableTimerCompleted","CorpFriendlyFireEnableTimerStarted","CorpKicked","CorpLiquidationMsg","CorpNewCEOMsg","CorpNewsMsg","CorpNoLongerWarEligible","CorpOfficeExpirationMsg","CorpStructLostMsg","CorpTaxChangeMsg","CorpVoteCEORevokedMsg","CorpVoteMsg","CorpWarDeclaredMsg","CorpWarDeclaredV2","CorpWarFightingLegalMsg","CorpWarInvalidatedMsg","CorpWarRetractedMsg","CorpWarSurrenderMsg","CustomsMsg","DeclareWar","DistrictAttacked","DustAppAcceptedMsg","EntosisCaptureStarted","FWAllianceKickMsg","FWAllianceWarningMsg","FWCharKickMsg","FWCharRankGainMsg","FWCharRankLossMsg","FWCharWarningMsg","FWCorpJoinMsg","FWCorpKickMsg","FWCorpLeaveMsg","FWCorpWarningMsg","FacWarCorpJoinRequestMsg","FacWarCorpJoinWithdrawMsg","FacWarCorpLeaveRequestMsg","FacWarCorpLeaveWithdrawMsg","FacWarLPDisqualifiedEvent","FacWarLPDisqualifiedKill","FacWarLPPayoutEvent","FacWarLPPayoutKill","GameTimeAdded","GameTimeReceived","GameTimeSent","GiftReceived","IHubDestroyedByBillFailure","IncursionCompletedMsg","IndustryOperationFinished","IndustryTeamAuctionLost","IndustryTeamAuctionWon","InfrastructureHubBillAboutToExpire","InsuranceExpirationMsg","InsuranceFirstShipMsg","InsuranceInvalidatedMsg","InsuranceIssuedMsg","InsurancePayoutMsg","InvasionSystemLogin","JumpCloneDeletedMsg1","JumpCloneDeletedMsg2","KillReportFinalBlow","KillReportVictim","KillRightAvailable","KillRightAvailableOpen","KillRightEarned","KillRightUnavailable","KillRightUnavailableOpen","KillRightUsed","LocateCharMsg","MadeWarMutual","MercOfferRetractedMsg","MercOfferedNegotiationMsg","MissionOfferExpirationMsg","MissionTimeoutMsg","MoonminingAutomaticFracture","MoonminingExtractionCancelled","MoonminingExtractionFinished","MoonminingExtractionStarted","MoonminingLaserFired","MutualWarExpired","MutualWarInviteAccepted","MutualWarInviteRejected","MutualWarInviteSent","NPCStandingsGained","NPCStandingsLost","OfferToAllyRetracted","OfferedSurrender","OfferedToAlly","OldLscMessages","OperationFinished","OrbitalAttacked","OrbitalReinforced","OwnershipTransferred","RaffleCreated","RaffleExpired","RaffleFinished","ReimbursementMsg","ResearchMissionAvailableMsg","RetractsWar","SeasonalChallengeCompleted","SovAllClaimAquiredMsg","SovAllClaimLostMsg","SovCommandNodeEventStarted","SovCorpBillLateMsg","SovCorpClaimFailMsg","SovDisruptorMsg","SovStationEnteredFreeport","SovStructureDestroyed","SovStructureReinforced","SovStructureSelfDestructCancel","SovStructureSelfDestructFinished","SovStructureSelfDestructRequested","SovereigntyIHDamageMsg","SovereigntySBUDamageMsg","SovereigntyTCUDamageMsg","StationAggressionMsg1","StationAggressionMsg2","StationConquerMsg","StationServiceDisabled","StationServiceEnabled","StationStateChangeMsg","StoryLineMissionAvailableMsg","StructureAnchoring","StructureCourierContractChanged","StructureDestroyed","StructureFuelAlert","StructureItemsDelivered","StructureItemsMovedToSafety","StructureLostArmor","StructureLostShields","StructureOnline","StructureServicesOffline","StructureUnanchoring","StructureUnderAttack","StructureWentHighPower","StructureWentLowPower","StructuresJobsCancelled","StructuresJobsPaused","StructuresReinforcementChanged","TowerAlertMsg","TowerResourceAlertMsg","TransactionReversalMsg","TutorialMsg","WarAdopted ","WarAllyInherited","WarAllyOfferDeclinedMsg","WarConcordInvalidates","WarDeclared","WarHQRemovedFromSpace","WarInherited","WarInvalid","WarRetracted","WarRetractedByConcord","WarSurrenderDeclinedMsg","WarSurrenderOfferMsg"],"title":"get_characters_character_id_notifications_type","type":"string"}},"required":["notification_id","type","sender_id","sender_type","timestamp"],"title":"get_characters_character_id_notifications_200_ok","type":"object"},"maxItems":500,"title":"get_characters_character_id_notifications_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_notifications.v1"]}],"summary":"Get character notifications","tags":["Character"],"x-alternate-versions":["dev","v5"],"x-cached-seconds":600}},"/characters/{character_id}/notifications/contacts/":{"get":{"description":"Return notifications about having been added to someone's contact list\n\n---\nAlternate route: `/dev/characters/{character_id}/notifications/contacts/`\n\nAlternate route: `/legacy/characters/{character_id}/notifications/contacts/`\n\nAlternate route: `/v1/characters/{character_id}/notifications/contacts/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_notifications_contacts","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contact notifications","examples":{"application/json":[{"message":"hello friend :3","notification_id":1,"send_date":"2017-08-16T10:08:00Z","sender_character_id":95465499,"standing_level":1.5}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"message":{"description":"message string","title":"get_characters_character_id_notifications_contacts_message","type":"string"},"notification_id":{"description":"notification_id integer","format":"int32","title":"get_characters_character_id_notifications_contacts_notification_id","type":"integer"},"send_date":{"description":"send_date string","format":"date-time","title":"get_characters_character_id_notifications_contacts_send_date","type":"string"},"sender_character_id":{"description":"sender_character_id integer","format":"int32","title":"get_characters_character_id_notifications_contacts_sender_character_id","type":"integer"},"standing_level":{"description":"A number representing the standing level the receiver has been added at by the sender. The standing levels are as follows: -10 -> Terrible | -5 -> Bad | 0 -> Neutral | 5 -> Good | 10 -> Excellent","format":"float","title":"get_characters_character_id_notifications_contacts_standing_level","type":"number"}},"required":["notification_id","send_date","standing_level","message","sender_character_id"],"title":"get_characters_character_id_notifications_contacts_200_ok","type":"object"},"maxItems":50,"title":"get_characters_character_id_notifications_contacts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_notifications.v1"]}],"summary":"Get new contact notifications","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":600}},"/characters/{character_id}/online/":{"get":{"description":"Checks if the character is currently online\n\n---\nAlternate route: `/dev/characters/{character_id}/online/`\n\nAlternate route: `/v2/characters/{character_id}/online/`\n\nAlternate route: `/v3/characters/{character_id}/online/`\n\n---\nThis route is cached for up to 60 seconds","operationId":"get_characters_character_id_online","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Object describing the character's online status","examples":{"application/json":{"last_login":"2017-01-02T03:04:05Z","last_logout":"2017-01-02T04:05:06Z","logins":9001,"online":true}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"last_login":{"description":"Timestamp of the last login","format":"date-time","title":"get_characters_character_id_online_last_login","type":"string"},"last_logout":{"description":"Timestamp of the last logout","format":"date-time","title":"get_characters_character_id_online_last_logout","type":"string"},"logins":{"description":"Total number of times the character has logged in","format":"int32","title":"get_characters_character_id_online_logins","type":"integer"},"online":{"description":"If the character is online","title":"get_characters_character_id_online_online","type":"boolean"}},"required":["online"],"title":"get_characters_character_id_online_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-location.read_online.v1"]}],"summary":"Get character online","tags":["Location"],"x-alternate-versions":["dev","v2","v3"],"x-cached-seconds":60}},"/characters/{character_id}/opportunities/":{"get":{"description":"Return a list of tasks finished by a character\n\n---\nAlternate route: `/dev/characters/{character_id}/opportunities/`\n\nAlternate route: `/legacy/characters/{character_id}/opportunities/`\n\nAlternate route: `/v1/characters/{character_id}/opportunities/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_opportunities","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of opportunities task ids","examples":{"application/json":[{"completed_at":"2016-04-29T12:34:56Z","task_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"completed_at":{"description":"completed_at string","format":"date-time","title":"get_characters_character_id_opportunities_completed_at","type":"string"},"task_id":{"description":"task_id integer","format":"int32","title":"get_characters_character_id_opportunities_task_id","type":"integer"}},"required":["task_id","completed_at"],"title":"get_characters_character_id_opportunities_200_ok","type":"object"},"maxItems":100,"title":"get_characters_character_id_opportunities_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_opportunities.v1"]}],"summary":"Get a character's completed tasks","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/orders/":{"get":{"description":"List open market orders placed by a character\n\n---\nAlternate route: `/dev/characters/{character_id}/orders/`\n\nAlternate route: `/v2/characters/{character_id}/orders/`\n\n---\nThis route is cached for up to 1200 seconds","operationId":"get_characters_character_id_orders","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Open market orders placed by a character","examples":{"application/json":[{"duration":30,"escrow":45.6,"is_buy_order":true,"is_corporation":false,"issued":"2016-09-03T05:12:25Z","location_id":456,"min_volume":1,"order_id":123,"price":33.3,"range":"station","region_id":123,"type_id":456,"volume_remain":4422,"volume_total":123456}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"Number of days for which order is valid (starting from the issued date). An order expires at time issued + duration","format":"int32","title":"get_characters_character_id_orders_duration","type":"integer"},"escrow":{"description":"For buy orders, the amount of ISK in escrow","format":"double","title":"get_characters_character_id_orders_escrow","type":"number"},"is_buy_order":{"description":"True if the order is a bid (buy) order","title":"get_characters_character_id_orders_is_buy_order","type":"boolean"},"is_corporation":{"description":"Signifies whether the buy/sell order was placed on behalf of a corporation.","title":"get_characters_character_id_orders_is_corporation","type":"boolean"},"issued":{"description":"Date and time when this order was issued","format":"date-time","title":"get_characters_character_id_orders_issued","type":"string"},"location_id":{"description":"ID of the location where order was placed","format":"int64","title":"get_characters_character_id_orders_location_id","type":"integer"},"min_volume":{"description":"For buy orders, the minimum quantity that will be accepted in a matching sell order","format":"int32","title":"get_characters_character_id_orders_min_volume","type":"integer"},"order_id":{"description":"Unique order ID","format":"int64","title":"get_characters_character_id_orders_order_id","type":"integer"},"price":{"description":"Cost per unit for this order","format":"double","title":"get_characters_character_id_orders_price","type":"number"},"range":{"description":"Valid order range, numbers are ranges in jumps","enum":["1","10","2","20","3","30","4","40","5","region","solarsystem","station"],"title":"get_characters_character_id_orders_range","type":"string"},"region_id":{"description":"ID of the region where order was placed","format":"int32","title":"get_characters_character_id_orders_region_id","type":"integer"},"type_id":{"description":"The type ID of the item transacted in this order","format":"int32","title":"get_characters_character_id_orders_type_id","type":"integer"},"volume_remain":{"description":"Quantity of items still required or offered","format":"int32","title":"get_characters_character_id_orders_volume_remain","type":"integer"},"volume_total":{"description":"Quantity of items required or offered at time order was placed","format":"int32","title":"get_characters_character_id_orders_volume_total","type":"integer"}},"required":["is_corporation","duration","order_id","type_id","region_id","location_id","range","price","volume_total","volume_remain","issued"],"title":"get_characters_character_id_orders_200_ok","type":"object"},"maxItems":305,"title":"get_characters_character_id_orders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.read_character_orders.v1"]}],"summary":"List open orders from a character","tags":["Market"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":1200}},"/characters/{character_id}/orders/history/":{"get":{"description":"List cancelled and expired market orders placed by a character up to 90 days in the past.\n\n---\nAlternate route: `/dev/characters/{character_id}/orders/history/`\n\nAlternate route: `/legacy/characters/{character_id}/orders/history/`\n\nAlternate route: `/v1/characters/{character_id}/orders/history/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_orders_history","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Expired and cancelled market orders placed by a character","examples":{"application/json":[{"duration":30,"escrow":45.6,"is_buy_order":true,"is_corporation":false,"issued":"2016-09-03T05:12:25Z","location_id":456,"min_volume":1,"order_id":123,"price":33.3,"range":"station","region_id":123,"state":"expired","type_id":456,"volume_remain":4422,"volume_total":123456}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"Number of days the order was valid for (starting from the issued date). An order expires at time issued + duration","format":"int32","title":"get_characters_character_id_orders_history_duration","type":"integer"},"escrow":{"description":"For buy orders, the amount of ISK in escrow","format":"double","title":"get_characters_character_id_orders_history_escrow","type":"number"},"is_buy_order":{"description":"True if the order is a bid (buy) order","title":"get_characters_character_id_orders_history_is_buy_order","type":"boolean"},"is_corporation":{"description":"Signifies whether the buy/sell order was placed on behalf of a corporation.","title":"get_characters_character_id_orders_history_is_corporation","type":"boolean"},"issued":{"description":"Date and time when this order was issued","format":"date-time","title":"get_characters_character_id_orders_history_issued","type":"string"},"location_id":{"description":"ID of the location where order was placed","format":"int64","title":"get_characters_character_id_orders_history_location_id","type":"integer"},"min_volume":{"description":"For buy orders, the minimum quantity that will be accepted in a matching sell order","format":"int32","title":"get_characters_character_id_orders_history_min_volume","type":"integer"},"order_id":{"description":"Unique order ID","format":"int64","title":"get_characters_character_id_orders_history_order_id","type":"integer"},"price":{"description":"Cost per unit for this order","format":"double","title":"get_characters_character_id_orders_history_price","type":"number"},"range":{"description":"Valid order range, numbers are ranges in jumps","enum":["1","10","2","20","3","30","4","40","5","region","solarsystem","station"],"title":"get_characters_character_id_orders_history_range","type":"string"},"region_id":{"description":"ID of the region where order was placed","format":"int32","title":"get_characters_character_id_orders_history_region_id","type":"integer"},"state":{"description":"Current order state","enum":["cancelled","expired"],"title":"get_characters_character_id_orders_history_state","type":"string"},"type_id":{"description":"The type ID of the item transacted in this order","format":"int32","title":"get_characters_character_id_orders_history_type_id","type":"integer"},"volume_remain":{"description":"Quantity of items still required or offered","format":"int32","title":"get_characters_character_id_orders_history_volume_remain","type":"integer"},"volume_total":{"description":"Quantity of items required or offered at time order was placed","format":"int32","title":"get_characters_character_id_orders_history_volume_total","type":"integer"}},"required":["is_corporation","duration","state","order_id","type_id","region_id","location_id","range","price","volume_total","volume_remain","issued"],"title":"get_characters_character_id_orders_history_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_orders_history_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.read_character_orders.v1"]}],"summary":"List historical orders by a character","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/planets/":{"get":{"description":"Returns a list of all planetary colonies owned by a character.\n\n---\nAlternate route: `/dev/characters/{character_id}/planets/`\n\nAlternate route: `/legacy/characters/{character_id}/planets/`\n\nAlternate route: `/v1/characters/{character_id}/planets/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_planets","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of colonies","examples":{"application/json":[{"last_update":"2016-11-28T16:42:51Z","num_pins":1,"owner_id":90000001,"planet_id":40023691,"planet_type":"plasma","solar_system_id":30000379,"upgrade_level":0},{"last_update":"2016-11-28T16:41:54Z","num_pins":1,"owner_id":90000001,"planet_id":40023697,"planet_type":"barren","solar_system_id":30000379,"upgrade_level":0}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"last_update":{"description":"last_update string","format":"date-time","title":"get_characters_character_id_planets_last_update","type":"string"},"num_pins":{"description":"num_pins integer","format":"int32","minimum":1,"title":"get_characters_character_id_planets_num_pins","type":"integer"},"owner_id":{"description":"owner_id integer","format":"int32","title":"get_characters_character_id_planets_owner_id","type":"integer"},"planet_id":{"description":"planet_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id","type":"integer"},"planet_type":{"description":"planet_type string","enum":["temperate","barren","oceanic","ice","gas","lava","storm","plasma"],"title":"get_characters_character_id_planets_planet_type","type":"string"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_characters_character_id_planets_solar_system_id","type":"integer"},"upgrade_level":{"description":"upgrade_level integer","format":"int32","maximum":5,"minimum":0,"title":"get_characters_character_id_planets_upgrade_level","type":"integer"}},"required":["solar_system_id","planet_id","planet_type","owner_id","last_update","upgrade_level","num_pins"],"title":"get_characters_character_id_planets_200_ok","type":"object"},"maxItems":10,"title":"get_characters_character_id_planets_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-planets.manage_planets.v1"]}],"summary":"Get colonies","tags":["Planetary Interaction"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":600}},"/characters/{character_id}/planets/{planet_id}/":{"get":{"description":"Returns full details on the layout of a single planetary colony, including links, pins and routes. Note: Planetary information is only recalculated when the colony is viewed through the client. Information will not update until this criteria is met.\n\n---\nAlternate route: `/dev/characters/{character_id}/planets/{planet_id}/`\n\nAlternate route: `/v3/characters/{character_id}/planets/{planet_id}/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_characters_character_id_planets_planet_id","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Planet id of the target planet","format":"int32","in":"path","name":"planet_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Colony layout","examples":{"application/json":{"links":[{"destination_pin_id":1000000017022,"link_level":0,"source_pin_id":1000000017021}],"pins":[{"latitude":1.55087844973,"longitude":0.717145933308,"pin_id":1000000017021,"type_id":2254},{"latitude":1.53360639935,"longitude":0.709775584394,"pin_id":1000000017022,"type_id":2256}],"routes":[{"content_type_id":2393,"destination_pin_id":1000000017030,"quantity":20,"route_id":4,"source_pin_id":1000000017029}]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"links":{"description":"links array","items":{"description":"link object","properties":{"destination_pin_id":{"description":"destination_pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_destination_pin_id","type":"integer"},"link_level":{"description":"link_level integer","format":"int32","maximum":10,"minimum":0,"title":"get_characters_character_id_planets_planet_id_link_level","type":"integer"},"source_pin_id":{"description":"source_pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_source_pin_id","type":"integer"}},"required":["source_pin_id","destination_pin_id","link_level"],"title":"get_characters_character_id_planets_planet_id_link","type":"object"},"maxItems":500,"title":"get_characters_character_id_planets_planet_id_links","type":"array"},"pins":{"description":"pins array","items":{"description":"pin object","properties":{"contents":{"description":"contents array","items":{"description":"content object","properties":{"amount":{"description":"amount integer","format":"int64","title":"get_characters_character_id_planets_planet_id_amount","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_content_type_id","type":"integer"}},"required":["type_id","amount"],"title":"get_characters_character_id_planets_planet_id_content","type":"object"},"maxItems":90,"title":"get_characters_character_id_planets_planet_id_contents","type":"array"},"expiry_time":{"description":"expiry_time string","format":"date-time","title":"get_characters_character_id_planets_planet_id_expiry_time","type":"string"},"extractor_details":{"description":"extractor_details object","properties":{"cycle_time":{"description":"in seconds","format":"int32","title":"get_characters_character_id_planets_planet_id_cycle_time","type":"integer"},"head_radius":{"description":"head_radius number","format":"float","title":"get_characters_character_id_planets_planet_id_head_radius","type":"number"},"heads":{"description":"heads array","items":{"description":"head object","properties":{"head_id":{"description":"head_id integer","format":"int32","maximum":9,"minimum":0,"title":"get_characters_character_id_planets_planet_id_head_id","type":"integer"},"latitude":{"description":"latitude number","format":"float","title":"get_characters_character_id_planets_planet_id_head_latitude","type":"number"},"longitude":{"description":"longitude number","format":"float","title":"get_characters_character_id_planets_planet_id_head_longitude","type":"number"}},"required":["head_id","latitude","longitude"],"title":"get_characters_character_id_planets_planet_id_head","type":"object"},"maxItems":10,"title":"get_characters_character_id_planets_planet_id_heads","type":"array"},"product_type_id":{"description":"product_type_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_product_type_id","type":"integer"},"qty_per_cycle":{"description":"qty_per_cycle integer","format":"int32","title":"get_characters_character_id_planets_planet_id_qty_per_cycle","type":"integer"}},"required":["heads"],"title":"get_characters_character_id_planets_planet_id_extractor_details","type":"object"},"factory_details":{"description":"factory_details object","properties":{"schematic_id":{"description":"schematic_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_factory_details_schematic_id","type":"integer"}},"required":["schematic_id"],"title":"get_characters_character_id_planets_planet_id_factory_details","type":"object"},"install_time":{"description":"install_time string","format":"date-time","title":"get_characters_character_id_planets_planet_id_install_time","type":"string"},"last_cycle_start":{"description":"last_cycle_start string","format":"date-time","title":"get_characters_character_id_planets_planet_id_last_cycle_start","type":"string"},"latitude":{"description":"latitude number","format":"float","title":"get_characters_character_id_planets_planet_id_latitude","type":"number"},"longitude":{"description":"longitude number","format":"float","title":"get_characters_character_id_planets_planet_id_longitude","type":"number"},"pin_id":{"description":"pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_pin_id","type":"integer"},"schematic_id":{"description":"schematic_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_schematic_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_type_id","type":"integer"}},"required":["pin_id","type_id","latitude","longitude"],"title":"get_characters_character_id_planets_planet_id_pin","type":"object"},"maxItems":100,"title":"get_characters_character_id_planets_planet_id_pins","type":"array"},"routes":{"description":"routes array","items":{"description":"route object","properties":{"content_type_id":{"description":"content_type_id integer","format":"int32","title":"get_characters_character_id_planets_planet_id_route_content_type_id","type":"integer"},"destination_pin_id":{"description":"destination_pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_route_destination_pin_id","type":"integer"},"quantity":{"description":"quantity number","format":"float","title":"get_characters_character_id_planets_planet_id_quantity","type":"number"},"route_id":{"description":"route_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_route_id","type":"integer"},"source_pin_id":{"description":"source_pin_id integer","format":"int64","title":"get_characters_character_id_planets_planet_id_route_source_pin_id","type":"integer"},"waypoints":{"description":"list of pin ID waypoints","items":{"description":"waypoint integer","format":"int64","title":"get_characters_character_id_planets_planet_id_waypoint","type":"integer"},"maxItems":5,"title":"get_characters_character_id_planets_planet_id_waypoints","type":"array"}},"required":["route_id","source_pin_id","destination_pin_id","content_type_id","quantity"],"title":"get_characters_character_id_planets_planet_id_route","type":"object"},"maxItems":1000,"title":"get_characters_character_id_planets_planet_id_routes","type":"array"}},"required":["links","pins","routes"],"title":"get_characters_character_id_planets_planet_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Colony not found","examples":{"application/json":{"error":"Colony not found"}},"schema":{"description":"Colony not found","properties":{"error":{"description":"error message","title":"get_characters_character_id_planets_planet_id_error","type":"string"}},"title":"get_characters_character_id_planets_planet_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-planets.manage_planets.v1"]}],"summary":"Get colony layout","tags":["Planetary Interaction"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":600}},"/characters/{character_id}/portrait/":{"get":{"description":"Get portrait urls for a character\n\n---\nAlternate route: `/v2/characters/{character_id}/portrait/`\n\n---\nThis route expires daily at 11:05\n\n---\n[Diff of the upcoming changes](https://esi.evetech.net/diff/latest/dev/#GET-/characters/{character_id}/portrait/)","operationId":"get_characters_character_id_portrait","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Public data for the given character","examples":{"application/json":{"px128x128":"https://images.evetech.net/Character/95465499_128.jpg","px256x256":"https://images.evetech.net/Character/95465499_256.jpg","px512x512":"https://images.evetech.net/Character/95465499_512.jpg","px64x64":"https://images.evetech.net/Character/95465499_64.jpg"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"px128x128":{"description":"px128x128 string","title":"get_characters_character_id_portrait_px128x128","type":"string"},"px256x256":{"description":"px256x256 string","title":"get_characters_character_id_portrait_px256x256","type":"string"},"px512x512":{"description":"px512x512 string","title":"get_characters_character_id_portrait_px512x512","type":"string"},"px64x64":{"description":"px64x64 string","title":"get_characters_character_id_portrait_px64x64","type":"string"}},"title":"get_characters_character_id_portrait_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No image server for this datasource","examples":{"application/json":{"error":"No image server for this datasource"}},"schema":{"description":"No image server for this datasource","properties":{"error":{"description":"error message","title":"get_characters_character_id_portrait_error","type":"string"}},"title":"get_characters_character_id_portrait_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get character portraits","tags":["Character"],"x-alternate-versions":["v2"]}},"/characters/{character_id}/roles/":{"get":{"description":"Returns a character's corporation roles\n\n---\nAlternate route: `/dev/characters/{character_id}/roles/`\n\nAlternate route: `/v2/characters/{character_id}/roles/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_roles","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"The character's roles in thier corporation","examples":{"application/json":{"roles":["Director","Station_Manager"]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"roles":{"description":"roles array","items":{"description":"role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_characters_character_id_roles_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_characters_character_id_roles_roles","type":"array"},"roles_at_base":{"description":"roles_at_base array","items":{"description":"roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_characters_character_id_roles_roles_at_base_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_characters_character_id_roles_roles_at_base","type":"array"},"roles_at_hq":{"description":"roles_at_hq array","items":{"description":"roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_characters_character_id_roles_roles_at_hq_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_characters_character_id_roles_roles_at_hq","type":"array"},"roles_at_other":{"description":"roles_at_other array","items":{"description":"roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_characters_character_id_roles_roles_at_other_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_characters_character_id_roles_roles_at_other","type":"array"}},"title":"get_characters_character_id_roles_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_corporation_roles.v1"]}],"summary":"Get character corporation roles","tags":["Character"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/characters/{character_id}/search/":{"get":{"description":"Search for entities that match a given sub-string.\n\n---\nAlternate route: `/dev/characters/{character_id}/search/`\n\nAlternate route: `/legacy/characters/{character_id}/search/`\n\nAlternate route: `/v3/characters/{character_id}/search/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_search","parameters":[{"$ref":"#/parameters/Accept-Language"},{"description":"Type of entities to search for","in":"query","items":{"enum":["agent","alliance","character","constellation","corporation","faction","inventory_type","region","solar_system","station","structure"],"type":"string"},"maxItems":11,"minItems":1,"name":"categories","required":true,"type":"array","uniqueItems":true},{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"The string to search on","in":"query","minLength":3,"name":"search","required":true,"type":"string"},{"default":false,"description":"Whether the search should be a strict match","in":"query","name":"strict","type":"boolean"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of search results","examples":{"application/json":{"solar_system":[30002510],"station":[60004588,60004594,60005725,60009106,60012721,60012724,60012727]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"agent":{"description":"agent array","items":{"description":"agent integer","format":"int32","title":"get_characters_character_id_search_agent_agent","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_agent","type":"array"},"alliance":{"description":"alliance array","items":{"description":"alliance integer","format":"int32","title":"get_characters_character_id_search_alliance_alliance","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_alliance","type":"array"},"character":{"description":"character array","items":{"description":"character integer","format":"int32","title":"get_characters_character_id_search_character_character","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_character","type":"array"},"constellation":{"description":"constellation array","items":{"description":"constellation integer","format":"int32","title":"get_characters_character_id_search_constellation_constellation","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_constellation","type":"array"},"corporation":{"description":"corporation array","items":{"description":"corporation integer","format":"int32","title":"get_characters_character_id_search_corporation_corporation","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_corporation","type":"array"},"faction":{"description":"faction array","items":{"description":"faction integer","format":"int32","title":"get_characters_character_id_search_faction_faction","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_faction","type":"array"},"inventory_type":{"description":"inventory_type array","items":{"description":"inventory_type integer","format":"int32","title":"get_characters_character_id_search_inventory_type_inventory_type","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_inventory_type","type":"array"},"region":{"description":"region array","items":{"description":"region integer","format":"int32","title":"get_characters_character_id_search_region_region","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_region","type":"array"},"solar_system":{"description":"solar_system array","items":{"description":"solar_system integer","format":"int32","title":"get_characters_character_id_search_solar_system_solar_system","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_solar_system","type":"array"},"station":{"description":"station array","items":{"description":"station integer","format":"int32","title":"get_characters_character_id_search_station_station","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_station","type":"array"},"structure":{"description":"structure array","items":{"description":"structure integer","format":"int64","title":"get_characters_character_id_search_structure_structure","type":"integer"},"maxItems":500,"title":"get_characters_character_id_search_structure","type":"array"}},"title":"get_characters_character_id_search_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-search.search_structures.v1"]}],"summary":"Search on a string","tags":["Search"],"x-alternate-versions":["dev","legacy","v3"],"x-cached-seconds":3600}},"/characters/{character_id}/ship/":{"get":{"description":"Get the current ship type, name and id\n\n---\nAlternate route: `/dev/characters/{character_id}/ship/`\n\nAlternate route: `/legacy/characters/{character_id}/ship/`\n\nAlternate route: `/v1/characters/{character_id}/ship/`\n\nAlternate route: `/v2/characters/{character_id}/ship/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_characters_character_id_ship","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Get the current ship type, name and id","examples":{"application/json":{"ship_item_id":1000000016991,"ship_name":"SPACESHIPS!!!","ship_type_id":1233}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"ship_item_id":{"description":"Item id's are unique to a ship and persist until it is repackaged. This value can be used to track repeated uses of a ship, or detect when a pilot changes into a different instance of the same ship type.","format":"int64","title":"get_characters_character_id_ship_ship_item_id","type":"integer"},"ship_name":{"description":"ship_name string","title":"get_characters_character_id_ship_ship_name","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_characters_character_id_ship_ship_type_id","type":"integer"}},"required":["ship_type_id","ship_item_id","ship_name"],"title":"get_characters_character_id_ship_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-location.read_ship_type.v1"]}],"summary":"Get current ship","tags":["Location"],"x-alternate-versions":["dev","legacy","v1","v2"],"x-cached-seconds":5}},"/characters/{character_id}/skillqueue/":{"get":{"description":"List the configured skill queue for the given character\n\n---\nAlternate route: `/dev/characters/{character_id}/skillqueue/`\n\nAlternate route: `/legacy/characters/{character_id}/skillqueue/`\n\nAlternate route: `/v2/characters/{character_id}/skillqueue/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_skillqueue","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"The current skill queue, sorted ascending by finishing time","examples":{"application/json":[{"finish_date":"2016-06-29T10:47:00Z","finished_level":3,"queue_position":0,"skill_id":1,"start_date":"2016-06-29T10:46:00Z"},{"finish_date":"2016-07-15T10:47:00Z","finished_level":4,"queue_position":1,"skill_id":1,"start_date":"2016-06-29T10:47:00Z"},{"finish_date":"2016-08-30T10:47:00Z","finished_level":2,"queue_position":2,"skill_id":2,"start_date":"2016-07-15T10:47:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"finish_date":{"description":"Date on which training of the skill will complete. Omitted if the skill queue is paused.","format":"date-time","title":"get_characters_character_id_skillqueue_finish_date","type":"string"},"finished_level":{"description":"finished_level integer","format":"int32","maximum":5,"minimum":0,"title":"get_characters_character_id_skillqueue_finished_level","type":"integer"},"level_end_sp":{"description":"level_end_sp integer","format":"int32","title":"get_characters_character_id_skillqueue_level_end_sp","type":"integer"},"level_start_sp":{"description":"Amount of SP that was in the skill when it started training it's current level. Used to calculate % of current level complete.","format":"int32","title":"get_characters_character_id_skillqueue_level_start_sp","type":"integer"},"queue_position":{"description":"queue_position integer","format":"int32","title":"get_characters_character_id_skillqueue_queue_position","type":"integer"},"skill_id":{"description":"skill_id integer","format":"int32","title":"get_characters_character_id_skillqueue_skill_id","type":"integer"},"start_date":{"description":"start_date string","format":"date-time","title":"get_characters_character_id_skillqueue_start_date","type":"string"},"training_start_sp":{"description":"training_start_sp integer","format":"int32","title":"get_characters_character_id_skillqueue_training_start_sp","type":"integer"}},"required":["skill_id","finished_level","queue_position"],"title":"get_characters_character_id_skillqueue_200_ok","type":"object"},"maxItems":51,"title":"get_characters_character_id_skillqueue_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-skills.read_skillqueue.v1"]}],"summary":"Get character's skill queue","tags":["Skills"],"x-alternate-versions":["dev","legacy","v2"],"x-cached-seconds":120}},"/characters/{character_id}/skills/":{"get":{"description":"List all trained skills for the given character\n\n---\nAlternate route: `/dev/characters/{character_id}/skills/`\n\nAlternate route: `/v4/characters/{character_id}/skills/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_skills","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Known skills for the character","examples":{"application/json":{"skills":[{"active_skill_level":3,"skill_id":1,"skillpoints_in_skill":10000,"trained_skill_level":4},{"active_skill_level":1,"skill_id":2,"skillpoints_in_skill":10000,"trained_skill_level":1}],"total_sp":20000}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"skills":{"description":"skills array","items":{"description":"skill object","properties":{"active_skill_level":{"description":"active_skill_level integer","format":"int32","title":"get_characters_character_id_skills_active_skill_level","type":"integer"},"skill_id":{"description":"skill_id integer","format":"int32","title":"get_characters_character_id_skills_skill_id","type":"integer"},"skillpoints_in_skill":{"description":"skillpoints_in_skill integer","format":"int64","title":"get_characters_character_id_skills_skillpoints_in_skill","type":"integer"},"trained_skill_level":{"description":"trained_skill_level integer","format":"int32","title":"get_characters_character_id_skills_trained_skill_level","type":"integer"}},"required":["skill_id","skillpoints_in_skill","trained_skill_level","active_skill_level"],"title":"get_characters_character_id_skills_skill","type":"object"},"maxItems":1000,"title":"get_characters_character_id_skills_skills","type":"array"},"total_sp":{"description":"total_sp integer","format":"int64","title":"get_characters_character_id_skills_total_sp","type":"integer"},"unallocated_sp":{"description":"Skill points available to be assigned","format":"int32","title":"get_characters_character_id_skills_unallocated_sp","type":"integer"}},"required":["skills","total_sp"],"title":"get_characters_character_id_skills_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-skills.read_skills.v1"]}],"summary":"Get character skills","tags":["Skills"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":120}},"/characters/{character_id}/standings/":{"get":{"description":"Return character standings from agents, NPC corporations, and factions\n\n---\nAlternate route: `/dev/characters/{character_id}/standings/`\n\nAlternate route: `/legacy/characters/{character_id}/standings/`\n\nAlternate route: `/v1/characters/{character_id}/standings/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_standings","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of standings","examples":{"application/json":[{"from_id":3009841,"from_type":"agent","standing":0.1},{"from_id":1000061,"from_type":"npc_corp","standing":0},{"from_id":500003,"from_type":"faction","standing":-1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"from_id":{"description":"from_id integer","format":"int32","title":"get_characters_character_id_standings_from_id","type":"integer"},"from_type":{"description":"from_type string","enum":["agent","npc_corp","faction"],"title":"get_characters_character_id_standings_from_type","type":"string"},"standing":{"description":"standing number","format":"float","title":"get_characters_character_id_standings_standing","type":"number"}},"required":["from_id","from_type","standing"],"title":"get_characters_character_id_standings_200_ok","type":"object"},"maxItems":10000,"title":"get_characters_character_id_standings_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_standings.v1"]}],"summary":"Get standings","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/stats/":{"get":{"description":"Returns aggregate yearly stats for a character\n\n---\nAlternate route: `/dev/characters/{character_id}/stats/`\n\nAlternate route: `/v2/characters/{character_id}/stats/`\n\n---\nThis route is cached for up to 86400 seconds","operationId":"get_characters_character_id_stats","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Character stats","examples":{"application/json":[{"character":{"days_of_activity":365,"minutes":1000000,"sessions_started":500},"combat":{"kills_low_sec":42},"year":2014},{"character":{"days_of_activity":365,"minutes":1000000,"sessions_started":500},"combat":{"kills_null_sec":1337},"year":2015}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"List of character aggregate stats","items":{"description":"Aggregate stats for a year","properties":{"character":{"description":"character object","properties":{"days_of_activity":{"description":"days_of_activity integer","format":"int64","title":"get_characters_character_id_stats_days_of_activity","type":"integer"},"minutes":{"description":"minutes integer","format":"int64","title":"get_characters_character_id_stats_minutes","type":"integer"},"sessions_started":{"description":"sessions_started integer","format":"int64","title":"get_characters_character_id_stats_sessions_started","type":"integer"}},"title":"get_characters_character_id_stats_character","type":"object"},"combat":{"description":"combat object","properties":{"cap_drainedby_npc":{"description":"cap_drainedby_npc integer","format":"int64","title":"get_characters_character_id_stats_cap_drainedby_npc","type":"integer"},"cap_drainedby_pc":{"description":"cap_drainedby_pc integer","format":"int64","title":"get_characters_character_id_stats_cap_drainedby_pc","type":"integer"},"cap_draining_pc":{"description":"cap_draining_pc integer","format":"int64","title":"get_characters_character_id_stats_cap_draining_pc","type":"integer"},"criminal_flag_set":{"description":"criminal_flag_set integer","format":"int64","title":"get_characters_character_id_stats_criminal_flag_set","type":"integer"},"damage_from_np_cs_amount":{"description":"damage_from_np_cs_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_np_cs_amount","type":"integer"},"damage_from_np_cs_num_shots":{"description":"damage_from_np_cs_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_np_cs_num_shots","type":"integer"},"damage_from_players_bomb_amount":{"description":"damage_from_players_bomb_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_bomb_amount","type":"integer"},"damage_from_players_bomb_num_shots":{"description":"damage_from_players_bomb_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_bomb_num_shots","type":"integer"},"damage_from_players_combat_drone_amount":{"description":"damage_from_players_combat_drone_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_combat_drone_amount","type":"integer"},"damage_from_players_combat_drone_num_shots":{"description":"damage_from_players_combat_drone_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_combat_drone_num_shots","type":"integer"},"damage_from_players_energy_amount":{"description":"damage_from_players_energy_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_energy_amount","type":"integer"},"damage_from_players_energy_num_shots":{"description":"damage_from_players_energy_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_energy_num_shots","type":"integer"},"damage_from_players_fighter_bomber_amount":{"description":"damage_from_players_fighter_bomber_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_fighter_bomber_amount","type":"integer"},"damage_from_players_fighter_bomber_num_shots":{"description":"damage_from_players_fighter_bomber_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_fighter_bomber_num_shots","type":"integer"},"damage_from_players_fighter_drone_amount":{"description":"damage_from_players_fighter_drone_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_fighter_drone_amount","type":"integer"},"damage_from_players_fighter_drone_num_shots":{"description":"damage_from_players_fighter_drone_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_fighter_drone_num_shots","type":"integer"},"damage_from_players_hybrid_amount":{"description":"damage_from_players_hybrid_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_hybrid_amount","type":"integer"},"damage_from_players_hybrid_num_shots":{"description":"damage_from_players_hybrid_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_hybrid_num_shots","type":"integer"},"damage_from_players_missile_amount":{"description":"damage_from_players_missile_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_missile_amount","type":"integer"},"damage_from_players_missile_num_shots":{"description":"damage_from_players_missile_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_missile_num_shots","type":"integer"},"damage_from_players_projectile_amount":{"description":"damage_from_players_projectile_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_projectile_amount","type":"integer"},"damage_from_players_projectile_num_shots":{"description":"damage_from_players_projectile_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_projectile_num_shots","type":"integer"},"damage_from_players_smart_bomb_amount":{"description":"damage_from_players_smart_bomb_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_smart_bomb_amount","type":"integer"},"damage_from_players_smart_bomb_num_shots":{"description":"damage_from_players_smart_bomb_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_smart_bomb_num_shots","type":"integer"},"damage_from_players_super_amount":{"description":"damage_from_players_super_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_super_amount","type":"integer"},"damage_from_players_super_num_shots":{"description":"damage_from_players_super_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_players_super_num_shots","type":"integer"},"damage_from_structures_total_amount":{"description":"damage_from_structures_total_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_from_structures_total_amount","type":"integer"},"damage_from_structures_total_num_shots":{"description":"damage_from_structures_total_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_from_structures_total_num_shots","type":"integer"},"damage_to_players_bomb_amount":{"description":"damage_to_players_bomb_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_bomb_amount","type":"integer"},"damage_to_players_bomb_num_shots":{"description":"damage_to_players_bomb_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_bomb_num_shots","type":"integer"},"damage_to_players_combat_drone_amount":{"description":"damage_to_players_combat_drone_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_combat_drone_amount","type":"integer"},"damage_to_players_combat_drone_num_shots":{"description":"damage_to_players_combat_drone_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_combat_drone_num_shots","type":"integer"},"damage_to_players_energy_amount":{"description":"damage_to_players_energy_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_energy_amount","type":"integer"},"damage_to_players_energy_num_shots":{"description":"damage_to_players_energy_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_energy_num_shots","type":"integer"},"damage_to_players_fighter_bomber_amount":{"description":"damage_to_players_fighter_bomber_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_fighter_bomber_amount","type":"integer"},"damage_to_players_fighter_bomber_num_shots":{"description":"damage_to_players_fighter_bomber_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_fighter_bomber_num_shots","type":"integer"},"damage_to_players_fighter_drone_amount":{"description":"damage_to_players_fighter_drone_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_fighter_drone_amount","type":"integer"},"damage_to_players_fighter_drone_num_shots":{"description":"damage_to_players_fighter_drone_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_fighter_drone_num_shots","type":"integer"},"damage_to_players_hybrid_amount":{"description":"damage_to_players_hybrid_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_hybrid_amount","type":"integer"},"damage_to_players_hybrid_num_shots":{"description":"damage_to_players_hybrid_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_hybrid_num_shots","type":"integer"},"damage_to_players_missile_amount":{"description":"damage_to_players_missile_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_missile_amount","type":"integer"},"damage_to_players_missile_num_shots":{"description":"damage_to_players_missile_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_missile_num_shots","type":"integer"},"damage_to_players_projectile_amount":{"description":"damage_to_players_projectile_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_projectile_amount","type":"integer"},"damage_to_players_projectile_num_shots":{"description":"damage_to_players_projectile_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_projectile_num_shots","type":"integer"},"damage_to_players_smart_bomb_amount":{"description":"damage_to_players_smart_bomb_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_smart_bomb_amount","type":"integer"},"damage_to_players_smart_bomb_num_shots":{"description":"damage_to_players_smart_bomb_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_smart_bomb_num_shots","type":"integer"},"damage_to_players_super_amount":{"description":"damage_to_players_super_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_super_amount","type":"integer"},"damage_to_players_super_num_shots":{"description":"damage_to_players_super_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_players_super_num_shots","type":"integer"},"damage_to_structures_total_amount":{"description":"damage_to_structures_total_amount integer","format":"int64","title":"get_characters_character_id_stats_damage_to_structures_total_amount","type":"integer"},"damage_to_structures_total_num_shots":{"description":"damage_to_structures_total_num_shots integer","format":"int64","title":"get_characters_character_id_stats_damage_to_structures_total_num_shots","type":"integer"},"deaths_high_sec":{"description":"deaths_high_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_high_sec","type":"integer"},"deaths_low_sec":{"description":"deaths_low_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_low_sec","type":"integer"},"deaths_null_sec":{"description":"deaths_null_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_null_sec","type":"integer"},"deaths_pod_high_sec":{"description":"deaths_pod_high_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_pod_high_sec","type":"integer"},"deaths_pod_low_sec":{"description":"deaths_pod_low_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_pod_low_sec","type":"integer"},"deaths_pod_null_sec":{"description":"deaths_pod_null_sec integer","format":"int64","title":"get_characters_character_id_stats_deaths_pod_null_sec","type":"integer"},"deaths_pod_wormhole":{"description":"deaths_pod_wormhole integer","format":"int64","title":"get_characters_character_id_stats_deaths_pod_wormhole","type":"integer"},"deaths_wormhole":{"description":"deaths_wormhole integer","format":"int64","title":"get_characters_character_id_stats_deaths_wormhole","type":"integer"},"drone_engage":{"description":"drone_engage integer","format":"int64","title":"get_characters_character_id_stats_drone_engage","type":"integer"},"dscans":{"description":"dscans integer","format":"int64","title":"get_characters_character_id_stats_dscans","type":"integer"},"duel_requested":{"description":"duel_requested integer","format":"int64","title":"get_characters_character_id_stats_duel_requested","type":"integer"},"engagement_register":{"description":"engagement_register integer","format":"int64","title":"get_characters_character_id_stats_engagement_register","type":"integer"},"kills_assists":{"description":"kills_assists integer","format":"int64","title":"get_characters_character_id_stats_kills_assists","type":"integer"},"kills_high_sec":{"description":"kills_high_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_high_sec","type":"integer"},"kills_low_sec":{"description":"kills_low_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_low_sec","type":"integer"},"kills_null_sec":{"description":"kills_null_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_null_sec","type":"integer"},"kills_pod_high_sec":{"description":"kills_pod_high_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_pod_high_sec","type":"integer"},"kills_pod_low_sec":{"description":"kills_pod_low_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_pod_low_sec","type":"integer"},"kills_pod_null_sec":{"description":"kills_pod_null_sec integer","format":"int64","title":"get_characters_character_id_stats_kills_pod_null_sec","type":"integer"},"kills_pod_wormhole":{"description":"kills_pod_wormhole integer","format":"int64","title":"get_characters_character_id_stats_kills_pod_wormhole","type":"integer"},"kills_wormhole":{"description":"kills_wormhole integer","format":"int64","title":"get_characters_character_id_stats_kills_wormhole","type":"integer"},"npc_flag_set":{"description":"npc_flag_set integer","format":"int64","title":"get_characters_character_id_stats_npc_flag_set","type":"integer"},"probe_scans":{"description":"probe_scans integer","format":"int64","title":"get_characters_character_id_stats_probe_scans","type":"integer"},"pvp_flag_set":{"description":"pvp_flag_set integer","format":"int64","title":"get_characters_character_id_stats_pvp_flag_set","type":"integer"},"repair_armor_by_remote_amount":{"description":"repair_armor_by_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_armor_by_remote_amount","type":"integer"},"repair_armor_remote_amount":{"description":"repair_armor_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_armor_remote_amount","type":"integer"},"repair_armor_self_amount":{"description":"repair_armor_self_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_armor_self_amount","type":"integer"},"repair_capacitor_by_remote_amount":{"description":"repair_capacitor_by_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_capacitor_by_remote_amount","type":"integer"},"repair_capacitor_remote_amount":{"description":"repair_capacitor_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_capacitor_remote_amount","type":"integer"},"repair_capacitor_self_amount":{"description":"repair_capacitor_self_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_capacitor_self_amount","type":"integer"},"repair_hull_by_remote_amount":{"description":"repair_hull_by_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_hull_by_remote_amount","type":"integer"},"repair_hull_remote_amount":{"description":"repair_hull_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_hull_remote_amount","type":"integer"},"repair_hull_self_amount":{"description":"repair_hull_self_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_hull_self_amount","type":"integer"},"repair_shield_by_remote_amount":{"description":"repair_shield_by_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_shield_by_remote_amount","type":"integer"},"repair_shield_remote_amount":{"description":"repair_shield_remote_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_shield_remote_amount","type":"integer"},"repair_shield_self_amount":{"description":"repair_shield_self_amount integer","format":"int64","title":"get_characters_character_id_stats_repair_shield_self_amount","type":"integer"},"self_destructs":{"description":"self_destructs integer","format":"int64","title":"get_characters_character_id_stats_self_destructs","type":"integer"},"warp_scramble_pc":{"description":"warp_scramble_pc integer","format":"int64","title":"get_characters_character_id_stats_warp_scramble_pc","type":"integer"},"warp_scrambledby_npc":{"description":"warp_scrambledby_npc integer","format":"int64","title":"get_characters_character_id_stats_warp_scrambledby_npc","type":"integer"},"warp_scrambledby_pc":{"description":"warp_scrambledby_pc integer","format":"int64","title":"get_characters_character_id_stats_warp_scrambledby_pc","type":"integer"},"weapon_flag_set":{"description":"weapon_flag_set integer","format":"int64","title":"get_characters_character_id_stats_weapon_flag_set","type":"integer"},"webifiedby_npc":{"description":"webifiedby_npc integer","format":"int64","title":"get_characters_character_id_stats_webifiedby_npc","type":"integer"},"webifiedby_pc":{"description":"webifiedby_pc integer","format":"int64","title":"get_characters_character_id_stats_webifiedby_pc","type":"integer"},"webifying_pc":{"description":"webifying_pc integer","format":"int64","title":"get_characters_character_id_stats_webifying_pc","type":"integer"}},"title":"get_characters_character_id_stats_combat","type":"object"},"industry":{"description":"industry object","properties":{"hacking_successes":{"description":"hacking_successes integer","format":"int64","title":"get_characters_character_id_stats_hacking_successes","type":"integer"},"jobs_cancelled":{"description":"jobs_cancelled integer","format":"int64","title":"get_characters_character_id_stats_jobs_cancelled","type":"integer"},"jobs_completed_copy_blueprint":{"description":"jobs_completed_copy_blueprint integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_copy_blueprint","type":"integer"},"jobs_completed_invention":{"description":"jobs_completed_invention integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_invention","type":"integer"},"jobs_completed_manufacture":{"description":"jobs_completed_manufacture integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture","type":"integer"},"jobs_completed_manufacture_asteroid":{"description":"jobs_completed_manufacture_asteroid integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_asteroid","type":"integer"},"jobs_completed_manufacture_asteroid_quantity":{"description":"jobs_completed_manufacture_asteroid_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_asteroid_quantity","type":"integer"},"jobs_completed_manufacture_charge":{"description":"jobs_completed_manufacture_charge integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_charge","type":"integer"},"jobs_completed_manufacture_charge_quantity":{"description":"jobs_completed_manufacture_charge_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_charge_quantity","type":"integer"},"jobs_completed_manufacture_commodity":{"description":"jobs_completed_manufacture_commodity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_commodity","type":"integer"},"jobs_completed_manufacture_commodity_quantity":{"description":"jobs_completed_manufacture_commodity_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_commodity_quantity","type":"integer"},"jobs_completed_manufacture_deployable":{"description":"jobs_completed_manufacture_deployable integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_deployable","type":"integer"},"jobs_completed_manufacture_deployable_quantity":{"description":"jobs_completed_manufacture_deployable_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_deployable_quantity","type":"integer"},"jobs_completed_manufacture_drone":{"description":"jobs_completed_manufacture_drone integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_drone","type":"integer"},"jobs_completed_manufacture_drone_quantity":{"description":"jobs_completed_manufacture_drone_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_drone_quantity","type":"integer"},"jobs_completed_manufacture_implant":{"description":"jobs_completed_manufacture_implant integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_implant","type":"integer"},"jobs_completed_manufacture_implant_quantity":{"description":"jobs_completed_manufacture_implant_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_implant_quantity","type":"integer"},"jobs_completed_manufacture_module":{"description":"jobs_completed_manufacture_module integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_module","type":"integer"},"jobs_completed_manufacture_module_quantity":{"description":"jobs_completed_manufacture_module_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_module_quantity","type":"integer"},"jobs_completed_manufacture_other":{"description":"jobs_completed_manufacture_other integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_other","type":"integer"},"jobs_completed_manufacture_other_quantity":{"description":"jobs_completed_manufacture_other_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_other_quantity","type":"integer"},"jobs_completed_manufacture_ship":{"description":"jobs_completed_manufacture_ship integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_ship","type":"integer"},"jobs_completed_manufacture_ship_quantity":{"description":"jobs_completed_manufacture_ship_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_ship_quantity","type":"integer"},"jobs_completed_manufacture_structure":{"description":"jobs_completed_manufacture_structure integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_structure","type":"integer"},"jobs_completed_manufacture_structure_quantity":{"description":"jobs_completed_manufacture_structure_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_structure_quantity","type":"integer"},"jobs_completed_manufacture_subsystem":{"description":"jobs_completed_manufacture_subsystem integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_subsystem","type":"integer"},"jobs_completed_manufacture_subsystem_quantity":{"description":"jobs_completed_manufacture_subsystem_quantity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_manufacture_subsystem_quantity","type":"integer"},"jobs_completed_material_productivity":{"description":"jobs_completed_material_productivity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_material_productivity","type":"integer"},"jobs_completed_time_productivity":{"description":"jobs_completed_time_productivity integer","format":"int64","title":"get_characters_character_id_stats_jobs_completed_time_productivity","type":"integer"},"jobs_started_copy_blueprint":{"description":"jobs_started_copy_blueprint integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_copy_blueprint","type":"integer"},"jobs_started_invention":{"description":"jobs_started_invention integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_invention","type":"integer"},"jobs_started_manufacture":{"description":"jobs_started_manufacture integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_manufacture","type":"integer"},"jobs_started_material_productivity":{"description":"jobs_started_material_productivity integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_material_productivity","type":"integer"},"jobs_started_time_productivity":{"description":"jobs_started_time_productivity integer","format":"int64","title":"get_characters_character_id_stats_jobs_started_time_productivity","type":"integer"},"reprocess_item":{"description":"reprocess_item integer","format":"int64","title":"get_characters_character_id_stats_reprocess_item","type":"integer"},"reprocess_item_quantity":{"description":"reprocess_item_quantity integer","format":"int64","title":"get_characters_character_id_stats_reprocess_item_quantity","type":"integer"}},"title":"get_characters_character_id_stats_industry","type":"object"},"inventory":{"description":"inventory object","properties":{"abandon_loot_quantity":{"description":"abandon_loot_quantity integer","format":"int64","title":"get_characters_character_id_stats_abandon_loot_quantity","type":"integer"},"trash_item_quantity":{"description":"trash_item_quantity integer","format":"int64","title":"get_characters_character_id_stats_trash_item_quantity","type":"integer"}},"title":"get_characters_character_id_stats_inventory","type":"object"},"isk":{"description":"isk object","properties":{"in":{"description":"in integer","format":"int64","title":"get_characters_character_id_stats_in","type":"integer"},"out":{"description":"out integer","format":"int64","title":"get_characters_character_id_stats_out","type":"integer"}},"title":"get_characters_character_id_stats_isk","type":"object"},"market":{"description":"market object","properties":{"accept_contracts_courier":{"description":"accept_contracts_courier integer","format":"int64","title":"get_characters_character_id_stats_accept_contracts_courier","type":"integer"},"accept_contracts_item_exchange":{"description":"accept_contracts_item_exchange integer","format":"int64","title":"get_characters_character_id_stats_accept_contracts_item_exchange","type":"integer"},"buy_orders_placed":{"description":"buy_orders_placed integer","format":"int64","title":"get_characters_character_id_stats_buy_orders_placed","type":"integer"},"cancel_market_order":{"description":"cancel_market_order integer","format":"int64","title":"get_characters_character_id_stats_cancel_market_order","type":"integer"},"create_contracts_auction":{"description":"create_contracts_auction integer","format":"int64","title":"get_characters_character_id_stats_create_contracts_auction","type":"integer"},"create_contracts_courier":{"description":"create_contracts_courier integer","format":"int64","title":"get_characters_character_id_stats_create_contracts_courier","type":"integer"},"create_contracts_item_exchange":{"description":"create_contracts_item_exchange integer","format":"int64","title":"get_characters_character_id_stats_create_contracts_item_exchange","type":"integer"},"deliver_courier_contract":{"description":"deliver_courier_contract integer","format":"int64","title":"get_characters_character_id_stats_deliver_courier_contract","type":"integer"},"isk_gained":{"description":"isk_gained integer","format":"int64","title":"get_characters_character_id_stats_isk_gained","type":"integer"},"isk_spent":{"description":"isk_spent integer","format":"int64","title":"get_characters_character_id_stats_isk_spent","type":"integer"},"modify_market_order":{"description":"modify_market_order integer","format":"int64","title":"get_characters_character_id_stats_modify_market_order","type":"integer"},"search_contracts":{"description":"search_contracts integer","format":"int64","title":"get_characters_character_id_stats_search_contracts","type":"integer"},"sell_orders_placed":{"description":"sell_orders_placed integer","format":"int64","title":"get_characters_character_id_stats_sell_orders_placed","type":"integer"}},"title":"get_characters_character_id_stats_market","type":"object"},"mining":{"description":"mining object","properties":{"drone_mine":{"description":"drone_mine integer","format":"int64","title":"get_characters_character_id_stats_drone_mine","type":"integer"},"ore_arkonor":{"description":"ore_arkonor integer","format":"int64","title":"get_characters_character_id_stats_ore_arkonor","type":"integer"},"ore_bistot":{"description":"ore_bistot integer","format":"int64","title":"get_characters_character_id_stats_ore_bistot","type":"integer"},"ore_crokite":{"description":"ore_crokite integer","format":"int64","title":"get_characters_character_id_stats_ore_crokite","type":"integer"},"ore_dark_ochre":{"description":"ore_dark_ochre integer","format":"int64","title":"get_characters_character_id_stats_ore_dark_ochre","type":"integer"},"ore_gneiss":{"description":"ore_gneiss integer","format":"int64","title":"get_characters_character_id_stats_ore_gneiss","type":"integer"},"ore_harvestable_cloud":{"description":"ore_harvestable_cloud integer","format":"int64","title":"get_characters_character_id_stats_ore_harvestable_cloud","type":"integer"},"ore_hedbergite":{"description":"ore_hedbergite integer","format":"int64","title":"get_characters_character_id_stats_ore_hedbergite","type":"integer"},"ore_hemorphite":{"description":"ore_hemorphite integer","format":"int64","title":"get_characters_character_id_stats_ore_hemorphite","type":"integer"},"ore_ice":{"description":"ore_ice integer","format":"int64","title":"get_characters_character_id_stats_ore_ice","type":"integer"},"ore_jaspet":{"description":"ore_jaspet integer","format":"int64","title":"get_characters_character_id_stats_ore_jaspet","type":"integer"},"ore_kernite":{"description":"ore_kernite integer","format":"int64","title":"get_characters_character_id_stats_ore_kernite","type":"integer"},"ore_mercoxit":{"description":"ore_mercoxit integer","format":"int64","title":"get_characters_character_id_stats_ore_mercoxit","type":"integer"},"ore_omber":{"description":"ore_omber integer","format":"int64","title":"get_characters_character_id_stats_ore_omber","type":"integer"},"ore_plagioclase":{"description":"ore_plagioclase integer","format":"int64","title":"get_characters_character_id_stats_ore_plagioclase","type":"integer"},"ore_pyroxeres":{"description":"ore_pyroxeres integer","format":"int64","title":"get_characters_character_id_stats_ore_pyroxeres","type":"integer"},"ore_scordite":{"description":"ore_scordite integer","format":"int64","title":"get_characters_character_id_stats_ore_scordite","type":"integer"},"ore_spodumain":{"description":"ore_spodumain integer","format":"int64","title":"get_characters_character_id_stats_ore_spodumain","type":"integer"},"ore_veldspar":{"description":"ore_veldspar integer","format":"int64","title":"get_characters_character_id_stats_ore_veldspar","type":"integer"}},"title":"get_characters_character_id_stats_mining","type":"object"},"module":{"description":"module object","properties":{"activations_armor_hardener":{"description":"activations_armor_hardener integer","format":"int64","title":"get_characters_character_id_stats_activations_armor_hardener","type":"integer"},"activations_armor_repair_unit":{"description":"activations_armor_repair_unit integer","format":"int64","title":"get_characters_character_id_stats_activations_armor_repair_unit","type":"integer"},"activations_armor_resistance_shift_hardener":{"description":"activations_armor_resistance_shift_hardener integer","format":"int64","title":"get_characters_character_id_stats_activations_armor_resistance_shift_hardener","type":"integer"},"activations_automated_targeting_system":{"description":"activations_automated_targeting_system integer","format":"int64","title":"get_characters_character_id_stats_activations_automated_targeting_system","type":"integer"},"activations_bastion":{"description":"activations_bastion integer","format":"int64","title":"get_characters_character_id_stats_activations_bastion","type":"integer"},"activations_bomb_launcher":{"description":"activations_bomb_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_bomb_launcher","type":"integer"},"activations_capacitor_booster":{"description":"activations_capacitor_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_capacitor_booster","type":"integer"},"activations_cargo_scanner":{"description":"activations_cargo_scanner integer","format":"int64","title":"get_characters_character_id_stats_activations_cargo_scanner","type":"integer"},"activations_cloaking_device":{"description":"activations_cloaking_device integer","format":"int64","title":"get_characters_character_id_stats_activations_cloaking_device","type":"integer"},"activations_clone_vat_bay":{"description":"activations_clone_vat_bay integer","format":"int64","title":"get_characters_character_id_stats_activations_clone_vat_bay","type":"integer"},"activations_cynosural_field":{"description":"activations_cynosural_field integer","format":"int64","title":"get_characters_character_id_stats_activations_cynosural_field","type":"integer"},"activations_damage_control":{"description":"activations_damage_control integer","format":"int64","title":"get_characters_character_id_stats_activations_damage_control","type":"integer"},"activations_data_miners":{"description":"activations_data_miners integer","format":"int64","title":"get_characters_character_id_stats_activations_data_miners","type":"integer"},"activations_drone_control_unit":{"description":"activations_drone_control_unit integer","format":"int64","title":"get_characters_character_id_stats_activations_drone_control_unit","type":"integer"},"activations_drone_tracking_modules":{"description":"activations_drone_tracking_modules integer","format":"int64","title":"get_characters_character_id_stats_activations_drone_tracking_modules","type":"integer"},"activations_eccm":{"description":"activations_eccm integer","format":"int64","title":"get_characters_character_id_stats_activations_eccm","type":"integer"},"activations_ecm":{"description":"activations_ecm integer","format":"int64","title":"get_characters_character_id_stats_activations_ecm","type":"integer"},"activations_ecm_burst":{"description":"activations_ecm_burst integer","format":"int64","title":"get_characters_character_id_stats_activations_ecm_burst","type":"integer"},"activations_energy_destabilizer":{"description":"activations_energy_destabilizer integer","format":"int64","title":"get_characters_character_id_stats_activations_energy_destabilizer","type":"integer"},"activations_energy_vampire":{"description":"activations_energy_vampire integer","format":"int64","title":"get_characters_character_id_stats_activations_energy_vampire","type":"integer"},"activations_energy_weapon":{"description":"activations_energy_weapon integer","format":"int64","title":"get_characters_character_id_stats_activations_energy_weapon","type":"integer"},"activations_festival_launcher":{"description":"activations_festival_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_festival_launcher","type":"integer"},"activations_frequency_mining_laser":{"description":"activations_frequency_mining_laser integer","format":"int64","title":"get_characters_character_id_stats_activations_frequency_mining_laser","type":"integer"},"activations_fueled_armor_repairer":{"description":"activations_fueled_armor_repairer integer","format":"int64","title":"get_characters_character_id_stats_activations_fueled_armor_repairer","type":"integer"},"activations_fueled_shield_booster":{"description":"activations_fueled_shield_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_fueled_shield_booster","type":"integer"},"activations_gang_coordinator":{"description":"activations_gang_coordinator integer","format":"int64","title":"get_characters_character_id_stats_activations_gang_coordinator","type":"integer"},"activations_gas_cloud_harvester":{"description":"activations_gas_cloud_harvester integer","format":"int64","title":"get_characters_character_id_stats_activations_gas_cloud_harvester","type":"integer"},"activations_hull_repair_unit":{"description":"activations_hull_repair_unit integer","format":"int64","title":"get_characters_character_id_stats_activations_hull_repair_unit","type":"integer"},"activations_hybrid_weapon":{"description":"activations_hybrid_weapon integer","format":"int64","title":"get_characters_character_id_stats_activations_hybrid_weapon","type":"integer"},"activations_industrial_core":{"description":"activations_industrial_core integer","format":"int64","title":"get_characters_character_id_stats_activations_industrial_core","type":"integer"},"activations_interdiction_sphere_launcher":{"description":"activations_interdiction_sphere_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_interdiction_sphere_launcher","type":"integer"},"activations_micro_jump_drive":{"description":"activations_micro_jump_drive integer","format":"int64","title":"get_characters_character_id_stats_activations_micro_jump_drive","type":"integer"},"activations_mining_laser":{"description":"activations_mining_laser integer","format":"int64","title":"get_characters_character_id_stats_activations_mining_laser","type":"integer"},"activations_missile_launcher":{"description":"activations_missile_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_missile_launcher","type":"integer"},"activations_passive_targeting_system":{"description":"activations_passive_targeting_system integer","format":"int64","title":"get_characters_character_id_stats_activations_passive_targeting_system","type":"integer"},"activations_probe_launcher":{"description":"activations_probe_launcher integer","format":"int64","title":"get_characters_character_id_stats_activations_probe_launcher","type":"integer"},"activations_projected_eccm":{"description":"activations_projected_eccm integer","format":"int64","title":"get_characters_character_id_stats_activations_projected_eccm","type":"integer"},"activations_projectile_weapon":{"description":"activations_projectile_weapon integer","format":"int64","title":"get_characters_character_id_stats_activations_projectile_weapon","type":"integer"},"activations_propulsion_module":{"description":"activations_propulsion_module integer","format":"int64","title":"get_characters_character_id_stats_activations_propulsion_module","type":"integer"},"activations_remote_armor_repairer":{"description":"activations_remote_armor_repairer integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_armor_repairer","type":"integer"},"activations_remote_capacitor_transmitter":{"description":"activations_remote_capacitor_transmitter integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_capacitor_transmitter","type":"integer"},"activations_remote_ecm_burst":{"description":"activations_remote_ecm_burst integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_ecm_burst","type":"integer"},"activations_remote_hull_repairer":{"description":"activations_remote_hull_repairer integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_hull_repairer","type":"integer"},"activations_remote_sensor_booster":{"description":"activations_remote_sensor_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_sensor_booster","type":"integer"},"activations_remote_sensor_damper":{"description":"activations_remote_sensor_damper integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_sensor_damper","type":"integer"},"activations_remote_shield_booster":{"description":"activations_remote_shield_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_shield_booster","type":"integer"},"activations_remote_tracking_computer":{"description":"activations_remote_tracking_computer integer","format":"int64","title":"get_characters_character_id_stats_activations_remote_tracking_computer","type":"integer"},"activations_salvager":{"description":"activations_salvager integer","format":"int64","title":"get_characters_character_id_stats_activations_salvager","type":"integer"},"activations_sensor_booster":{"description":"activations_sensor_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_sensor_booster","type":"integer"},"activations_shield_booster":{"description":"activations_shield_booster integer","format":"int64","title":"get_characters_character_id_stats_activations_shield_booster","type":"integer"},"activations_shield_hardener":{"description":"activations_shield_hardener integer","format":"int64","title":"get_characters_character_id_stats_activations_shield_hardener","type":"integer"},"activations_ship_scanner":{"description":"activations_ship_scanner integer","format":"int64","title":"get_characters_character_id_stats_activations_ship_scanner","type":"integer"},"activations_siege":{"description":"activations_siege integer","format":"int64","title":"get_characters_character_id_stats_activations_siege","type":"integer"},"activations_smart_bomb":{"description":"activations_smart_bomb integer","format":"int64","title":"get_characters_character_id_stats_activations_smart_bomb","type":"integer"},"activations_stasis_web":{"description":"activations_stasis_web integer","format":"int64","title":"get_characters_character_id_stats_activations_stasis_web","type":"integer"},"activations_strip_miner":{"description":"activations_strip_miner integer","format":"int64","title":"get_characters_character_id_stats_activations_strip_miner","type":"integer"},"activations_super_weapon":{"description":"activations_super_weapon integer","format":"int64","title":"get_characters_character_id_stats_activations_super_weapon","type":"integer"},"activations_survey_scanner":{"description":"activations_survey_scanner integer","format":"int64","title":"get_characters_character_id_stats_activations_survey_scanner","type":"integer"},"activations_target_breaker":{"description":"activations_target_breaker integer","format":"int64","title":"get_characters_character_id_stats_activations_target_breaker","type":"integer"},"activations_target_painter":{"description":"activations_target_painter integer","format":"int64","title":"get_characters_character_id_stats_activations_target_painter","type":"integer"},"activations_tracking_computer":{"description":"activations_tracking_computer integer","format":"int64","title":"get_characters_character_id_stats_activations_tracking_computer","type":"integer"},"activations_tracking_disruptor":{"description":"activations_tracking_disruptor integer","format":"int64","title":"get_characters_character_id_stats_activations_tracking_disruptor","type":"integer"},"activations_tractor_beam":{"description":"activations_tractor_beam integer","format":"int64","title":"get_characters_character_id_stats_activations_tractor_beam","type":"integer"},"activations_triage":{"description":"activations_triage integer","format":"int64","title":"get_characters_character_id_stats_activations_triage","type":"integer"},"activations_warp_disrupt_field_generator":{"description":"activations_warp_disrupt_field_generator integer","format":"int64","title":"get_characters_character_id_stats_activations_warp_disrupt_field_generator","type":"integer"},"activations_warp_scrambler":{"description":"activations_warp_scrambler integer","format":"int64","title":"get_characters_character_id_stats_activations_warp_scrambler","type":"integer"},"link_weapons":{"description":"link_weapons integer","format":"int64","title":"get_characters_character_id_stats_link_weapons","type":"integer"},"overload":{"description":"overload integer","format":"int64","title":"get_characters_character_id_stats_overload","type":"integer"},"repairs":{"description":"repairs integer","format":"int64","title":"get_characters_character_id_stats_repairs","type":"integer"}},"title":"get_characters_character_id_stats_module","type":"object"},"orbital":{"description":"orbital object","properties":{"strike_characters_killed":{"description":"strike_characters_killed integer","format":"int64","title":"get_characters_character_id_stats_strike_characters_killed","type":"integer"},"strike_damage_to_players_armor_amount":{"description":"strike_damage_to_players_armor_amount integer","format":"int64","title":"get_characters_character_id_stats_strike_damage_to_players_armor_amount","type":"integer"},"strike_damage_to_players_shield_amount":{"description":"strike_damage_to_players_shield_amount integer","format":"int64","title":"get_characters_character_id_stats_strike_damage_to_players_shield_amount","type":"integer"}},"title":"get_characters_character_id_stats_orbital","type":"object"},"pve":{"description":"pve object","properties":{"dungeons_completed_agent":{"description":"dungeons_completed_agent integer","format":"int64","title":"get_characters_character_id_stats_dungeons_completed_agent","type":"integer"},"dungeons_completed_distribution":{"description":"dungeons_completed_distribution integer","format":"int64","title":"get_characters_character_id_stats_dungeons_completed_distribution","type":"integer"},"missions_succeeded":{"description":"missions_succeeded integer","format":"int64","title":"get_characters_character_id_stats_missions_succeeded","type":"integer"},"missions_succeeded_epic_arc":{"description":"missions_succeeded_epic_arc integer","format":"int64","title":"get_characters_character_id_stats_missions_succeeded_epic_arc","type":"integer"}},"title":"get_characters_character_id_stats_pve","type":"object"},"social":{"description":"social object","properties":{"add_contact_bad":{"description":"add_contact_bad integer","format":"int64","title":"get_characters_character_id_stats_add_contact_bad","type":"integer"},"add_contact_good":{"description":"add_contact_good integer","format":"int64","title":"get_characters_character_id_stats_add_contact_good","type":"integer"},"add_contact_high":{"description":"add_contact_high integer","format":"int64","title":"get_characters_character_id_stats_add_contact_high","type":"integer"},"add_contact_horrible":{"description":"add_contact_horrible integer","format":"int64","title":"get_characters_character_id_stats_add_contact_horrible","type":"integer"},"add_contact_neutral":{"description":"add_contact_neutral integer","format":"int64","title":"get_characters_character_id_stats_add_contact_neutral","type":"integer"},"add_note":{"description":"add_note integer","format":"int64","title":"get_characters_character_id_stats_add_note","type":"integer"},"added_as_contact_bad":{"description":"added_as_contact_bad integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_bad","type":"integer"},"added_as_contact_good":{"description":"added_as_contact_good integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_good","type":"integer"},"added_as_contact_high":{"description":"added_as_contact_high integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_high","type":"integer"},"added_as_contact_horrible":{"description":"added_as_contact_horrible integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_horrible","type":"integer"},"added_as_contact_neutral":{"description":"added_as_contact_neutral integer","format":"int64","title":"get_characters_character_id_stats_added_as_contact_neutral","type":"integer"},"calendar_event_created":{"description":"calendar_event_created integer","format":"int64","title":"get_characters_character_id_stats_calendar_event_created","type":"integer"},"chat_messages_alliance":{"description":"chat_messages_alliance integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_alliance","type":"integer"},"chat_messages_constellation":{"description":"chat_messages_constellation integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_constellation","type":"integer"},"chat_messages_corporation":{"description":"chat_messages_corporation integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_corporation","type":"integer"},"chat_messages_fleet":{"description":"chat_messages_fleet integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_fleet","type":"integer"},"chat_messages_region":{"description":"chat_messages_region integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_region","type":"integer"},"chat_messages_solarsystem":{"description":"chat_messages_solarsystem integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_solarsystem","type":"integer"},"chat_messages_warfaction":{"description":"chat_messages_warfaction integer","format":"int64","title":"get_characters_character_id_stats_chat_messages_warfaction","type":"integer"},"chat_total_message_length":{"description":"chat_total_message_length integer","format":"int64","title":"get_characters_character_id_stats_chat_total_message_length","type":"integer"},"direct_trades":{"description":"direct_trades integer","format":"int64","title":"get_characters_character_id_stats_direct_trades","type":"integer"},"fleet_broadcasts":{"description":"fleet_broadcasts integer","format":"int64","title":"get_characters_character_id_stats_fleet_broadcasts","type":"integer"},"fleet_joins":{"description":"fleet_joins integer","format":"int64","title":"get_characters_character_id_stats_fleet_joins","type":"integer"},"mails_received":{"description":"mails_received integer","format":"int64","title":"get_characters_character_id_stats_mails_received","type":"integer"},"mails_sent":{"description":"mails_sent integer","format":"int64","title":"get_characters_character_id_stats_mails_sent","type":"integer"}},"title":"get_characters_character_id_stats_social","type":"object"},"travel":{"description":"travel object","properties":{"acceleration_gate_activations":{"description":"acceleration_gate_activations integer","format":"int64","title":"get_characters_character_id_stats_acceleration_gate_activations","type":"integer"},"align_to":{"description":"align_to integer","format":"int64","title":"get_characters_character_id_stats_align_to","type":"integer"},"distance_warped_high_sec":{"description":"distance_warped_high_sec integer","format":"int64","title":"get_characters_character_id_stats_distance_warped_high_sec","type":"integer"},"distance_warped_low_sec":{"description":"distance_warped_low_sec integer","format":"int64","title":"get_characters_character_id_stats_distance_warped_low_sec","type":"integer"},"distance_warped_null_sec":{"description":"distance_warped_null_sec integer","format":"int64","title":"get_characters_character_id_stats_distance_warped_null_sec","type":"integer"},"distance_warped_wormhole":{"description":"distance_warped_wormhole integer","format":"int64","title":"get_characters_character_id_stats_distance_warped_wormhole","type":"integer"},"docks_high_sec":{"description":"docks_high_sec integer","format":"int64","title":"get_characters_character_id_stats_docks_high_sec","type":"integer"},"docks_low_sec":{"description":"docks_low_sec integer","format":"int64","title":"get_characters_character_id_stats_docks_low_sec","type":"integer"},"docks_null_sec":{"description":"docks_null_sec integer","format":"int64","title":"get_characters_character_id_stats_docks_null_sec","type":"integer"},"jumps_stargate_high_sec":{"description":"jumps_stargate_high_sec integer","format":"int64","title":"get_characters_character_id_stats_jumps_stargate_high_sec","type":"integer"},"jumps_stargate_low_sec":{"description":"jumps_stargate_low_sec integer","format":"int64","title":"get_characters_character_id_stats_jumps_stargate_low_sec","type":"integer"},"jumps_stargate_null_sec":{"description":"jumps_stargate_null_sec integer","format":"int64","title":"get_characters_character_id_stats_jumps_stargate_null_sec","type":"integer"},"jumps_wormhole":{"description":"jumps_wormhole integer","format":"int64","title":"get_characters_character_id_stats_jumps_wormhole","type":"integer"},"warps_high_sec":{"description":"warps_high_sec integer","format":"int64","title":"get_characters_character_id_stats_warps_high_sec","type":"integer"},"warps_low_sec":{"description":"warps_low_sec integer","format":"int64","title":"get_characters_character_id_stats_warps_low_sec","type":"integer"},"warps_null_sec":{"description":"warps_null_sec integer","format":"int64","title":"get_characters_character_id_stats_warps_null_sec","type":"integer"},"warps_to_bookmark":{"description":"warps_to_bookmark integer","format":"int64","title":"get_characters_character_id_stats_warps_to_bookmark","type":"integer"},"warps_to_celestial":{"description":"warps_to_celestial integer","format":"int64","title":"get_characters_character_id_stats_warps_to_celestial","type":"integer"},"warps_to_fleet_member":{"description":"warps_to_fleet_member integer","format":"int64","title":"get_characters_character_id_stats_warps_to_fleet_member","type":"integer"},"warps_to_scan_result":{"description":"warps_to_scan_result integer","format":"int64","title":"get_characters_character_id_stats_warps_to_scan_result","type":"integer"},"warps_wormhole":{"description":"warps_wormhole integer","format":"int64","title":"get_characters_character_id_stats_warps_wormhole","type":"integer"}},"title":"get_characters_character_id_stats_travel","type":"object"},"year":{"description":"Gregorian year for this set of aggregates","format":"int32","title":"get_characters_character_id_stats_year","type":"integer"}},"required":["year"],"title":"get_characters_character_id_stats_200_ok","type":"object"},"maxItems":1000,"title":"get_characters_character_id_stats_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characterstats.read.v1"]}],"summary":"Yearly aggregate stats","tags":["Character"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":86400}},"/characters/{character_id}/titles/":{"get":{"description":"Returns a character's titles\n\n---\nAlternate route: `/dev/characters/{character_id}/titles/`\n\nAlternate route: `/legacy/characters/{character_id}/titles/`\n\nAlternate route: `/v1/characters/{character_id}/titles/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_titles","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of titles","examples":{"application/json":[{"name":"Awesome Title","title_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"name":{"description":"name string","title":"get_characters_character_id_titles_name","type":"string"},"title_id":{"description":"title_id integer","format":"int32","title":"get_characters_character_id_titles_title_id","type":"integer"}},"title":"get_characters_character_id_titles_200_ok","type":"object"},"maxItems":16,"title":"get_characters_character_id_titles_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-characters.read_titles.v1"]}],"summary":"Get character corporation titles","tags":["Character"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/characters/{character_id}/wallet/":{"get":{"description":"Returns a character's wallet balance\n\n---\nAlternate route: `/legacy/characters/{character_id}/wallet/`\n\nAlternate route: `/v1/characters/{character_id}/wallet/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_characters_character_id_wallet","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Wallet balance","examples":{"application/json":29500.01},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Wallet balance","format":"double","title":"get_characters_character_id_wallet_ok","type":"number"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_character_wallet.v1"]}],"summary":"Get a character's wallet balance","tags":["Wallet"],"x-alternate-versions":["legacy","v1"],"x-cached-seconds":120}},"/characters/{character_id}/wallet/journal/":{"get":{"description":"Retrieve the given character's wallet journal going 30 days back\n\n---\nAlternate route: `/dev/characters/{character_id}/wallet/journal/`\n\nAlternate route: `/v6/characters/{character_id}/wallet/journal/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_wallet_journal","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Journal entries","examples":{"application/json":[{"amount":-100000,"balance":500000.4316,"context_id":4,"context_id_type":"contract_id","date":"2018-02-23T14:31:32Z","description":"Contract Deposit","first_party_id":2112625428,"id":89,"ref_type":"contract_deposit","second_party_id":1000132}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"Wallet journal entries","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount of ISK given or taken from the wallet as a result of the given transaction. Positive when ISK is deposited into the wallet and negative when ISK is withdrawn","format":"double","title":"get_characters_character_id_wallet_journal_amount","type":"number"},"balance":{"description":"Wallet balance after transaction occurred","format":"double","title":"get_characters_character_id_wallet_journal_balance","type":"number"},"context_id":{"description":"An ID that gives extra context to the particular transaction. Because of legacy reasons the context is completely different per ref_type and means different things. It is also possible to not have a context_id","format":"int64","title":"get_characters_character_id_wallet_journal_context_id","type":"integer"},"context_id_type":{"description":"The type of the given context_id if present","enum":["structure_id","station_id","market_transaction_id","character_id","corporation_id","alliance_id","eve_system","industry_job_id","contract_id","planet_id","system_id","type_id"],"title":"get_characters_character_id_wallet_journal_context_id_type","type":"string"},"date":{"description":"Date and time of transaction","format":"date-time","title":"get_characters_character_id_wallet_journal_date","type":"string"},"description":{"description":"The reason for the transaction, mirrors what is seen in the client","title":"get_characters_character_id_wallet_journal_description","type":"string"},"first_party_id":{"description":"The id of the first party involved in the transaction. This attribute has no consistency and is different or non existant for particular ref_types. The description attribute will help make sense of what this attribute means. For more info about the given ID it can be dropped into the /universe/names/ ESI route to determine its type and name","format":"int32","title":"get_characters_character_id_wallet_journal_first_party_id","type":"integer"},"id":{"description":"Unique journal reference ID","format":"int64","title":"get_characters_character_id_wallet_journal_id","type":"integer"},"reason":{"description":"The user stated reason for the transaction. Only applies to some ref_types","title":"get_characters_character_id_wallet_journal_reason","type":"string"},"ref_type":{"description":"\"The transaction type for the given. transaction. Different transaction types will populate different attributes.\"","enum":["acceleration_gate_fee","advertisement_listing_fee","agent_donation","agent_location_services","agent_miscellaneous","agent_mission_collateral_paid","agent_mission_collateral_refunded","agent_mission_reward","agent_mission_reward_corporation_tax","agent_mission_time_bonus_reward","agent_mission_time_bonus_reward_corporation_tax","agent_security_services","agent_services_rendered","agents_preward","alliance_maintainance_fee","alliance_registration_fee","asset_safety_recovery_tax","bounty","bounty_prize","bounty_prize_corporation_tax","bounty_prizes","bounty_reimbursement","bounty_surcharge","brokers_fee","clone_activation","clone_transfer","contraband_fine","contract_auction_bid","contract_auction_bid_corp","contract_auction_bid_refund","contract_auction_sold","contract_brokers_fee","contract_brokers_fee_corp","contract_collateral","contract_collateral_deposited_corp","contract_collateral_payout","contract_collateral_refund","contract_deposit","contract_deposit_corp","contract_deposit_refund","contract_deposit_sales_tax","contract_price","contract_price_payment_corp","contract_reversal","contract_reward","contract_reward_deposited","contract_reward_deposited_corp","contract_reward_refund","contract_sales_tax","copying","corporate_reward_payout","corporate_reward_tax","corporation_account_withdrawal","corporation_bulk_payment","corporation_dividend_payment","corporation_liquidation","corporation_logo_change_cost","corporation_payment","corporation_registration_fee","courier_mission_escrow","cspa","cspaofflinerefund","datacore_fee","dna_modification_fee","docking_fee","duel_wager_escrow","duel_wager_payment","duel_wager_refund","factory_slot_rental_fee","gm_cash_transfer","industry_job_tax","infrastructure_hub_maintenance","inheritance","insurance","item_trader_payment","jump_clone_activation_fee","jump_clone_installation_fee","kill_right_fee","lp_store","manufacturing","market_escrow","market_fine_paid","market_transaction","medal_creation","medal_issued","mission_completion","mission_cost","mission_expiration","mission_reward","office_rental_fee","operation_bonus","opportunity_reward","planetary_construction","planetary_export_tax","planetary_import_tax","player_donation","player_trading","project_discovery_reward","project_discovery_tax","reaction","release_of_impounded_property","repair_bill","reprocessing_tax","researching_material_productivity","researching_technology","researching_time_productivity","resource_wars_reward","reverse_engineering","security_processing_fee","shares","skill_purchase","sovereignity_bill","store_purchase","store_purchase_refund","structure_gate_jump","transaction_tax","upkeep_adjustment_fee","war_ally_contract","war_fee","war_fee_surrender"],"title":"get_characters_character_id_wallet_journal_ref_type","type":"string"},"second_party_id":{"description":"The id of the second party involved in the transaction. This attribute has no consistency and is different or non existant for particular ref_types. The description attribute will help make sense of what this attribute means. For more info about the given ID it can be dropped into the /universe/names/ ESI route to determine its type and name","format":"int32","title":"get_characters_character_id_wallet_journal_second_party_id","type":"integer"},"tax":{"description":"Tax amount received. Only applies to tax related transactions","format":"double","title":"get_characters_character_id_wallet_journal_tax","type":"number"},"tax_receiver_id":{"description":"The corporation ID receiving any tax paid. Only applies to tax related transactions","format":"int32","title":"get_characters_character_id_wallet_journal_tax_receiver_id","type":"integer"}},"required":["date","id","ref_type","description"],"title":"get_characters_character_id_wallet_journal_200_ok","type":"object"},"maxItems":2500,"title":"get_characters_character_id_wallet_journal_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_character_wallet.v1"]}],"summary":"Get character wallet journal","tags":["Wallet"],"x-alternate-versions":["dev","v6"],"x-cached-seconds":3600}},"/characters/{character_id}/wallet/transactions/":{"get":{"description":"Get wallet transactions of a character\n\n---\nAlternate route: `/dev/characters/{character_id}/wallet/transactions/`\n\nAlternate route: `/legacy/characters/{character_id}/wallet/transactions/`\n\nAlternate route: `/v1/characters/{character_id}/wallet/transactions/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_characters_character_id_wallet_transactions","parameters":[{"$ref":"#/parameters/character_id"},{"$ref":"#/parameters/datasource"},{"description":"Only show transactions happened before the one referenced by this id","format":"int64","in":"query","name":"from_id","required":false,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Wallet transactions","examples":{"application/json":[{"client_id":54321,"date":"2016-10-24T09:00:00Z","is_buy":true,"is_personal":true,"journal_ref_id":67890,"location_id":60014719,"quantity":1,"transaction_id":1234567890,"type_id":587,"unit_price":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Wallet transactions","items":{"description":"wallet transaction","properties":{"client_id":{"description":"client_id integer","format":"int32","title":"get_characters_character_id_wallet_transactions_client_id","type":"integer"},"date":{"description":"Date and time of transaction","format":"date-time","title":"get_characters_character_id_wallet_transactions_date","type":"string"},"is_buy":{"description":"is_buy boolean","title":"get_characters_character_id_wallet_transactions_is_buy","type":"boolean"},"is_personal":{"description":"is_personal boolean","title":"get_characters_character_id_wallet_transactions_is_personal","type":"boolean"},"journal_ref_id":{"description":"journal_ref_id integer","format":"int64","title":"get_characters_character_id_wallet_transactions_journal_ref_id","type":"integer"},"location_id":{"description":"location_id integer","format":"int64","title":"get_characters_character_id_wallet_transactions_location_id","type":"integer"},"quantity":{"description":"quantity integer","format":"int32","title":"get_characters_character_id_wallet_transactions_quantity","type":"integer"},"transaction_id":{"description":"Unique transaction ID","format":"int64","title":"get_characters_character_id_wallet_transactions_transaction_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_characters_character_id_wallet_transactions_type_id","type":"integer"},"unit_price":{"description":"Amount paid per unit","format":"double","title":"get_characters_character_id_wallet_transactions_unit_price","type":"number"}},"required":["transaction_id","date","location_id","type_id","unit_price","quantity","client_id","is_buy","is_personal","journal_ref_id"],"title":"get_characters_character_id_wallet_transactions_200_ok","type":"object"},"maxItems":2500,"title":"get_characters_character_id_wallet_transactions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_character_wallet.v1"]}],"summary":"Get wallet transactions","tags":["Wallet"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/contracts/public/bids/{contract_id}/":{"get":{"description":"Lists bids on a public auction contract\n\n---\nAlternate route: `/dev/contracts/public/bids/{contract_id}/`\n\nAlternate route: `/legacy/contracts/public/bids/{contract_id}/`\n\nAlternate route: `/v1/contracts/public/bids/{contract_id}/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_contracts_public_bids_contract_id","parameters":[{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"}],"responses":{"200":{"description":"A list of bids","examples":{"application/json":[{"amount":1.23,"bid_id":1,"date_bid":"2017-01-01T10:10:10Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount bid, in ISK","format":"float","title":"get_contracts_public_bids_contract_id_amount","type":"number"},"bid_id":{"description":"Unique ID for the bid","format":"int32","title":"get_contracts_public_bids_contract_id_bid_id","type":"integer"},"date_bid":{"description":"Datetime when the bid was placed","format":"date-time","title":"get_contracts_public_bids_contract_id_date_bid","type":"string"}},"required":["bid_id","date_bid","amount"],"title":"get_contracts_public_bids_contract_id_200_ok","type":"object"},"maxItems":1000,"title":"get_contracts_public_bids_contract_id_ok","type":"array"}},"204":{"description":"Contract expired or recently accepted by player","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"403":{"description":"Not Authorized to see contract","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"description":"Forbidden","properties":{"error":{"description":"Forbidden message","title":"get_contracts_public_bids_contract_id_403_forbidden","type":"string"}},"title":"get_contracts_public_bids_contract_id_forbidden","type":"object"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_contracts_public_bids_contract_id_404_not_found","type":"string"}},"title":"get_contracts_public_bids_contract_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get public contract bids","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/contracts/public/items/{contract_id}/":{"get":{"description":"Lists items of a public contract\n\n---\nAlternate route: `/dev/contracts/public/items/{contract_id}/`\n\nAlternate route: `/legacy/contracts/public/items/{contract_id}/`\n\nAlternate route: `/v1/contracts/public/items/{contract_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_contracts_public_items_contract_id","parameters":[{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"}],"responses":{"200":{"description":"A list of items in this contract","examples":{"application/json":[{"is_included":true,"item_id":123456,"quantity":1,"record_id":123456,"type_id":587}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_blueprint_copy":{"description":"is_blueprint_copy boolean","title":"get_contracts_public_items_contract_id_is_blueprint_copy","type":"boolean"},"is_included":{"description":"true if the contract issuer has submitted this item with the contract, false if the isser is asking for this item in the contract","title":"get_contracts_public_items_contract_id_is_included","type":"boolean"},"item_id":{"description":"Unique ID for the item being sold. Not present if item is being requested by contract rather than sold with contract","format":"int64","title":"get_contracts_public_items_contract_id_item_id","type":"integer"},"material_efficiency":{"description":"Material Efficiency Level of the blueprint","format":"int32","maximum":25,"minimum":0,"title":"get_contracts_public_items_contract_id_material_efficiency","type":"integer"},"quantity":{"description":"Number of items in the stack","format":"int32","title":"get_contracts_public_items_contract_id_quantity","type":"integer"},"record_id":{"description":"Unique ID for the item, used by the contract system","format":"int64","title":"get_contracts_public_items_contract_id_record_id","type":"integer"},"runs":{"description":"Number of runs remaining if the blueprint is a copy, -1 if it is an original","format":"int32","minimum":-1,"title":"get_contracts_public_items_contract_id_runs","type":"integer"},"time_efficiency":{"description":"Time Efficiency Level of the blueprint","format":"int32","maximum":20,"minimum":0,"title":"get_contracts_public_items_contract_id_time_efficiency","type":"integer"},"type_id":{"description":"Type ID for item","format":"int32","title":"get_contracts_public_items_contract_id_type_id","type":"integer"}},"required":["record_id","type_id","quantity","is_included"],"title":"get_contracts_public_items_contract_id_200_ok","type":"object"},"maxItems":1000,"title":"get_contracts_public_items_contract_id_ok","type":"array"}},"204":{"description":"Contract expired or recently accepted by player","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"403":{"description":"Not Authorized to see contract","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"description":"Forbidden","properties":{"error":{"description":"Forbidden message","title":"get_contracts_public_items_contract_id_403_forbidden","type":"string"}},"title":"get_contracts_public_items_contract_id_forbidden","type":"object"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_contracts_public_items_contract_id_404_not_found","type":"string"}},"title":"get_contracts_public_items_contract_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get public contract items","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/contracts/public/{region_id}/":{"get":{"description":"Returns a paginated list of all public contracts in the given region\n\n---\nAlternate route: `/dev/contracts/public/{region_id}/`\n\nAlternate route: `/legacy/contracts/public/{region_id}/`\n\nAlternate route: `/v1/contracts/public/{region_id}/`\n\n---\nThis route is cached for up to 1800 seconds","operationId":"get_contracts_public_region_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"description":"An EVE region id","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A list of contracts","examples":{"application/json":[{"buyout":10000000000.01,"contract_id":1,"date_expired":"2017-06-13T13:12:32Z","date_issued":"2017-06-06T13:12:32Z","days_to_complete":0,"end_location_id":60014719,"for_corporation":true,"issuer_corporation_id":456,"issuer_id":123,"price":1000000.01,"reward":0.01,"start_location_id":60014719,"type":"auction","volume":0.01}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"buyout":{"description":"Buyout price (for Auctions only)","format":"double","title":"get_contracts_public_region_id_buyout","type":"number"},"collateral":{"description":"Collateral price (for Couriers only)","format":"double","title":"get_contracts_public_region_id_collateral","type":"number"},"contract_id":{"description":"contract_id integer","format":"int32","title":"get_contracts_public_region_id_contract_id","type":"integer"},"date_expired":{"description":"Expiration date of the contract","format":"date-time","title":"get_contracts_public_region_id_date_expired","type":"string"},"date_issued":{"description":"\u0421reation date of the contract","format":"date-time","title":"get_contracts_public_region_id_date_issued","type":"string"},"days_to_complete":{"description":"Number of days to perform the contract","format":"int32","title":"get_contracts_public_region_id_days_to_complete","type":"integer"},"end_location_id":{"description":"End location ID (for Couriers contract)","format":"int64","title":"get_contracts_public_region_id_end_location_id","type":"integer"},"for_corporation":{"description":"true if the contract was issued on behalf of the issuer's corporation","title":"get_contracts_public_region_id_for_corporation","type":"boolean"},"issuer_corporation_id":{"description":"Character's corporation ID for the issuer","format":"int32","title":"get_contracts_public_region_id_issuer_corporation_id","type":"integer"},"issuer_id":{"description":"Character ID for the issuer","format":"int32","title":"get_contracts_public_region_id_issuer_id","type":"integer"},"price":{"description":"Price of contract (for ItemsExchange and Auctions)","format":"double","title":"get_contracts_public_region_id_price","type":"number"},"reward":{"description":"Remuneration for contract (for Couriers only)","format":"double","title":"get_contracts_public_region_id_reward","type":"number"},"start_location_id":{"description":"Start location ID (for Couriers contract)","format":"int64","title":"get_contracts_public_region_id_start_location_id","type":"integer"},"title":{"description":"Title of the contract","title":"get_contracts_public_region_id_title","type":"string"},"type":{"description":"Type of the contract","enum":["unknown","item_exchange","auction","courier","loan"],"title":"get_contracts_public_region_id_type","type":"string"},"volume":{"description":"Volume of items in the contract","format":"double","title":"get_contracts_public_region_id_volume","type":"number"}},"required":["contract_id","issuer_id","issuer_corporation_id","type","date_issued","date_expired"],"title":"get_contracts_public_region_id_200_ok","type":"object"},"maxItems":1000,"title":"get_contracts_public_region_id_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Region not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_contracts_public_region_id_404_not_found","type":"string"}},"title":"get_contracts_public_region_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get public contracts","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":1800}},"/corporation/{corporation_id}/mining/extractions/":{"get":{"description":"Extraction timers for all moon chunks being extracted by refineries belonging to a corporation.\n\n\n---\nAlternate route: `/dev/corporation/{corporation_id}/mining/extractions/`\n\nAlternate route: `/legacy/corporation/{corporation_id}/mining/extractions/`\n\nAlternate route: `/v1/corporation/{corporation_id}/mining/extractions/`\n\n---\nThis route is cached for up to 1800 seconds\n\n---\nRequires one of the following EVE corporation role(s): Station_Manager\n","operationId":"get_corporation_corporation_id_mining_extractions","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of chunk timers","examples":{"application/json":[{"chunk_arrival_time":"2017-10-17T11:00:59Z","extraction_start_time":"2017-10-11T10:37:04Z","moon_id":40307229,"natural_decay_time":"2017-10-17T14:00:59Z","structure_id":1000000010579}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"chunk_arrival_time":{"description":"The time at which the chunk being extracted will arrive and can be fractured by the moon mining drill.\n","format":"date-time","title":"get_corporation_corporation_id_mining_extractions_chunk_arrival_time","type":"string"},"extraction_start_time":{"description":"The time at which the current extraction was initiated.\n","format":"date-time","title":"get_corporation_corporation_id_mining_extractions_extraction_start_time","type":"string"},"moon_id":{"description":"moon_id integer","format":"int32","title":"get_corporation_corporation_id_mining_extractions_moon_id","type":"integer"},"natural_decay_time":{"description":"The time at which the chunk being extracted will naturally fracture if it is not first fractured by the moon mining drill.\n","format":"date-time","title":"get_corporation_corporation_id_mining_extractions_natural_decay_time","type":"string"},"structure_id":{"description":"structure_id integer","format":"int64","title":"get_corporation_corporation_id_mining_extractions_structure_id","type":"integer"}},"required":["structure_id","moon_id","extraction_start_time","chunk_arrival_time","natural_decay_time"],"title":"get_corporation_corporation_id_mining_extractions_200_ok","type":"object"},"maxItems":1000,"title":"get_corporation_corporation_id_mining_extractions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_corporation_mining.v1"]}],"summary":"Moon extraction timers","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":1800,"x-required-roles":["Station_Manager"]}},"/corporation/{corporation_id}/mining/observers/":{"get":{"description":"Paginated list of all entities capable of observing and recording mining for a corporation\n\n\n---\nAlternate route: `/dev/corporation/{corporation_id}/mining/observers/`\n\nAlternate route: `/legacy/corporation/{corporation_id}/mining/observers/`\n\nAlternate route: `/v1/corporation/{corporation_id}/mining/observers/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant\n","operationId":"get_corporation_corporation_id_mining_observers","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Observer list of a corporation","examples":{"application/json":[{"last_updated":"2017-09-19","observer_id":1,"observer_type":"structure"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"last_updated":{"description":"last_updated string","format":"date","title":"get_corporation_corporation_id_mining_observers_last_updated","type":"string"},"observer_id":{"description":"The entity that was observing the asteroid field when it was mined.\n","format":"int64","title":"get_corporation_corporation_id_mining_observers_observer_id","type":"integer"},"observer_type":{"description":"The category of the observing entity","enum":["structure"],"title":"get_corporation_corporation_id_mining_observers_observer_type","type":"string"}},"required":["last_updated","observer_id","observer_type"],"title":"get_corporation_corporation_id_mining_observers_200_ok","type":"object"},"maxItems":1000,"title":"get_corporation_corporation_id_mining_observers_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_corporation_mining.v1"]}],"summary":"Corporation mining observers","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Accountant"]}},"/corporation/{corporation_id}/mining/observers/{observer_id}/":{"get":{"description":"Paginated record of all mining seen by an observer\n\n\n---\nAlternate route: `/dev/corporation/{corporation_id}/mining/observers/{observer_id}/`\n\nAlternate route: `/legacy/corporation/{corporation_id}/mining/observers/{observer_id}/`\n\nAlternate route: `/v1/corporation/{corporation_id}/mining/observers/{observer_id}/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant\n","operationId":"get_corporation_corporation_id_mining_observers_observer_id","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"A mining observer id","format":"int64","in":"path","name":"observer_id","required":true,"type":"integer"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Mining ledger of an observer","examples":{"application/json":[{"character_id":95465499,"last_updated":"2017-09-19","quantity":500,"recorded_corporation_id":109299958,"type_id":1230}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"The character that did the mining\n","format":"int32","title":"get_corporation_corporation_id_mining_observers_observer_id_character_id","type":"integer"},"last_updated":{"description":"last_updated string","format":"date","title":"get_corporation_corporation_id_mining_observers_observer_id_last_updated","type":"string"},"quantity":{"description":"quantity integer","format":"int64","title":"get_corporation_corporation_id_mining_observers_observer_id_quantity","type":"integer"},"recorded_corporation_id":{"description":"The corporation id of the character at the time data was recorded.\n","format":"int32","title":"get_corporation_corporation_id_mining_observers_observer_id_recorded_corporation_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporation_corporation_id_mining_observers_observer_id_type_id","type":"integer"}},"required":["last_updated","character_id","recorded_corporation_id","type_id","quantity"],"title":"get_corporation_corporation_id_mining_observers_observer_id_200_ok","type":"object"},"maxItems":1000,"title":"get_corporation_corporation_id_mining_observers_observer_id_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_corporation_mining.v1"]}],"summary":"Observed corporation mining","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Accountant"]}},"/corporations/npccorps/":{"get":{"description":"Get a list of npc corporations\n\n---\nAlternate route: `/dev/corporations/npccorps/`\n\nAlternate route: `/legacy/corporations/npccorps/`\n\nAlternate route: `/v1/corporations/npccorps/`\n\n---\nThis route expires daily at 11:05","operationId":"get_corporations_npccorps","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of npc corporation ids","examples":{"application/json":[1000001,1000002,1000003]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_corporations_npccorps_200_ok","type":"integer"},"maxItems":500,"title":"get_corporations_npccorps_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get npc corporations","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"]}},"/corporations/{corporation_id}/":{"get":{"description":"Public information about a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/`\n\nAlternate route: `/v4/corporations/{corporation_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Public information about a corporation","examples":{"application/json":{"alliance_id":434243723,"ceo_id":180548812,"creator_id":180548812,"date_founded":"2004-11-28T16:42:51Z","description":"This is a corporation description, it's basically just a string","member_count":656,"name":"C C P","tax_rate":0.256,"ticker":"-CCP-","url":"http://www.eveonline.com"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"alliance_id":{"description":"ID of the alliance that corporation is a member of, if any","format":"int32","title":"get_corporations_corporation_id_alliance_id","type":"integer"},"ceo_id":{"description":"ceo_id integer","format":"int32","title":"get_corporations_corporation_id_ceo_id","type":"integer"},"creator_id":{"description":"creator_id integer","format":"int32","title":"get_corporations_corporation_id_creator_id","type":"integer"},"date_founded":{"description":"date_founded string","format":"date-time","title":"get_corporations_corporation_id_date_founded","type":"string"},"description":{"description":"description string","title":"get_corporations_corporation_id_description","type":"string"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_corporations_corporation_id_faction_id","type":"integer"},"home_station_id":{"description":"home_station_id integer","format":"int32","title":"get_corporations_corporation_id_home_station_id","type":"integer"},"member_count":{"description":"member_count integer","format":"int32","title":"get_corporations_corporation_id_member_count","type":"integer"},"name":{"description":"the full name of the corporation","title":"get_corporations_corporation_id_name","type":"string"},"shares":{"description":"shares integer","format":"int64","title":"get_corporations_corporation_id_shares","type":"integer"},"tax_rate":{"description":"tax_rate number","format":"float","maximum":1,"minimum":0,"title":"get_corporations_corporation_id_tax_rate","type":"number"},"ticker":{"description":"the short name of the corporation","title":"get_corporations_corporation_id_ticker","type":"string"},"url":{"description":"url string","title":"get_corporations_corporation_id_url","type":"string"},"war_eligible":{"description":"war_eligible boolean","title":"get_corporations_corporation_id_war_eligible","type":"boolean"}},"required":["name","ticker","member_count","ceo_id","tax_rate","creator_id"],"title":"get_corporations_corporation_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Corporation not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_corporations_corporation_id_404_not_found","type":"string"}},"title":"get_corporations_corporation_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get corporation information","tags":["Corporation"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/alliancehistory/":{"get":{"description":"Get a list of all the alliances a corporation has been a member of\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/alliancehistory/`\n\nAlternate route: `/v2/corporations/{corporation_id}/alliancehistory/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_alliancehistory","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Alliance history for the given corporation","examples":{"application/json":[{"alliance_id":99000006,"is_deleted":true,"record_id":23,"start_date":"2016-10-25T14:46:00Z"},{"record_id":1,"start_date":"2015-07-06T20:56:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_corporations_corporation_id_alliancehistory_alliance_id","type":"integer"},"is_deleted":{"description":"True if the alliance has been closed","title":"get_corporations_corporation_id_alliancehistory_is_deleted","type":"boolean"},"record_id":{"description":"An incrementing ID that can be used to canonically establish order of records in cases where dates may be ambiguous","format":"int32","title":"get_corporations_corporation_id_alliancehistory_record_id","type":"integer"},"start_date":{"description":"start_date string","format":"date-time","title":"get_corporations_corporation_id_alliancehistory_start_date","type":"string"}},"required":["start_date","record_id"],"title":"get_corporations_corporation_id_alliancehistory_200_ok","type":"object"},"maxItems":10000,"title":"get_corporations_corporation_id_alliancehistory_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get alliance history","tags":["Corporation"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/assets/":{"get":{"description":"Return a list of the corporation assets\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/assets/`\n\nAlternate route: `/v4/corporations/{corporation_id}/assets/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_assets","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of assets","examples":{"application/json":[{"is_blueprint_copy":true,"is_singleton":true,"item_id":1000000016835,"location_flag":"Hangar","location_id":60002959,"location_type":"station","quantity":1,"type_id":3516}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_blueprint_copy":{"description":"is_blueprint_copy boolean","title":"get_corporations_corporation_id_assets_is_blueprint_copy","type":"boolean"},"is_singleton":{"description":"is_singleton boolean","title":"get_corporations_corporation_id_assets_is_singleton","type":"boolean"},"item_id":{"description":"item_id integer","format":"int64","title":"get_corporations_corporation_id_assets_item_id","type":"integer"},"location_flag":{"description":"location_flag string","enum":["AssetSafety","AutoFit","Bonus","Booster","BoosterBay","Capsule","Cargo","CorpDeliveries","CorpSAG1","CorpSAG2","CorpSAG3","CorpSAG4","CorpSAG5","CorpSAG6","CorpSAG7","CrateLoot","Deliveries","DroneBay","DustBattle","DustDatabank","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","FleetHangar","FrigateEscapeBay","Hangar","HangarAll","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","HiddenModifiers","Implant","Impounded","JunkyardReprocessed","JunkyardTrashed","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","Locked","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","OfficeFolder","Pilot","PlanetSurface","QuafeBay","Reward","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","SecondaryStorage","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","ShipHangar","ShipOffline","Skill","SkillInTraining","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedFuelBay","SpecializedGasHold","SpecializedIndustrialShipHold","SpecializedLargeShipHold","SpecializedMaterialBay","SpecializedMediumShipHold","SpecializedMineralHold","SpecializedOreHold","SpecializedPlanetaryCommoditiesHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","StructureActive","StructureFuel","StructureInactive","StructureOffline","SubSystemBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","Unlocked","Wallet","Wardrobe"],"title":"get_corporations_corporation_id_assets_location_flag","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_corporations_corporation_id_assets_location_id","type":"integer"},"location_type":{"description":"location_type string","enum":["station","solar_system","item","other"],"title":"get_corporations_corporation_id_assets_location_type","type":"string"},"quantity":{"description":"quantity integer","format":"int32","title":"get_corporations_corporation_id_assets_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_assets_type_id","type":"integer"}},"required":["type_id","quantity","location_id","location_type","item_id","location_flag","is_singleton"],"title":"get_corporations_corporation_id_assets_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_assets_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_corporation_assets.v1"]}],"summary":"Get corporation assets","tags":["Assets"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/assets/locations/":{"post":{"description":"Return locations for a set of item ids, which you can get from corporation assets endpoint. Coordinates for items in hangars or stations are set to (0,0,0)\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/assets/locations/`\n\nAlternate route: `/v2/corporations/{corporation_id}/assets/locations/`\n\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"post_corporations_corporation_id_assets_locations","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"description":"A list of item ids","in":"body","name":"item_ids","required":true,"schema":{"description":"item_ids array","items":{"description":"item_id integer","format":"int64","title":"post_corporations_corporation_id_assets_locations_item_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_corporations_corporation_id_assets_locations_item_ids","type":"array","uniqueItems":true}},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of asset locations","examples":{"application/json":[{"item_id":12345,"position":{"x":1.2,"y":2.3,"z":-3.4}}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"post_corporations_corporation_id_assets_locations_item_id","type":"integer"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"post_corporations_corporation_id_assets_locations_x","type":"number"},"y":{"description":"y number","format":"double","title":"post_corporations_corporation_id_assets_locations_y","type":"number"},"z":{"description":"z number","format":"double","title":"post_corporations_corporation_id_assets_locations_z","type":"number"}},"required":["x","y","z"],"title":"post_corporations_corporation_id_assets_locations_position","type":"object"}},"required":["item_id","position"],"title":"post_corporations_corporation_id_assets_locations_200_ok","type":"object"},"maxItems":1000,"title":"post_corporations_corporation_id_assets_locations_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Invalid IDs","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_corporations_corporation_id_assets_locations_404_not_found","type":"string"}},"title":"post_corporations_corporation_id_assets_locations_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_corporation_assets.v1"]}],"summary":"Get corporation asset locations","tags":["Assets"],"x-alternate-versions":["dev","v2"],"x-required-roles":["Director"]}},"/corporations/{corporation_id}/assets/names/":{"post":{"description":"Return names for a set of item ids, which you can get from corporation assets endpoint. Only valid for items that can customize names, like containers or ships\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/assets/names/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/assets/names/`\n\nAlternate route: `/v1/corporations/{corporation_id}/assets/names/`\n\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"post_corporations_corporation_id_assets_names","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"description":"A list of item ids","in":"body","name":"item_ids","required":true,"schema":{"description":"item_ids array","items":{"description":"item_id integer","format":"int64","title":"post_corporations_corporation_id_assets_names_item_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_corporations_corporation_id_assets_names_item_ids","type":"array","uniqueItems":true}},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of asset names","examples":{"application/json":[{"item_id":12345,"name":"Awesome Name"}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"post_corporations_corporation_id_assets_names_item_id","type":"integer"},"name":{"description":"name string","title":"post_corporations_corporation_id_assets_names_name","type":"string"}},"required":["item_id","name"],"title":"post_corporations_corporation_id_assets_names_200_ok","type":"object"},"maxItems":1000,"title":"post_corporations_corporation_id_assets_names_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Invalid IDs","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_corporations_corporation_id_assets_names_404_not_found","type":"string"}},"title":"post_corporations_corporation_id_assets_names_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-assets.read_corporation_assets.v1"]}],"summary":"Get corporation asset names","tags":["Assets"],"x-alternate-versions":["dev","legacy","v1"],"x-required-roles":["Director"]}},"/corporations/{corporation_id}/blueprints/":{"get":{"description":"Returns a list of blueprints the corporation owns\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/blueprints/`\n\nAlternate route: `/v2/corporations/{corporation_id}/blueprints/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_blueprints","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation blueprints","examples":{"application/json":[{"item_id":1000000010495,"location_flag":"CorpSAG1","location_id":60014719,"material_efficiency":0,"quantity":1,"runs":-1,"time_efficiency":0,"type_id":691}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"item_id":{"description":"Unique ID for this item.","format":"int64","title":"get_corporations_corporation_id_blueprints_item_id","type":"integer"},"location_flag":{"description":"Type of the location_id","enum":["AssetSafety","AutoFit","Bonus","Booster","BoosterBay","Capsule","Cargo","CorpDeliveries","CorpSAG1","CorpSAG2","CorpSAG3","CorpSAG4","CorpSAG5","CorpSAG6","CorpSAG7","CrateLoot","Deliveries","DroneBay","DustBattle","DustDatabank","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","FleetHangar","Hangar","HangarAll","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","HiddenModifiers","Implant","Impounded","JunkyardReprocessed","JunkyardTrashed","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","Locked","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","OfficeFolder","Pilot","PlanetSurface","QuafeBay","Reward","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","SecondaryStorage","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","ShipHangar","ShipOffline","Skill","SkillInTraining","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedFuelBay","SpecializedGasHold","SpecializedIndustrialShipHold","SpecializedLargeShipHold","SpecializedMaterialBay","SpecializedMediumShipHold","SpecializedMineralHold","SpecializedOreHold","SpecializedPlanetaryCommoditiesHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","StructureActive","StructureFuel","StructureInactive","StructureOffline","SubSystemBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","Unlocked","Wallet","Wardrobe"],"title":"get_corporations_corporation_id_blueprints_location_flag","type":"string"},"location_id":{"description":"References a station, a ship or an item_id if this blueprint is located within a container.","format":"int64","title":"get_corporations_corporation_id_blueprints_location_id","type":"integer"},"material_efficiency":{"description":"Material Efficiency Level of the blueprint.","format":"int32","maximum":25,"minimum":0,"title":"get_corporations_corporation_id_blueprints_material_efficiency","type":"integer"},"quantity":{"description":"A range of numbers with a minimum of -2 and no maximum value where -1 is an original and -2 is a copy. It can be a positive integer if it is a stack of blueprint originals fresh from the market (e.g. no activities performed on them yet).","format":"int32","minimum":-2,"title":"get_corporations_corporation_id_blueprints_quantity","type":"integer"},"runs":{"description":"Number of runs remaining if the blueprint is a copy, -1 if it is an original.","format":"int32","minimum":-1,"title":"get_corporations_corporation_id_blueprints_runs","type":"integer"},"time_efficiency":{"description":"Time Efficiency Level of the blueprint.","format":"int32","maximum":20,"minimum":0,"title":"get_corporations_corporation_id_blueprints_time_efficiency","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_blueprints_type_id","type":"integer"}},"required":["item_id","type_id","location_id","location_flag","quantity","time_efficiency","material_efficiency","runs"],"title":"get_corporations_corporation_id_blueprints_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_blueprints_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_blueprints.v1"]}],"summary":"Get corporation blueprints","tags":["Corporation"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/bookmarks/":{"get":{"description":"A list of your corporation's bookmarks\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/bookmarks/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/bookmarks/`\n\nAlternate route: `/v1/corporations/{corporation_id}/bookmarks/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_bookmarks","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation owned bookmarks","examples":{"application/json":[{"bookmark_id":4,"created":"2016-08-09T11:57:47Z","creator_id":2112625428,"folder_id":5,"item":{"item_id":50006722,"type_id":29633},"label":"Stargate","location_id":30003430,"notes":"This is a stargate"},{"bookmark_id":5,"coordinates":{"x":-2958928814000,"y":-338367275823,"z":2114538075090},"created":"2016-08-09T11:57:47Z","creator_id":2112625428,"folder_id":5,"label":"Random location","location_id":30003430,"notes":"This is a random location in space"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"bookmark_id":{"description":"bookmark_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_bookmark_id","type":"integer"},"coordinates":{"description":"Optional object that is returned if a bookmark was made on a planet or a random location in space.","properties":{"x":{"description":"x number","format":"double","title":"get_corporations_corporation_id_bookmarks_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_corporations_corporation_id_bookmarks_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_corporations_corporation_id_bookmarks_z","type":"number"}},"required":["x","y","z"],"title":"get_corporations_corporation_id_bookmarks_coordinates","type":"object"},"created":{"description":"created string","format":"date-time","title":"get_corporations_corporation_id_bookmarks_created","type":"string"},"creator_id":{"description":"creator_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_creator_id","type":"integer"},"folder_id":{"description":"folder_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_folder_id","type":"integer"},"item":{"description":"Optional object that is returned if a bookmark was made on a particular item.","properties":{"item_id":{"description":"item_id integer","format":"int64","title":"get_corporations_corporation_id_bookmarks_item_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_type_id","type":"integer"}},"required":["item_id","type_id"],"title":"get_corporations_corporation_id_bookmarks_item","type":"object"},"label":{"description":"label string","title":"get_corporations_corporation_id_bookmarks_label","type":"string"},"location_id":{"description":"location_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_location_id","type":"integer"},"notes":{"description":"notes string","title":"get_corporations_corporation_id_bookmarks_notes","type":"string"}},"required":["bookmark_id","creator_id","created","label","notes","location_id"],"title":"get_corporations_corporation_id_bookmarks_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_bookmarks_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-bookmarks.read_corporation_bookmarks.v1"]}],"summary":"List corporation bookmarks","tags":["Bookmarks"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/bookmarks/folders/":{"get":{"description":"A list of your corporation's bookmark folders\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/bookmarks/folders/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/bookmarks/folders/`\n\nAlternate route: `/v1/corporations/{corporation_id}/bookmarks/folders/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_bookmarks_folders","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation owned bookmark folders","examples":{"application/json":[{"folder_id":5,"name":"Important Locations"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"creator_id":{"description":"creator_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_folders_creator_id","type":"integer"},"folder_id":{"description":"folder_id integer","format":"int32","title":"get_corporations_corporation_id_bookmarks_folders_folder_id","type":"integer"},"name":{"description":"name string","title":"get_corporations_corporation_id_bookmarks_folders_name","type":"string"}},"required":["folder_id","name"],"title":"get_corporations_corporation_id_bookmarks_folders_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_bookmarks_folders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-bookmarks.read_corporation_bookmarks.v1"]}],"summary":"List corporation bookmark folders","tags":["Bookmarks"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/contacts/":{"get":{"description":"Return contacts of a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contacts/`\n\nAlternate route: `/v2/corporations/{corporation_id}/contacts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_corporations_corporation_id_contacts","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contacts","examples":{"application/json":[{"contact_id":123,"contact_type":"character","is_watched":true,"standing":9.9}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"contact_id":{"description":"contact_id integer","format":"int32","title":"get_corporations_corporation_id_contacts_contact_id","type":"integer"},"contact_type":{"description":"contact_type string","enum":["character","corporation","alliance","faction"],"title":"get_corporations_corporation_id_contacts_contact_type","type":"string"},"is_watched":{"description":"Whether this contact is being watched","title":"get_corporations_corporation_id_contacts_is_watched","type":"boolean"},"label_ids":{"description":"label_ids array","items":{"description":"Label IDs applied to the contact","format":"int64","title":"get_corporations_corporation_id_contacts_label_id","type":"integer"},"maxItems":63,"title":"get_corporations_corporation_id_contacts_label_ids","type":"array"},"standing":{"description":"Standing of the contact","format":"float","title":"get_corporations_corporation_id_contacts_standing","type":"number"}},"required":["standing","contact_type","contact_id"],"title":"get_corporations_corporation_id_contacts_200_ok","type":"object"},"maxItems":200,"title":"get_corporations_corporation_id_contacts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_contacts.v1"]}],"summary":"Get corporation contacts","tags":["Contacts"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":300,"x-required-roles":[]}},"/corporations/{corporation_id}/contacts/labels/":{"get":{"description":"Return custom labels for a corporation's contacts\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contacts/labels/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/contacts/labels/`\n\nAlternate route: `/v1/corporations/{corporation_id}/contacts/labels/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_corporations_corporation_id_contacts_labels","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of corporation contact labels","examples":{"application/json":[{"label_id":2,"label_name":"Corporation Friends"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"label_id":{"description":"label_id integer","format":"int64","title":"get_corporations_corporation_id_contacts_labels_label_id","type":"integer"},"label_name":{"description":"label_name string","title":"get_corporations_corporation_id_contacts_labels_label_name","type":"string"}},"required":["label_id","label_name"],"title":"get_corporations_corporation_id_contacts_labels_200_ok","type":"object"},"maxItems":64,"title":"get_corporations_corporation_id_contacts_labels_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_contacts.v1"]}],"summary":"Get corporation contact labels","tags":["Contacts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":[]}},"/corporations/{corporation_id}/containers/logs/":{"get":{"description":"Returns logs recorded in the past seven days from all audit log secure containers (ALSC) owned by a given corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/containers/logs/`\n\nAlternate route: `/v2/corporations/{corporation_id}/containers/logs/`\n\n---\nThis route is cached for up to 600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_containers_logs","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation ALSC logs","examples":{"application/json":[{"action":"set_password","character_id":2112625428,"container_id":1000000012279,"container_type_id":17365,"location_flag":"CorpSAG1","location_id":1000000012278,"logged_at":"2017-10-10T14:00:00Z","password_type":"general"},{"action":"lock","character_id":2112625428,"container_id":1000000012279,"container_type_id":17365,"location_flag":"CorpSAG1","location_id":1000000012278,"logged_at":"2017-10-11T12:04:33Z","quantity":30,"type_id":1230},{"action":"configure","character_id":2112625428,"container_id":1000000012279,"container_type_id":17365,"location_flag":"CorpSAG2","location_id":1000000012278,"logged_at":"2017-10-11T12:06:29Z","new_config_bitmask":31,"old_config_bitmask":23}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"action":{"description":"action string","enum":["add","assemble","configure","enter_password","lock","move","repackage","set_name","set_password","unlock"],"title":"get_corporations_corporation_id_containers_logs_action","type":"string"},"character_id":{"description":"ID of the character who performed the action.","format":"int32","title":"get_corporations_corporation_id_containers_logs_character_id","type":"integer"},"container_id":{"description":"ID of the container","format":"int64","title":"get_corporations_corporation_id_containers_logs_container_id","type":"integer"},"container_type_id":{"description":"Type ID of the container","format":"int32","title":"get_corporations_corporation_id_containers_logs_container_type_id","type":"integer"},"location_flag":{"description":"location_flag string","enum":["AssetSafety","AutoFit","Bonus","Booster","BoosterBay","Capsule","Cargo","CorpDeliveries","CorpSAG1","CorpSAG2","CorpSAG3","CorpSAG4","CorpSAG5","CorpSAG6","CorpSAG7","CrateLoot","Deliveries","DroneBay","DustBattle","DustDatabank","FighterBay","FighterTube0","FighterTube1","FighterTube2","FighterTube3","FighterTube4","FleetHangar","Hangar","HangarAll","HiSlot0","HiSlot1","HiSlot2","HiSlot3","HiSlot4","HiSlot5","HiSlot6","HiSlot7","HiddenModifiers","Implant","Impounded","JunkyardReprocessed","JunkyardTrashed","LoSlot0","LoSlot1","LoSlot2","LoSlot3","LoSlot4","LoSlot5","LoSlot6","LoSlot7","Locked","MedSlot0","MedSlot1","MedSlot2","MedSlot3","MedSlot4","MedSlot5","MedSlot6","MedSlot7","OfficeFolder","Pilot","PlanetSurface","QuafeBay","Reward","RigSlot0","RigSlot1","RigSlot2","RigSlot3","RigSlot4","RigSlot5","RigSlot6","RigSlot7","SecondaryStorage","ServiceSlot0","ServiceSlot1","ServiceSlot2","ServiceSlot3","ServiceSlot4","ServiceSlot5","ServiceSlot6","ServiceSlot7","ShipHangar","ShipOffline","Skill","SkillInTraining","SpecializedAmmoHold","SpecializedCommandCenterHold","SpecializedFuelBay","SpecializedGasHold","SpecializedIndustrialShipHold","SpecializedLargeShipHold","SpecializedMaterialBay","SpecializedMediumShipHold","SpecializedMineralHold","SpecializedOreHold","SpecializedPlanetaryCommoditiesHold","SpecializedSalvageHold","SpecializedShipHold","SpecializedSmallShipHold","StructureActive","StructureFuel","StructureInactive","StructureOffline","SubSystemBay","SubSystemSlot0","SubSystemSlot1","SubSystemSlot2","SubSystemSlot3","SubSystemSlot4","SubSystemSlot5","SubSystemSlot6","SubSystemSlot7","Unlocked","Wallet","Wardrobe"],"title":"get_corporations_corporation_id_containers_logs_location_flag","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_corporations_corporation_id_containers_logs_location_id","type":"integer"},"logged_at":{"description":"Timestamp when this log was created","format":"date-time","title":"get_corporations_corporation_id_containers_logs_logged_at","type":"string"},"new_config_bitmask":{"description":"new_config_bitmask integer","format":"int32","title":"get_corporations_corporation_id_containers_logs_new_config_bitmask","type":"integer"},"old_config_bitmask":{"description":"old_config_bitmask integer","format":"int32","title":"get_corporations_corporation_id_containers_logs_old_config_bitmask","type":"integer"},"password_type":{"description":"Type of password set if action is of type SetPassword or EnterPassword","enum":["config","general"],"title":"get_corporations_corporation_id_containers_logs_password_type","type":"string"},"quantity":{"description":"Quantity of the item being acted upon","format":"int32","title":"get_corporations_corporation_id_containers_logs_quantity","type":"integer"},"type_id":{"description":"Type ID of the item being acted upon","format":"int32","title":"get_corporations_corporation_id_containers_logs_type_id","type":"integer"}},"required":["logged_at","container_id","container_type_id","character_id","location_id","action","location_flag"],"title":"get_corporations_corporation_id_containers_logs_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_containers_logs_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_container_logs.v1"]}],"summary":"Get all corporation ALSC logs","tags":["Corporation"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/contracts/":{"get":{"description":"Returns contracts available to a corporation, only if the corporation is issuer, acceptor or assignee. Only returns contracts no older than 30 days, or if the status is \"in_progress\".\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contracts/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/contracts/`\n\nAlternate route: `/v1/corporations/{corporation_id}/contracts/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_corporations_corporation_id_contracts","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of contracts","examples":{"application/json":[{"acceptor_id":0,"assignee_id":0,"availability":"public","buyout":10000000000.01,"contract_id":1,"date_expired":"2017-06-13T13:12:32Z","date_issued":"2017-06-06T13:12:32Z","days_to_complete":0,"end_location_id":60014719,"for_corporation":true,"issuer_corporation_id":456,"issuer_id":123,"price":1000000.01,"reward":0.01,"start_location_id":60014719,"status":"outstanding","type":"auction","volume":0.01}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"acceptor_id":{"description":"Who will accept the contract","format":"int32","title":"get_corporations_corporation_id_contracts_acceptor_id","type":"integer"},"assignee_id":{"description":"ID to whom the contract is assigned, can be corporation or character ID","format":"int32","title":"get_corporations_corporation_id_contracts_assignee_id","type":"integer"},"availability":{"description":"To whom the contract is available","enum":["public","personal","corporation","alliance"],"title":"get_corporations_corporation_id_contracts_availability","type":"string"},"buyout":{"description":"Buyout price (for Auctions only)","format":"double","title":"get_corporations_corporation_id_contracts_buyout","type":"number"},"collateral":{"description":"Collateral price (for Couriers only)","format":"double","title":"get_corporations_corporation_id_contracts_collateral","type":"number"},"contract_id":{"description":"contract_id integer","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id","type":"integer"},"date_accepted":{"description":"Date of confirmation of contract","format":"date-time","title":"get_corporations_corporation_id_contracts_date_accepted","type":"string"},"date_completed":{"description":"Date of completed of contract","format":"date-time","title":"get_corporations_corporation_id_contracts_date_completed","type":"string"},"date_expired":{"description":"Expiration date of the contract","format":"date-time","title":"get_corporations_corporation_id_contracts_date_expired","type":"string"},"date_issued":{"description":"\u0421reation date of the contract","format":"date-time","title":"get_corporations_corporation_id_contracts_date_issued","type":"string"},"days_to_complete":{"description":"Number of days to perform the contract","format":"int32","title":"get_corporations_corporation_id_contracts_days_to_complete","type":"integer"},"end_location_id":{"description":"End location ID (for Couriers contract)","format":"int64","title":"get_corporations_corporation_id_contracts_end_location_id","type":"integer"},"for_corporation":{"description":"true if the contract was issued on behalf of the issuer's corporation","title":"get_corporations_corporation_id_contracts_for_corporation","type":"boolean"},"issuer_corporation_id":{"description":"Character's corporation ID for the issuer","format":"int32","title":"get_corporations_corporation_id_contracts_issuer_corporation_id","type":"integer"},"issuer_id":{"description":"Character ID for the issuer","format":"int32","title":"get_corporations_corporation_id_contracts_issuer_id","type":"integer"},"price":{"description":"Price of contract (for ItemsExchange and Auctions)","format":"double","title":"get_corporations_corporation_id_contracts_price","type":"number"},"reward":{"description":"Remuneration for contract (for Couriers only)","format":"double","title":"get_corporations_corporation_id_contracts_reward","type":"number"},"start_location_id":{"description":"Start location ID (for Couriers contract)","format":"int64","title":"get_corporations_corporation_id_contracts_start_location_id","type":"integer"},"status":{"description":"Status of the the contract","enum":["outstanding","in_progress","finished_issuer","finished_contractor","finished","cancelled","rejected","failed","deleted","reversed"],"title":"get_corporations_corporation_id_contracts_status","type":"string"},"title":{"description":"Title of the contract","title":"get_corporations_corporation_id_contracts_title","type":"string"},"type":{"description":"Type of the contract","enum":["unknown","item_exchange","auction","courier","loan"],"title":"get_corporations_corporation_id_contracts_type","type":"string"},"volume":{"description":"Volume of items in the contract","format":"double","title":"get_corporations_corporation_id_contracts_volume","type":"number"}},"required":["contract_id","issuer_id","issuer_corporation_id","assignee_id","acceptor_id","type","status","for_corporation","availability","date_issued","date_expired"],"title":"get_corporations_corporation_id_contracts_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_contracts_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_corporation_contracts.v1"]}],"summary":"Get corporation contracts","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":[]}},"/corporations/{corporation_id}/contracts/{contract_id}/bids/":{"get":{"description":"Lists bids on a particular auction contract\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contracts/{contract_id}/bids/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/contracts/{contract_id}/bids/`\n\nAlternate route: `/v1/corporations/{corporation_id}/contracts/{contract_id}/bids/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_contracts_contract_id_bids","parameters":[{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of bids","examples":{"application/json":[{"amount":1.23,"bid_id":1,"bidder_id":123,"date_bid":"2017-01-01T10:10:10Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount bid, in ISK","format":"float","title":"get_corporations_corporation_id_contracts_contract_id_bids_amount","type":"number"},"bid_id":{"description":"Unique ID for the bid","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_bids_bid_id","type":"integer"},"bidder_id":{"description":"Character ID of the bidder","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_bids_bidder_id","type":"integer"},"date_bid":{"description":"Datetime when the bid was placed","format":"date-time","title":"get_corporations_corporation_id_contracts_contract_id_bids_date_bid","type":"string"}},"required":["bid_id","bidder_id","date_bid","amount"],"title":"get_corporations_corporation_id_contracts_contract_id_bids_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_contracts_contract_id_bids_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_corporations_corporation_id_contracts_contract_id_bids_404_not_found","type":"string"}},"title":"get_corporations_corporation_id_contracts_contract_id_bids_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-contracts.read_corporation_contracts.v1"]}],"summary":"Get corporation contract bids","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":[]}},"/corporations/{corporation_id}/contracts/{contract_id}/items/":{"get":{"description":"Lists items of a particular contract\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/contracts/{contract_id}/items/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/contracts/{contract_id}/items/`\n\nAlternate route: `/v1/corporations/{corporation_id}/contracts/{contract_id}/items/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_contracts_contract_id_items","parameters":[{"description":"ID of a contract","format":"int32","in":"path","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of items in this contract","examples":{"application/json":[{"is_included":true,"is_singleton":false,"quantity":1,"record_id":123456,"type_id":587}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"is_included":{"description":"true if the contract issuer has submitted this item with the contract, false if the isser is asking for this item in the contract","title":"get_corporations_corporation_id_contracts_contract_id_items_is_included","type":"boolean"},"is_singleton":{"description":"is_singleton boolean","title":"get_corporations_corporation_id_contracts_contract_id_items_is_singleton","type":"boolean"},"quantity":{"description":"Number of items in the stack","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_items_quantity","type":"integer"},"raw_quantity":{"description":"-1 indicates that the item is a singleton (non-stackable). If the item happens to be a Blueprint, -1 is an Original and -2 is a Blueprint Copy","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_items_raw_quantity","type":"integer"},"record_id":{"description":"Unique ID for the item","format":"int64","title":"get_corporations_corporation_id_contracts_contract_id_items_record_id","type":"integer"},"type_id":{"description":"Type ID for item","format":"int32","title":"get_corporations_corporation_id_contracts_contract_id_items_type_id","type":"integer"}},"required":["record_id","type_id","quantity","is_singleton","is_included"],"title":"get_corporations_corporation_id_contracts_contract_id_items_200_ok","type":"object"},"maxItems":2000,"title":"get_corporations_corporation_id_contracts_contract_id_items_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_corporations_corporation_id_contracts_contract_id_items_404_not_found","type":"string"}},"title":"get_corporations_corporation_id_contracts_contract_id_items_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}},"520":{"description":"Internal error thrown from the EVE server. Most of the time this means you have hit an EVE server rate limit","examples":{"application/json":{"error":"Error 520 message"}},"schema":{"description":"Error 520","properties":{"error":{"description":"Error 520 message","title":"get_corporations_corporation_id_contracts_contract_id_items_520_error_520","type":"string"}},"title":"get_corporations_corporation_id_contracts_contract_id_items_error_520","type":"object"}}},"security":[{"evesso":["esi-contracts.read_corporation_contracts.v1"]}],"summary":"Get corporation contract items","tags":["Contracts"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":[]}},"/corporations/{corporation_id}/customs_offices/":{"get":{"description":"List customs offices owned by a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/customs_offices/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/customs_offices/`\n\nAlternate route: `/v1/corporations/{corporation_id}/customs_offices/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_customs_offices","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of customs offices and their settings","examples":{"application/json":[{"alliance_tax_rate":0.1,"allow_access_with_standings":true,"allow_alliance_access":false,"corporation_tax_rate":0.02,"excellent_standing_tax_rate":0.05,"good_standing_tax_rate":0.2,"neutral_standing_tax_rate":0.5,"office_id":1000000014530,"reinforce_exit_end":1,"reinforce_exit_start":23,"standing_level":"neutral","system_id":30003657}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_tax_rate":{"description":"Only present if alliance access is allowed","format":"float","title":"get_corporations_corporation_id_customs_offices_alliance_tax_rate","type":"number"},"allow_access_with_standings":{"description":"standing_level and any standing related tax rate only present when this is true","title":"get_corporations_corporation_id_customs_offices_allow_access_with_standings","type":"boolean"},"allow_alliance_access":{"description":"allow_alliance_access boolean","title":"get_corporations_corporation_id_customs_offices_allow_alliance_access","type":"boolean"},"bad_standing_tax_rate":{"description":"bad_standing_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_bad_standing_tax_rate","type":"number"},"corporation_tax_rate":{"description":"corporation_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_corporation_tax_rate","type":"number"},"excellent_standing_tax_rate":{"description":"Tax rate for entities with excellent level of standing, only present if this level is allowed, same for all other standing related tax rates","format":"float","title":"get_corporations_corporation_id_customs_offices_excellent_standing_tax_rate","type":"number"},"good_standing_tax_rate":{"description":"good_standing_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_good_standing_tax_rate","type":"number"},"neutral_standing_tax_rate":{"description":"neutral_standing_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_neutral_standing_tax_rate","type":"number"},"office_id":{"description":"unique ID of this customs office","format":"int64","title":"get_corporations_corporation_id_customs_offices_office_id","type":"integer"},"reinforce_exit_end":{"description":"reinforce_exit_end integer","format":"int32","maximum":23,"minimum":0,"title":"get_corporations_corporation_id_customs_offices_reinforce_exit_end","type":"integer"},"reinforce_exit_start":{"description":"Together with reinforce_exit_end, marks a 2-hour period where this customs office could exit reinforcement mode during the day after initial attack","format":"int32","maximum":23,"minimum":0,"title":"get_corporations_corporation_id_customs_offices_reinforce_exit_start","type":"integer"},"standing_level":{"description":"Access is allowed only for entities with this level of standing or better","enum":["bad","excellent","good","neutral","terrible"],"title":"get_corporations_corporation_id_customs_offices_standing_level","type":"string"},"system_id":{"description":"ID of the solar system this customs office is located in","format":"int32","title":"get_corporations_corporation_id_customs_offices_system_id","type":"integer"},"terrible_standing_tax_rate":{"description":"terrible_standing_tax_rate number","format":"float","title":"get_corporations_corporation_id_customs_offices_terrible_standing_tax_rate","type":"number"}},"required":["office_id","system_id","reinforce_exit_start","reinforce_exit_end","allow_alliance_access","allow_access_with_standings"],"title":"get_corporations_corporation_id_customs_offices_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_customs_offices_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-planets.read_customs_offices.v1"]}],"summary":"List corporation customs offices","tags":["Planetary Interaction"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/divisions/":{"get":{"description":"Return corporation hangar and wallet division names, only show if a division is not using the default name\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/divisions/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/divisions/`\n\nAlternate route: `/v1/corporations/{corporation_id}/divisions/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_divisions","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation division names","examples":{"application/json":{"hangar":[{"division":1,"name":"Awesome Hangar 1"}],"wallet":[{"division":1,"name":"Rich Wallet 1"}]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"hangar":{"description":"hangar array","items":{"description":"hangar object","properties":{"division":{"description":"division integer","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_divisions_division","type":"integer"},"name":{"description":"name string","maxLength":50,"title":"get_corporations_corporation_id_divisions_name","type":"string"}},"title":"get_corporations_corporation_id_divisions_hangar_hangar","type":"object"},"maxItems":7,"title":"get_corporations_corporation_id_divisions_hangar","type":"array"},"wallet":{"description":"wallet array","items":{"description":"wallet object","properties":{"division":{"description":"division integer","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_divisions_wallet_division","type":"integer"},"name":{"description":"name string","maxLength":50,"title":"get_corporations_corporation_id_divisions_wallet_name","type":"string"}},"title":"get_corporations_corporation_id_divisions_wallet_wallet","type":"object"},"maxItems":7,"title":"get_corporations_corporation_id_divisions_wallet","type":"array"}},"title":"get_corporations_corporation_id_divisions_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_divisions.v1"]}],"summary":"Get corporation divisions","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/facilities/":{"get":{"description":"Return a corporation's facilities\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/facilities/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/facilities/`\n\nAlternate route: `/v1/corporations/{corporation_id}/facilities/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Factory_Manager\n","operationId":"get_corporations_corporation_id_facilities","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation facilities","examples":{"application/json":[{"facility_id":123,"system_id":45678,"type_id":2502}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"facility_id":{"description":"facility_id integer","format":"int64","title":"get_corporations_corporation_id_facilities_facility_id","type":"integer"},"system_id":{"description":"system_id integer","format":"int32","title":"get_corporations_corporation_id_facilities_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_facilities_type_id","type":"integer"}},"required":["facility_id","type_id","system_id"],"title":"get_corporations_corporation_id_facilities_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_facilities_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_facilities.v1"]}],"summary":"Get corporation facilities","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Factory_Manager"]}},"/corporations/{corporation_id}/fw/stats/":{"get":{"description":"Statistics about a corporation involved in faction warfare\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/fw/stats/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/fw/stats/`\n\nAlternate route: `/v1/corporations/{corporation_id}/fw/stats/`\n\nAlternate route: `/v2/corporations/{corporation_id}/fw/stats/`\n\n---\nThis route expires daily at 11:05","operationId":"get_corporations_corporation_id_fw_stats","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Faction warfare statistics for a given corporation","examples":{"application/json":{"enlisted_on":"2017-10-17T00:00:00Z","faction_id":500001,"kills":{"last_week":893,"total":684350,"yesterday":136},"pilots":28863,"victory_points":{"last_week":102640,"total":52658260,"yesterday":15980}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"enlisted_on":{"description":"The enlistment date of the given corporation into faction warfare. Will not be included if corporation is not enlisted in faction warfare","format":"date-time","title":"get_corporations_corporation_id_fw_stats_enlisted_on","type":"string"},"faction_id":{"description":"The faction the given corporation is enlisted to fight for. Will not be included if corporation is not enlisted in faction warfare","format":"int32","title":"get_corporations_corporation_id_fw_stats_faction_id","type":"integer"},"kills":{"description":"Summary of kills done by the given corporation against enemy factions","properties":{"last_week":{"description":"Last week's total number of kills by members of the given corporation against enemy factions","format":"int32","title":"get_corporations_corporation_id_fw_stats_last_week","type":"integer"},"total":{"description":"Total number of kills by members of the given corporation against enemy factions since the corporation enlisted","format":"int32","title":"get_corporations_corporation_id_fw_stats_total","type":"integer"},"yesterday":{"description":"Yesterday's total number of kills by members of the given corporation against enemy factions","format":"int32","title":"get_corporations_corporation_id_fw_stats_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_corporations_corporation_id_fw_stats_kills","type":"object"},"pilots":{"description":"How many pilots the enlisted corporation has. Will not be included if corporation is not enlisted in faction warfare","format":"int32","title":"get_corporations_corporation_id_fw_stats_pilots","type":"integer"},"victory_points":{"description":"Summary of victory points gained by the given corporation for the enlisted faction","properties":{"last_week":{"description":"Last week's victory points gained by members of the given corporation","format":"int32","title":"get_corporations_corporation_id_fw_stats_victory_points_last_week","type":"integer"},"total":{"description":"Total victory points gained since the given corporation enlisted","format":"int32","title":"get_corporations_corporation_id_fw_stats_victory_points_total","type":"integer"},"yesterday":{"description":"Yesterday's victory points gained by members of the given corporation","format":"int32","title":"get_corporations_corporation_id_fw_stats_victory_points_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_corporations_corporation_id_fw_stats_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_corporations_corporation_id_fw_stats_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_fw_stats.v1"]}],"summary":"Overview of a corporation involved in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/corporations/{corporation_id}/icons/":{"get":{"description":"Get the icon urls for a corporation\n\n---\nAlternate route: `/legacy/corporations/{corporation_id}/icons/`\n\nAlternate route: `/v1/corporations/{corporation_id}/icons/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\n[Diff of the upcoming changes](https://esi.evetech.net/diff/latest/dev/#GET-/corporations/{corporation_id}/icons/)","operationId":"get_corporations_corporation_id_icons","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Urls for icons for the given corporation id and server","examples":{"application/json":{"px128x128":"https://imageserver.eveonline.com/Corporation/1000010_128.png","px256x256":"https://imageserver.eveonline.com/Corporation/1000010_256.png","px64x64":"https://imageserver.eveonline.com/Corporation/1000010_64.png"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"px128x128":{"description":"px128x128 string","title":"get_corporations_corporation_id_icons_px128x128","type":"string"},"px256x256":{"description":"px256x256 string","title":"get_corporations_corporation_id_icons_px256x256","type":"string"},"px64x64":{"description":"px64x64 string","title":"get_corporations_corporation_id_icons_px64x64","type":"string"}},"title":"get_corporations_corporation_id_icons_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No image server for this datasource","examples":{"application/json":{"error":"No image server for this datasource"}},"schema":{"description":"No image server for this datasource","properties":{"error":{"description":"error message","title":"get_corporations_corporation_id_icons_error","type":"string"}},"title":"get_corporations_corporation_id_icons_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get corporation icon","tags":["Corporation"],"x-alternate-versions":["legacy","v1"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/industry/jobs/":{"get":{"description":"List industry jobs run by a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/industry/jobs/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/industry/jobs/`\n\nAlternate route: `/v1/corporations/{corporation_id}/industry/jobs/`\n\n---\nThis route is cached for up to 300 seconds\n\n---\nRequires one of the following EVE corporation role(s): Factory_Manager\n","operationId":"get_corporations_corporation_id_industry_jobs","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"default":false,"description":"Whether to retrieve completed corporation industry jobs. Only includes jobs from the past 90 days","in":"query","name":"include_completed","required":false,"type":"boolean"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of corporation industry jobs","examples":{"application/json":[{"activity_id":1,"blueprint_id":1015116533326,"blueprint_location_id":60006382,"blueprint_type_id":2047,"cost":118.01,"duration":548,"end_date":"2014-07-19T15:56:14Z","facility_id":60006382,"installer_id":498338451,"job_id":229136101,"licensed_runs":200,"location_id":60006382,"output_location_id":60006382,"runs":1,"start_date":"2014-07-19T15:47:06Z","status":"active"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"activity_id":{"description":"Job activity ID","format":"int32","title":"get_corporations_corporation_id_industry_jobs_activity_id","type":"integer"},"blueprint_id":{"description":"blueprint_id integer","format":"int64","title":"get_corporations_corporation_id_industry_jobs_blueprint_id","type":"integer"},"blueprint_location_id":{"description":"Location ID of the location from which the blueprint was installed. Normally a station ID, but can also be an asset (e.g. container) or corporation facility","format":"int64","title":"get_corporations_corporation_id_industry_jobs_blueprint_location_id","type":"integer"},"blueprint_type_id":{"description":"blueprint_type_id integer","format":"int32","title":"get_corporations_corporation_id_industry_jobs_blueprint_type_id","type":"integer"},"completed_character_id":{"description":"ID of the character which completed this job","format":"int32","title":"get_corporations_corporation_id_industry_jobs_completed_character_id","type":"integer"},"completed_date":{"description":"Date and time when this job was completed","format":"date-time","title":"get_corporations_corporation_id_industry_jobs_completed_date","type":"string"},"cost":{"description":"The sume of job installation fee and industry facility tax","format":"double","title":"get_corporations_corporation_id_industry_jobs_cost","type":"number"},"duration":{"description":"Job duration in seconds","format":"int32","title":"get_corporations_corporation_id_industry_jobs_duration","type":"integer"},"end_date":{"description":"Date and time when this job finished","format":"date-time","title":"get_corporations_corporation_id_industry_jobs_end_date","type":"string"},"facility_id":{"description":"ID of the facility where this job is running","format":"int64","title":"get_corporations_corporation_id_industry_jobs_facility_id","type":"integer"},"installer_id":{"description":"ID of the character which installed this job","format":"int32","title":"get_corporations_corporation_id_industry_jobs_installer_id","type":"integer"},"job_id":{"description":"Unique job ID","format":"int32","title":"get_corporations_corporation_id_industry_jobs_job_id","type":"integer"},"licensed_runs":{"description":"Number of runs blueprint is licensed for","format":"int32","title":"get_corporations_corporation_id_industry_jobs_licensed_runs","type":"integer"},"location_id":{"description":"ID of the location for the industry facility","format":"int64","title":"get_corporations_corporation_id_industry_jobs_location_id","type":"integer"},"output_location_id":{"description":"Location ID of the location to which the output of the job will be delivered. Normally a station ID, but can also be a corporation facility","format":"int64","title":"get_corporations_corporation_id_industry_jobs_output_location_id","type":"integer"},"pause_date":{"description":"Date and time when this job was paused (i.e. time when the facility where this job was installed went offline)","format":"date-time","title":"get_corporations_corporation_id_industry_jobs_pause_date","type":"string"},"probability":{"description":"Chance of success for invention","format":"float","title":"get_corporations_corporation_id_industry_jobs_probability","type":"number"},"product_type_id":{"description":"Type ID of product (manufactured, copied or invented)","format":"int32","title":"get_corporations_corporation_id_industry_jobs_product_type_id","type":"integer"},"runs":{"description":"Number of runs for a manufacturing job, or number of copies to make for a blueprint copy","format":"int32","title":"get_corporations_corporation_id_industry_jobs_runs","type":"integer"},"start_date":{"description":"Date and time when this job started","format":"date-time","title":"get_corporations_corporation_id_industry_jobs_start_date","type":"string"},"status":{"description":"status string","enum":["active","cancelled","delivered","paused","ready","reverted"],"title":"get_corporations_corporation_id_industry_jobs_status","type":"string"},"successful_runs":{"description":"Number of successful runs for this job. Equal to runs unless this is an invention job","format":"int32","title":"get_corporations_corporation_id_industry_jobs_successful_runs","type":"integer"}},"required":["job_id","installer_id","facility_id","location_id","activity_id","blueprint_id","blueprint_type_id","blueprint_location_id","output_location_id","runs","status","duration","start_date","end_date"],"title":"get_corporations_corporation_id_industry_jobs_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_industry_jobs_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-industry.read_corporation_jobs.v1"]}],"summary":"List corporation industry jobs","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":["Factory_Manager"]}},"/corporations/{corporation_id}/killmails/recent/":{"get":{"description":"Get a list of a corporation's kills and losses going back 90 days\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/killmails/recent/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/killmails/recent/`\n\nAlternate route: `/v1/corporations/{corporation_id}/killmails/recent/`\n\n---\nThis route is cached for up to 300 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_killmails_recent","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of killmail IDs and hashes","examples":{"application/json":[{"killmail_hash":"8eef5e8fb6b88fe3407c489df33822b2e3b57a5e","killmail_id":2},{"killmail_hash":"b41ccb498ece33d64019f64c0db392aa3aa701fb","killmail_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"killmail_hash":{"description":"A hash of this killmail","title":"get_corporations_corporation_id_killmails_recent_killmail_hash","type":"string"},"killmail_id":{"description":"ID of this killmail","format":"int32","title":"get_corporations_corporation_id_killmails_recent_killmail_id","type":"integer"}},"required":["killmail_id","killmail_hash"],"title":"get_corporations_corporation_id_killmails_recent_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_killmails_recent_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-killmails.read_corporation_killmails.v1"]}],"summary":"Get a corporation's recent kills and losses","tags":["Killmails"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/medals/":{"get":{"description":"Returns a corporation's medals\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/medals/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/medals/`\n\nAlternate route: `/v1/corporations/{corporation_id}/medals/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_medals","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of medals","examples":{"application/json":[{"created_at":"2017-10-10T14:00:00Z","creator_id":46578,"description":"An Awesome Medal","medal_id":123,"title":"Awesome Medal"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"created_at":{"description":"created_at string","format":"date-time","title":"get_corporations_corporation_id_medals_created_at","type":"string"},"creator_id":{"description":"ID of the character who created this medal","format":"int32","title":"get_corporations_corporation_id_medals_creator_id","type":"integer"},"description":{"description":"description string","maxLength":1000,"title":"get_corporations_corporation_id_medals_description","type":"string"},"medal_id":{"description":"medal_id integer","format":"int32","title":"get_corporations_corporation_id_medals_medal_id","type":"integer"},"title":{"description":"title string","maxLength":100,"title":"get_corporations_corporation_id_medals_title","type":"string"}},"required":["medal_id","title","description","creator_id","created_at"],"title":"get_corporations_corporation_id_medals_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_medals_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_medals.v1"]}],"summary":"Get corporation medals","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":[]}},"/corporations/{corporation_id}/medals/issued/":{"get":{"description":"Returns medals issued by a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/medals/issued/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/medals/issued/`\n\nAlternate route: `/v1/corporations/{corporation_id}/medals/issued/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_medals_issued","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of issued medals","examples":{"application/json":[{"character_id":45678,"issued_at":"2017-10-10T14:00:00Z","issuer_id":67890,"medal_id":123,"reason":"Awesome Reason","status":"private"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"ID of the character who was rewarded this medal","format":"int32","title":"get_corporations_corporation_id_medals_issued_character_id","type":"integer"},"issued_at":{"description":"issued_at string","format":"date-time","title":"get_corporations_corporation_id_medals_issued_issued_at","type":"string"},"issuer_id":{"description":"ID of the character who issued the medal","format":"int32","title":"get_corporations_corporation_id_medals_issued_issuer_id","type":"integer"},"medal_id":{"description":"medal_id integer","format":"int32","title":"get_corporations_corporation_id_medals_issued_medal_id","type":"integer"},"reason":{"description":"reason string","maxLength":1000,"title":"get_corporations_corporation_id_medals_issued_reason","type":"string"},"status":{"description":"status string","enum":["private","public"],"title":"get_corporations_corporation_id_medals_issued_status","type":"string"}},"required":["medal_id","character_id","reason","status","issuer_id","issued_at"],"title":"get_corporations_corporation_id_medals_issued_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_medals_issued_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_medals.v1"]}],"summary":"Get corporation issued medals","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/members/":{"get":{"description":"Return the current member list of a corporation, the token's character need to be a member of the corporation.\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/members/`\n\nAlternate route: `/v3/corporations/{corporation_id}/members/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_members","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of member character IDs","examples":{"application/json":[90000001,90000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"A list of character IDs","items":{"description":"200 ok integer","format":"int32","title":"get_corporations_corporation_id_members_200_ok","type":"integer"},"maxItems":12601,"title":"get_corporations_corporation_id_members_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_corporation_membership.v1"]}],"summary":"Get corporation members","tags":["Corporation"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/members/limit/":{"get":{"description":"Return a corporation's member limit, not including CEO himself\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/members/limit/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/members/limit/`\n\nAlternate route: `/v1/corporations/{corporation_id}/members/limit/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_members_limit","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"The corporation's member limit","examples":{"application/json":40},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok integer","format":"int32","title":"get_corporations_corporation_id_members_limit_ok","type":"integer"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.track_members.v1"]}],"summary":"Get corporation member limit","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/members/titles/":{"get":{"description":"Returns a corporation's members' titles\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/members/titles/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/members/titles/`\n\nAlternate route: `/v1/corporations/{corporation_id}/members/titles/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_members_titles","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of members and theirs titles","examples":{"application/json":[{"character_id":12345,"titles":[]}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"character_id integer","format":"int32","title":"get_corporations_corporation_id_members_titles_character_id","type":"integer"},"titles":{"description":"A list of title_id","items":{"description":"title integer","format":"int32","title":"get_corporations_corporation_id_members_titles_title","type":"integer"},"maxItems":16,"title":"get_corporations_corporation_id_members_titles_titles","type":"array"}},"required":["character_id","titles"],"title":"get_corporations_corporation_id_members_titles_200_ok","type":"object"},"maxItems":12601,"title":"get_corporations_corporation_id_members_titles_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_titles.v1"]}],"summary":"Get corporation's members' titles","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/membertracking/":{"get":{"description":"Returns additional information about a corporation's members which helps tracking their activities\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/membertracking/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/membertracking/`\n\nAlternate route: `/v1/corporations/{corporation_id}/membertracking/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_membertracking","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of member character IDs","examples":{"application/json":[{"character_id":2112000001,"location_id":30003657,"logoff_date":"2017-08-03T14:31:16Z","logon_date":"2017-08-03T14:22:03Z","ship_type_id":22464,"start_date":"2017-07-10T14:46:00Z"},{"character_id":2112000002,"location_id":30003657,"logoff_date":"2017-07-25T11:07:40Z","logon_date":"2017-07-25T10:54:00Z","ship_type_id":670,"start_date":"2017-07-10T14:50:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"base_id":{"description":"base_id integer","format":"int32","title":"get_corporations_corporation_id_membertracking_base_id","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_corporations_corporation_id_membertracking_character_id","type":"integer"},"location_id":{"description":"location_id integer","format":"int64","title":"get_corporations_corporation_id_membertracking_location_id","type":"integer"},"logoff_date":{"description":"logoff_date string","format":"date-time","title":"get_corporations_corporation_id_membertracking_logoff_date","type":"string"},"logon_date":{"description":"logon_date string","format":"date-time","title":"get_corporations_corporation_id_membertracking_logon_date","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_corporations_corporation_id_membertracking_ship_type_id","type":"integer"},"start_date":{"description":"start_date string","format":"date-time","title":"get_corporations_corporation_id_membertracking_start_date","type":"string"}},"required":["character_id"],"title":"get_corporations_corporation_id_membertracking_200_ok","type":"object"},"maxItems":12601,"title":"get_corporations_corporation_id_membertracking_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.track_members.v1"]}],"summary":"Track corporation members","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/orders/":{"get":{"description":"List open market orders placed on behalf of a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/orders/`\n\nAlternate route: `/v3/corporations/{corporation_id}/orders/`\n\n---\nThis route is cached for up to 1200 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Trader\n","operationId":"get_corporations_corporation_id_orders","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of open market orders","examples":{"application/json":[{"duration":30,"escrow":45.6,"is_buy_order":true,"issued":"2016-09-03T05:12:25Z","issued_by":2112625428,"location_id":456,"min_volume":1,"order_id":123,"price":33.3,"range":"station","region_id":123,"type_id":456,"volume_remain":4422,"volume_total":123456,"wallet_division":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"Number of days for which order is valid (starting from the issued date). An order expires at time issued + duration","format":"int32","title":"get_corporations_corporation_id_orders_duration","type":"integer"},"escrow":{"description":"For buy orders, the amount of ISK in escrow","format":"double","title":"get_corporations_corporation_id_orders_escrow","type":"number"},"is_buy_order":{"description":"True if the order is a bid (buy) order","title":"get_corporations_corporation_id_orders_is_buy_order","type":"boolean"},"issued":{"description":"Date and time when this order was issued","format":"date-time","title":"get_corporations_corporation_id_orders_issued","type":"string"},"issued_by":{"description":"The character who issued this order","format":"int32","title":"get_corporations_corporation_id_orders_issued_by","type":"integer"},"location_id":{"description":"ID of the location where order was placed","format":"int64","title":"get_corporations_corporation_id_orders_location_id","type":"integer"},"min_volume":{"description":"For buy orders, the minimum quantity that will be accepted in a matching sell order","format":"int32","title":"get_corporations_corporation_id_orders_min_volume","type":"integer"},"order_id":{"description":"Unique order ID","format":"int64","title":"get_corporations_corporation_id_orders_order_id","type":"integer"},"price":{"description":"Cost per unit for this order","format":"double","title":"get_corporations_corporation_id_orders_price","type":"number"},"range":{"description":"Valid order range, numbers are ranges in jumps","enum":["1","10","2","20","3","30","4","40","5","region","solarsystem","station"],"title":"get_corporations_corporation_id_orders_range","type":"string"},"region_id":{"description":"ID of the region where order was placed","format":"int32","title":"get_corporations_corporation_id_orders_region_id","type":"integer"},"type_id":{"description":"The type ID of the item transacted in this order","format":"int32","title":"get_corporations_corporation_id_orders_type_id","type":"integer"},"volume_remain":{"description":"Quantity of items still required or offered","format":"int32","title":"get_corporations_corporation_id_orders_volume_remain","type":"integer"},"volume_total":{"description":"Quantity of items required or offered at time order was placed","format":"int32","title":"get_corporations_corporation_id_orders_volume_total","type":"integer"},"wallet_division":{"description":"The corporation wallet division used for this order.","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_orders_wallet_division","type":"integer"}},"required":["duration","wallet_division","order_id","type_id","region_id","location_id","range","price","volume_total","volume_remain","issued","issued_by"],"title":"get_corporations_corporation_id_orders_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_orders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.read_corporation_orders.v1"]}],"summary":"List open orders from a corporation","tags":["Market"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":1200,"x-required-roles":["Accountant","Trader"]}},"/corporations/{corporation_id}/orders/history/":{"get":{"description":"List cancelled and expired market orders placed on behalf of a corporation up to 90 days in the past.\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/orders/history/`\n\nAlternate route: `/v2/corporations/{corporation_id}/orders/history/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Trader\n","operationId":"get_corporations_corporation_id_orders_history","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Expired and cancelled market orders placed on behalf of a corporation","examples":{"application/json":[{"duration":30,"escrow":45.6,"is_buy_order":true,"issued":"2016-09-03T05:12:25Z","issued_by":2112625428,"location_id":456,"min_volume":1,"order_id":123,"price":33.3,"range":"station","region_id":123,"state":"expired","type_id":456,"volume_remain":4422,"volume_total":123456,"wallet_division":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"Number of days the order was valid for (starting from the issued date). An order expires at time issued + duration","format":"int32","title":"get_corporations_corporation_id_orders_history_duration","type":"integer"},"escrow":{"description":"For buy orders, the amount of ISK in escrow","format":"double","title":"get_corporations_corporation_id_orders_history_escrow","type":"number"},"is_buy_order":{"description":"True if the order is a bid (buy) order","title":"get_corporations_corporation_id_orders_history_is_buy_order","type":"boolean"},"issued":{"description":"Date and time when this order was issued","format":"date-time","title":"get_corporations_corporation_id_orders_history_issued","type":"string"},"issued_by":{"description":"The character who issued this order","format":"int32","title":"get_corporations_corporation_id_orders_history_issued_by","type":"integer"},"location_id":{"description":"ID of the location where order was placed","format":"int64","title":"get_corporations_corporation_id_orders_history_location_id","type":"integer"},"min_volume":{"description":"For buy orders, the minimum quantity that will be accepted in a matching sell order","format":"int32","title":"get_corporations_corporation_id_orders_history_min_volume","type":"integer"},"order_id":{"description":"Unique order ID","format":"int64","title":"get_corporations_corporation_id_orders_history_order_id","type":"integer"},"price":{"description":"Cost per unit for this order","format":"double","title":"get_corporations_corporation_id_orders_history_price","type":"number"},"range":{"description":"Valid order range, numbers are ranges in jumps","enum":["1","10","2","20","3","30","4","40","5","region","solarsystem","station"],"title":"get_corporations_corporation_id_orders_history_range","type":"string"},"region_id":{"description":"ID of the region where order was placed","format":"int32","title":"get_corporations_corporation_id_orders_history_region_id","type":"integer"},"state":{"description":"Current order state","enum":["cancelled","expired"],"title":"get_corporations_corporation_id_orders_history_state","type":"string"},"type_id":{"description":"The type ID of the item transacted in this order","format":"int32","title":"get_corporations_corporation_id_orders_history_type_id","type":"integer"},"volume_remain":{"description":"Quantity of items still required or offered","format":"int32","title":"get_corporations_corporation_id_orders_history_volume_remain","type":"integer"},"volume_total":{"description":"Quantity of items required or offered at time order was placed","format":"int32","title":"get_corporations_corporation_id_orders_history_volume_total","type":"integer"},"wallet_division":{"description":"The corporation wallet division used for this order","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_orders_history_wallet_division","type":"integer"}},"required":["wallet_division","duration","state","order_id","type_id","region_id","location_id","range","price","volume_total","volume_remain","issued"],"title":"get_corporations_corporation_id_orders_history_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_orders_history_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.read_corporation_orders.v1"]}],"summary":"List historical orders from a corporation","tags":["Market"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600,"x-required-roles":["Accountant","Trader"]}},"/corporations/{corporation_id}/roles/":{"get":{"description":"Return the roles of all members if the character has the personnel manager role or any grantable role.\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/roles/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/roles/`\n\nAlternate route: `/v1/corporations/{corporation_id}/roles/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_roles","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of member character ID's and roles","examples":{"application/json":[{"character_id":1000171,"roles":["Director","Station_Manager"]}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"character_id integer","format":"int32","title":"get_corporations_corporation_id_roles_character_id","type":"integer"},"grantable_roles":{"description":"grantable_roles array","items":{"description":"grantable_role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_grantable_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_grantable_roles","type":"array"},"grantable_roles_at_base":{"description":"grantable_roles_at_base array","items":{"description":"grantable_roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_grantable_roles_at_base_grantable_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_grantable_roles_at_base","type":"array"},"grantable_roles_at_hq":{"description":"grantable_roles_at_hq array","items":{"description":"grantable_roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_grantable_roles_at_hq_grantable_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_grantable_roles_at_hq","type":"array"},"grantable_roles_at_other":{"description":"grantable_roles_at_other array","items":{"description":"grantable_roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_grantable_roles_at_other_grantable_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_grantable_roles_at_other","type":"array"},"roles":{"description":"roles array","items":{"description":"role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_roles","type":"array"},"roles_at_base":{"description":"roles_at_base array","items":{"description":"roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_roles_at_base_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_roles_at_base","type":"array"},"roles_at_hq":{"description":"roles_at_hq array","items":{"description":"roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_roles_at_hq_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_roles_at_hq","type":"array"},"roles_at_other":{"description":"roles_at_other array","items":{"description":"roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_roles_at_other_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_roles_at_other","type":"array"}},"required":["character_id"],"title":"get_corporations_corporation_id_roles_200_ok","type":"object"},"maxItems":12601,"title":"get_corporations_corporation_id_roles_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_corporation_membership.v1"]}],"summary":"Get corporation member roles","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/corporations/{corporation_id}/roles/history/":{"get":{"description":"Return how roles have changed for a coporation's members, up to a month\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/roles/history/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/roles/history/`\n\nAlternate route: `/v1/corporations/{corporation_id}/roles/history/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_roles_history","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of role changes","examples":{"application/json":[{"changed_at":"2016-10-25T14:46:00Z","character_id":12345,"issuer_id":45678,"new_roles":["Station_Manager"],"old_roles":["Diplomat"],"role_type":"roles"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"changed_at":{"description":"changed_at string","format":"date-time","title":"get_corporations_corporation_id_roles_history_changed_at","type":"string"},"character_id":{"description":"The character whose roles are changed","format":"int32","title":"get_corporations_corporation_id_roles_history_character_id","type":"integer"},"issuer_id":{"description":"ID of the character who issued this change","format":"int32","title":"get_corporations_corporation_id_roles_history_issuer_id","type":"integer"},"new_roles":{"description":"new_roles array","items":{"description":"new_role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_history_new_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_history_new_roles","type":"array"},"old_roles":{"description":"old_roles array","items":{"description":"old_role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_roles_history_old_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_roles_history_old_roles","type":"array"},"role_type":{"description":"role_type string","enum":["grantable_roles","grantable_roles_at_base","grantable_roles_at_hq","grantable_roles_at_other","roles","roles_at_base","roles_at_hq","roles_at_other"],"title":"get_corporations_corporation_id_roles_history_role_type","type":"string"}},"required":["character_id","changed_at","issuer_id","role_type","old_roles","new_roles"],"title":"get_corporations_corporation_id_roles_history_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_roles_history_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_corporation_membership.v1"]}],"summary":"Get corporation member roles history","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/shareholders/":{"get":{"description":"Return the current shareholders of a corporation.\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/shareholders/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/shareholders/`\n\nAlternate route: `/v1/corporations/{corporation_id}/shareholders/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_shareholders","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of shareholders","examples":{"application/json":[{"share_count":580,"shareholder_id":98000001,"shareholder_type":"corporation"},{"share_count":20,"shareholder_id":2112000003,"shareholder_type":"character"},{"share_count":300,"shareholder_id":2112000004,"shareholder_type":"character"},{"share_count":100,"shareholder_id":2112000001,"shareholder_type":"character"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"List of shareholders","items":{"description":"200 ok object","properties":{"share_count":{"description":"share_count integer","format":"int64","title":"get_corporations_corporation_id_shareholders_share_count","type":"integer"},"shareholder_id":{"description":"shareholder_id integer","format":"int32","title":"get_corporations_corporation_id_shareholders_shareholder_id","type":"integer"},"shareholder_type":{"description":"shareholder_type string","enum":["character","corporation"],"title":"get_corporations_corporation_id_shareholders_shareholder_type","type":"string"}},"required":["shareholder_id","shareholder_type","share_count"],"title":"get_corporations_corporation_id_shareholders_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_shareholders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_corporation_wallets.v1"]}],"summary":"Get corporation shareholders","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/standings/":{"get":{"description":"Return corporation standings from agents, NPC corporations, and factions\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/standings/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/standings/`\n\nAlternate route: `/v1/corporations/{corporation_id}/standings/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_corporations_corporation_id_standings","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of standings","examples":{"application/json":[{"from_id":3009841,"from_type":"agent","standing":0.1},{"from_id":1000061,"from_type":"npc_corp","standing":0},{"from_id":500003,"from_type":"faction","standing":-1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"from_id":{"description":"from_id integer","format":"int32","title":"get_corporations_corporation_id_standings_from_id","type":"integer"},"from_type":{"description":"from_type string","enum":["agent","npc_corp","faction"],"title":"get_corporations_corporation_id_standings_from_type","type":"string"},"standing":{"description":"standing number","format":"float","title":"get_corporations_corporation_id_standings_standing","type":"number"}},"required":["from_id","from_type","standing"],"title":"get_corporations_corporation_id_standings_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_standings_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_standings.v1"]}],"summary":"Get corporation standings","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":[]}},"/corporations/{corporation_id}/starbases/":{"get":{"description":"Returns list of corporation starbases (POSes)\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/starbases/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/starbases/`\n\nAlternate route: `/v1/corporations/{corporation_id}/starbases/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_starbases","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of starbases (POSes)","examples":{"application/json":[{"starbase_id":12345,"system_id":123456,"type_id":456}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"moon_id":{"description":"The moon this starbase (POS) is anchored on, unanchored POSes do not have this information","format":"int32","title":"get_corporations_corporation_id_starbases_moon_id","type":"integer"},"onlined_since":{"description":"When the POS onlined, for starbases (POSes) in online state","format":"date-time","title":"get_corporations_corporation_id_starbases_onlined_since","type":"string"},"reinforced_until":{"description":"When the POS will be out of reinforcement, for starbases (POSes) in reinforced state","format":"date-time","title":"get_corporations_corporation_id_starbases_reinforced_until","type":"string"},"starbase_id":{"description":"Unique ID for this starbase (POS)","format":"int64","title":"get_corporations_corporation_id_starbases_starbase_id","type":"integer"},"state":{"description":"state string","enum":["offline","online","onlining","reinforced","unanchoring"],"title":"get_corporations_corporation_id_starbases_state","type":"string"},"system_id":{"description":"The solar system this starbase (POS) is in, unanchored POSes have this information","format":"int32","title":"get_corporations_corporation_id_starbases_system_id","type":"integer"},"type_id":{"description":"Starbase (POS) type","format":"int32","title":"get_corporations_corporation_id_starbases_type_id","type":"integer"},"unanchor_at":{"description":"When the POS started unanchoring, for starbases (POSes) in unanchoring state","format":"date-time","title":"get_corporations_corporation_id_starbases_unanchor_at","type":"string"}},"required":["starbase_id","type_id","system_id"],"title":"get_corporations_corporation_id_starbases_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_starbases_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_starbases.v1"]}],"summary":"Get corporation starbases (POSes)","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/starbases/{starbase_id}/":{"get":{"description":"Returns various settings and fuels of a starbase (POS)\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/starbases/{starbase_id}/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/starbases/{starbase_id}/`\n\nAlternate route: `/v1/corporations/{corporation_id}/starbases/{starbase_id}/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_starbases_starbase_id","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"An EVE starbase (POS) ID","format":"int64","in":"path","name":"starbase_id","required":true,"type":"integer"},{"description":"The solar system this starbase (POS) is located in,","format":"int32","in":"query","name":"system_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of starbases (POSes)","examples":{"application/json":{"allow_alliance_members":false,"allow_corporation_members":true,"anchor":"config_starbase_equipment_role","attack_if_at_war":true,"attack_if_other_security_status_dropping":false,"fuel_bay_take":"config_starbase_equipment_role","fuel_bay_view":"config_starbase_equipment_role","offline":"config_starbase_equipment_role","online":"config_starbase_equipment_role","unanchor":"config_starbase_equipment_role","use_alliance_standings":false}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"allow_alliance_members":{"description":"allow_alliance_members boolean","title":"get_corporations_corporation_id_starbases_starbase_id_allow_alliance_members","type":"boolean"},"allow_corporation_members":{"description":"allow_corporation_members boolean","title":"get_corporations_corporation_id_starbases_starbase_id_allow_corporation_members","type":"boolean"},"anchor":{"description":"Who can anchor starbase (POS) and its structures","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_anchor","type":"string"},"attack_if_at_war":{"description":"attack_if_at_war boolean","title":"get_corporations_corporation_id_starbases_starbase_id_attack_if_at_war","type":"boolean"},"attack_if_other_security_status_dropping":{"description":"attack_if_other_security_status_dropping boolean","title":"get_corporations_corporation_id_starbases_starbase_id_attack_if_other_security_status_dropping","type":"boolean"},"attack_security_status_threshold":{"description":"Starbase (POS) will attack if target's security standing is lower than this value","format":"float","title":"get_corporations_corporation_id_starbases_starbase_id_attack_security_status_threshold","type":"number"},"attack_standing_threshold":{"description":"Starbase (POS) will attack if target's standing is lower than this value","format":"float","title":"get_corporations_corporation_id_starbases_starbase_id_attack_standing_threshold","type":"number"},"fuel_bay_take":{"description":"Who can take fuel blocks out of the starbase (POS)'s fuel bay","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_fuel_bay_take","type":"string"},"fuel_bay_view":{"description":"Who can view the starbase (POS)'s fule bay. Characters either need to have required role or belong to the starbase (POS) owner's corporation or alliance, as described by the enum, all other access settings follows the same scheme","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_fuel_bay_view","type":"string"},"fuels":{"description":"Fuel blocks and other things that will be consumed when operating a starbase (POS)","items":{"description":"fuel object","properties":{"quantity":{"description":"quantity integer","format":"int32","title":"get_corporations_corporation_id_starbases_starbase_id_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_starbases_starbase_id_type_id","type":"integer"}},"required":["type_id","quantity"],"title":"get_corporations_corporation_id_starbases_starbase_id_fuel","type":"object"},"maxItems":20,"title":"get_corporations_corporation_id_starbases_starbase_id_fuels","type":"array"},"offline":{"description":"Who can offline starbase (POS) and its structures","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_offline","type":"string"},"online":{"description":"Who can online starbase (POS) and its structures","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_online","type":"string"},"unanchor":{"description":"Who can unanchor starbase (POS) and its structures","enum":["alliance_member","config_starbase_equipment_role","corporation_member","starbase_fuel_technician_role"],"title":"get_corporations_corporation_id_starbases_starbase_id_unanchor","type":"string"},"use_alliance_standings":{"description":"True if the starbase (POS) is using alliance standings, otherwise using corporation's","title":"get_corporations_corporation_id_starbases_starbase_id_use_alliance_standings","type":"boolean"}},"required":["fuel_bay_view","fuel_bay_take","anchor","unanchor","online","offline","allow_corporation_members","allow_alliance_members","use_alliance_standings","attack_if_other_security_status_dropping","attack_if_at_war"],"title":"get_corporations_corporation_id_starbases_starbase_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_starbases.v1"]}],"summary":"Get starbase (POS) detail","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/structures/":{"get":{"description":"Get a list of corporation structures. This route's version includes the changes to structures detailed in this blog: https://www.eveonline.com/article/upwell-2.0-structures-changes-coming-on-february-13th\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/structures/`\n\nAlternate route: `/v3/corporations/{corporation_id}/structures/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Station_Manager\n","operationId":"get_corporations_corporation_id_structures","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation structures' information","examples":{"application/json":[{"corporation_id":667531913,"profile_id":11237,"reinforce_hour":22,"reinforce_weekday":2,"state":"shield_vulnerable","structure_id":1021975535893,"system_id":30004763,"type_id":35833}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"ID of the corporation that owns the structure","format":"int32","title":"get_corporations_corporation_id_structures_corporation_id","type":"integer"},"fuel_expires":{"description":"Date on which the structure will run out of fuel","format":"date-time","title":"get_corporations_corporation_id_structures_fuel_expires","type":"string"},"next_reinforce_apply":{"description":"The date and time when the structure's newly requested reinforcement times (e.g. next_reinforce_hour and next_reinforce_day) will take effect","format":"date-time","title":"get_corporations_corporation_id_structures_next_reinforce_apply","type":"string"},"next_reinforce_hour":{"description":"The requested change to reinforce_hour that will take effect at the time shown by next_reinforce_apply","format":"int32","maximum":23,"minimum":0,"title":"get_corporations_corporation_id_structures_next_reinforce_hour","type":"integer"},"next_reinforce_weekday":{"description":"The requested change to reinforce_weekday that will take effect at the time shown by next_reinforce_apply","format":"int32","maximum":6,"minimum":0,"title":"get_corporations_corporation_id_structures_next_reinforce_weekday","type":"integer"},"profile_id":{"description":"The id of the ACL profile for this citadel","format":"int32","title":"get_corporations_corporation_id_structures_profile_id","type":"integer"},"reinforce_hour":{"description":"The hour of day that determines the four hour window when the structure will randomly exit its reinforcement periods and become vulnerable to attack against its armor and/or hull. The structure will become vulnerable at a random time that is +/- 2 hours centered on the value of this property","format":"int32","maximum":23,"minimum":0,"title":"get_corporations_corporation_id_structures_reinforce_hour","type":"integer"},"reinforce_weekday":{"description":"The day of the week when the structure exits its final reinforcement period and becomes vulnerable to attack against its hull. Monday is 0 and Sunday is 6","format":"int32","maximum":6,"minimum":0,"title":"get_corporations_corporation_id_structures_reinforce_weekday","type":"integer"},"services":{"description":"Contains a list of service upgrades, and their state","items":{"description":"service object","properties":{"name":{"description":"name string","title":"get_corporations_corporation_id_structures_name","type":"string"},"state":{"description":"state string","enum":["online","offline","cleanup"],"title":"get_corporations_corporation_id_structures_service_state","type":"string"}},"required":["name","state"],"title":"get_corporations_corporation_id_structures_service","type":"object"},"maxItems":10,"title":"get_corporations_corporation_id_structures_services","type":"array"},"state":{"description":"state string","enum":["anchor_vulnerable","anchoring","armor_reinforce","armor_vulnerable","deploy_vulnerable","fitting_invulnerable","hull_reinforce","hull_vulnerable","online_deprecated","onlining_vulnerable","shield_vulnerable","unanchored","unknown"],"title":"get_corporations_corporation_id_structures_state","type":"string"},"state_timer_end":{"description":"Date at which the structure will move to it's next state","format":"date-time","title":"get_corporations_corporation_id_structures_state_timer_end","type":"string"},"state_timer_start":{"description":"Date at which the structure entered it's current state","format":"date-time","title":"get_corporations_corporation_id_structures_state_timer_start","type":"string"},"structure_id":{"description":"The Item ID of the structure","format":"int64","title":"get_corporations_corporation_id_structures_structure_id","type":"integer"},"system_id":{"description":"The solar system the structure is in","format":"int32","title":"get_corporations_corporation_id_structures_system_id","type":"integer"},"type_id":{"description":"The type id of the structure","format":"int32","title":"get_corporations_corporation_id_structures_type_id","type":"integer"},"unanchors_at":{"description":"Date at which the structure will unanchor","format":"date-time","title":"get_corporations_corporation_id_structures_unanchors_at","type":"string"}},"required":["structure_id","type_id","corporation_id","system_id","profile_id","reinforce_hour","state"],"title":"get_corporations_corporation_id_structures_200_ok","type":"object"},"maxItems":1000,"title":"get_corporations_corporation_id_structures_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_structures.v1"]}],"summary":"Get corporation structures","tags":["Corporation"],"x-alternate-versions":["dev","v3"],"x-cached-seconds":3600,"x-required-roles":["Station_Manager"]}},"/corporations/{corporation_id}/titles/":{"get":{"description":"Returns a corporation's titles\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/titles/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/titles/`\n\nAlternate route: `/v1/corporations/{corporation_id}/titles/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Director\n","operationId":"get_corporations_corporation_id_titles","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of titles","examples":{"application/json":[{"name":"Awesome Title","roles":["Hangar_Take_6","Hangar_Query_2"],"title_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"grantable_roles":{"description":"grantable_roles array","items":{"description":"grantable_role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_grantable_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_grantable_roles","type":"array"},"grantable_roles_at_base":{"description":"grantable_roles_at_base array","items":{"description":"grantable_roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_grantable_roles_at_base_grantable_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_grantable_roles_at_base","type":"array"},"grantable_roles_at_hq":{"description":"grantable_roles_at_hq array","items":{"description":"grantable_roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_grantable_roles_at_hq_grantable_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_grantable_roles_at_hq","type":"array"},"grantable_roles_at_other":{"description":"grantable_roles_at_other array","items":{"description":"grantable_roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_grantable_roles_at_other_grantable_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_grantable_roles_at_other","type":"array"},"name":{"description":"name string","title":"get_corporations_corporation_id_titles_name","type":"string"},"roles":{"description":"roles array","items":{"description":"role string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_role","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_roles","type":"array"},"roles_at_base":{"description":"roles_at_base array","items":{"description":"roles_at_base string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_roles_at_base_roles_at_base","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_roles_at_base","type":"array"},"roles_at_hq":{"description":"roles_at_hq array","items":{"description":"roles_at_hq string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_roles_at_hq_roles_at_hq","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_roles_at_hq","type":"array"},"roles_at_other":{"description":"roles_at_other array","items":{"description":"roles_at_other string","enum":["Account_Take_1","Account_Take_2","Account_Take_3","Account_Take_4","Account_Take_5","Account_Take_6","Account_Take_7","Accountant","Auditor","Communications_Officer","Config_Equipment","Config_Starbase_Equipment","Container_Take_1","Container_Take_2","Container_Take_3","Container_Take_4","Container_Take_5","Container_Take_6","Container_Take_7","Contract_Manager","Diplomat","Director","Factory_Manager","Fitting_Manager","Hangar_Query_1","Hangar_Query_2","Hangar_Query_3","Hangar_Query_4","Hangar_Query_5","Hangar_Query_6","Hangar_Query_7","Hangar_Take_1","Hangar_Take_2","Hangar_Take_3","Hangar_Take_4","Hangar_Take_5","Hangar_Take_6","Hangar_Take_7","Junior_Accountant","Personnel_Manager","Rent_Factory_Facility","Rent_Office","Rent_Research_Facility","Security_Officer","Starbase_Defense_Operator","Starbase_Fuel_Technician","Station_Manager","Trader"],"title":"get_corporations_corporation_id_titles_roles_at_other_roles_at_other","type":"string","uniqueItems":true},"maxItems":50,"title":"get_corporations_corporation_id_titles_roles_at_other","type":"array"},"title_id":{"description":"title_id integer","format":"int32","title":"get_corporations_corporation_id_titles_title_id","type":"integer"}},"title":"get_corporations_corporation_id_titles_200_ok","type":"object"},"maxItems":16,"title":"get_corporations_corporation_id_titles_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-corporations.read_titles.v1"]}],"summary":"Get corporation titles","tags":["Corporation"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Director"]}},"/corporations/{corporation_id}/wallets/":{"get":{"description":"Get a corporation's wallets\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/wallets/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/wallets/`\n\nAlternate route: `/v1/corporations/{corporation_id}/wallets/`\n\n---\nThis route is cached for up to 300 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Junior_Accountant\n","operationId":"get_corporations_corporation_id_wallets","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"List of corporation wallets","examples":{"application/json":[{"balance":123.45,"division":1},{"balance":123.45,"division":2},{"balance":123.45,"division":3},{"balance":123.45,"division":4},{"balance":123.45,"division":5},{"balance":123.45,"division":6},{"balance":123.45,"division":7}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"balance":{"description":"balance number","format":"double","title":"get_corporations_corporation_id_wallets_balance","type":"number"},"division":{"description":"division integer","format":"int32","maximum":7,"minimum":1,"title":"get_corporations_corporation_id_wallets_division","type":"integer"}},"required":["division","balance"],"title":"get_corporations_corporation_id_wallets_200_ok","type":"object"},"maxItems":7,"title":"get_corporations_corporation_id_wallets_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_corporation_wallets.v1"]}],"summary":"Returns a corporation's wallet balance","tags":["Wallet"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300,"x-required-roles":["Accountant","Junior_Accountant"]}},"/corporations/{corporation_id}/wallets/{division}/journal/":{"get":{"description":"Retrieve the given corporation's wallet journal for the given division going 30 days back\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/wallets/{division}/journal/`\n\nAlternate route: `/v4/corporations/{corporation_id}/wallets/{division}/journal/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Junior_Accountant\n","operationId":"get_corporations_corporation_id_wallets_division_journal","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"description":"Wallet key of the division to fetch journals from","format":"int32","in":"path","maximum":7,"minimum":1,"name":"division","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Journal entries","examples":{"application/json":[{"amount":-1000,"balance":100000.0,"context_id":2112625428,"context_id_type":"character_id","date":"2016-10-24T09:00:00Z","description":"CCP Zoetrope transferred cash from C C P's corporate account to CCP SnowedIn's account","first_party_id":109299958,"id":1234567890,"ref_type":"corporation_account_withdrawal","second_party_id":95538921}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"Journal entries","items":{"description":"200 ok object","properties":{"amount":{"description":"The amount of ISK given or taken from the wallet as a result of the given transaction. Positive when ISK is deposited into the wallet and negative when ISK is withdrawn","format":"double","title":"get_corporations_corporation_id_wallets_division_journal_amount","type":"number"},"balance":{"description":"Wallet balance after transaction occurred","format":"double","title":"get_corporations_corporation_id_wallets_division_journal_balance","type":"number"},"context_id":{"description":"An ID that gives extra context to the particular transaction. Because of legacy reasons the context is completely different per ref_type and means different things. It is also possible to not have a context_id","format":"int64","title":"get_corporations_corporation_id_wallets_division_journal_context_id","type":"integer"},"context_id_type":{"description":"The type of the given context_id if present","enum":["structure_id","station_id","market_transaction_id","character_id","corporation_id","alliance_id","eve_system","industry_job_id","contract_id","planet_id","system_id","type_id"],"title":"get_corporations_corporation_id_wallets_division_journal_context_id_type","type":"string"},"date":{"description":"Date and time of transaction","format":"date-time","title":"get_corporations_corporation_id_wallets_division_journal_date","type":"string"},"description":{"description":"The reason for the transaction, mirrors what is seen in the client","title":"get_corporations_corporation_id_wallets_division_journal_description","type":"string"},"first_party_id":{"description":"The id of the first party involved in the transaction. This attribute has no consistency and is different or non existant for particular ref_types. The description attribute will help make sense of what this attribute means. For more info about the given ID it can be dropped into the /universe/names/ ESI route to determine its type and name","format":"int32","title":"get_corporations_corporation_id_wallets_division_journal_first_party_id","type":"integer"},"id":{"description":"Unique journal reference ID","format":"int64","title":"get_corporations_corporation_id_wallets_division_journal_id","type":"integer"},"reason":{"description":"The user stated reason for the transaction. Only applies to some ref_types","title":"get_corporations_corporation_id_wallets_division_journal_reason","type":"string"},"ref_type":{"description":"\"The transaction type for the given. transaction. Different transaction types will populate different attributes. Note: If you have an existing XML API application that is using ref_types, you will need to know which string ESI ref_type maps to which integer. You can look at the following file to see string->int mappings: https://github.com/ccpgames/eve-glue/blob/master/eve_glue/wallet_journal_ref.py\"","enum":["acceleration_gate_fee","advertisement_listing_fee","agent_donation","agent_location_services","agent_miscellaneous","agent_mission_collateral_paid","agent_mission_collateral_refunded","agent_mission_reward","agent_mission_reward_corporation_tax","agent_mission_time_bonus_reward","agent_mission_time_bonus_reward_corporation_tax","agent_security_services","agent_services_rendered","agents_preward","alliance_maintainance_fee","alliance_registration_fee","asset_safety_recovery_tax","bounty","bounty_prize","bounty_prize_corporation_tax","bounty_prizes","bounty_reimbursement","bounty_surcharge","brokers_fee","clone_activation","clone_transfer","contraband_fine","contract_auction_bid","contract_auction_bid_corp","contract_auction_bid_refund","contract_auction_sold","contract_brokers_fee","contract_brokers_fee_corp","contract_collateral","contract_collateral_deposited_corp","contract_collateral_payout","contract_collateral_refund","contract_deposit","contract_deposit_corp","contract_deposit_refund","contract_deposit_sales_tax","contract_price","contract_price_payment_corp","contract_reversal","contract_reward","contract_reward_deposited","contract_reward_deposited_corp","contract_reward_refund","contract_sales_tax","copying","corporate_reward_payout","corporate_reward_tax","corporation_account_withdrawal","corporation_bulk_payment","corporation_dividend_payment","corporation_liquidation","corporation_logo_change_cost","corporation_payment","corporation_registration_fee","courier_mission_escrow","cspa","cspaofflinerefund","datacore_fee","dna_modification_fee","docking_fee","duel_wager_escrow","duel_wager_payment","duel_wager_refund","factory_slot_rental_fee","gm_cash_transfer","industry_job_tax","infrastructure_hub_maintenance","inheritance","insurance","jump_clone_activation_fee","jump_clone_installation_fee","kill_right_fee","lp_store","manufacturing","market_escrow","market_fine_paid","market_transaction","medal_creation","medal_issued","mission_completion","mission_cost","mission_expiration","mission_reward","office_rental_fee","operation_bonus","opportunity_reward","planetary_construction","planetary_export_tax","planetary_import_tax","player_donation","player_trading","project_discovery_reward","project_discovery_tax","reaction","release_of_impounded_property","repair_bill","reprocessing_tax","researching_material_productivity","researching_technology","researching_time_productivity","resource_wars_reward","reverse_engineering","security_processing_fee","shares","sovereignity_bill","store_purchase","store_purchase_refund","structure_gate_jump","transaction_tax","upkeep_adjustment_fee","war_ally_contract","war_fee","war_fee_surrender"],"title":"get_corporations_corporation_id_wallets_division_journal_ref_type","type":"string"},"second_party_id":{"description":"The id of the second party involved in the transaction. This attribute has no consistency and is different or non existant for particular ref_types. The description attribute will help make sense of what this attribute means. For more info about the given ID it can be dropped into the /universe/names/ ESI route to determine its type and name","format":"int32","title":"get_corporations_corporation_id_wallets_division_journal_second_party_id","type":"integer"},"tax":{"description":"Tax amount received. Only applies to tax related transactions","format":"double","title":"get_corporations_corporation_id_wallets_division_journal_tax","type":"number"},"tax_receiver_id":{"description":"The corporation ID receiving any tax paid. Only applies to tax related transactions","format":"int32","title":"get_corporations_corporation_id_wallets_division_journal_tax_receiver_id","type":"integer"}},"required":["date","id","ref_type","description"],"title":"get_corporations_corporation_id_wallets_division_journal_200_ok","type":"object"},"maxItems":2500,"title":"get_corporations_corporation_id_wallets_division_journal_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_corporation_wallets.v1"]}],"summary":"Get corporation wallet journal","tags":["Wallet"],"x-alternate-versions":["dev","v4"],"x-cached-seconds":3600,"x-required-roles":["Accountant","Junior_Accountant"]}},"/corporations/{corporation_id}/wallets/{division}/transactions/":{"get":{"description":"Get wallet transactions of a corporation\n\n---\nAlternate route: `/dev/corporations/{corporation_id}/wallets/{division}/transactions/`\n\nAlternate route: `/legacy/corporations/{corporation_id}/wallets/{division}/transactions/`\n\nAlternate route: `/v1/corporations/{corporation_id}/wallets/{division}/transactions/`\n\n---\nThis route is cached for up to 3600 seconds\n\n---\nRequires one of the following EVE corporation role(s): Accountant, Junior_Accountant\n","operationId":"get_corporations_corporation_id_wallets_division_transactions","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"description":"Wallet key of the division to fetch journals from","format":"int32","in":"path","maximum":7,"minimum":1,"name":"division","required":true,"type":"integer"},{"description":"Only show journal entries happened before the transaction referenced by this id","format":"int64","in":"query","name":"from_id","required":false,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Wallet transactions","examples":{"application/json":[{"client_id":54321,"date":"2016-10-24T09:00:00Z","is_buy":true,"journal_ref_id":67890,"location_id":60014719,"quantity":1,"transaction_id":1234567890,"type_id":587,"unit_price":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Wallet transactions","items":{"description":"wallet transaction","properties":{"client_id":{"description":"client_id integer","format":"int32","title":"get_corporations_corporation_id_wallets_division_transactions_client_id","type":"integer"},"date":{"description":"Date and time of transaction","format":"date-time","title":"get_corporations_corporation_id_wallets_division_transactions_date","type":"string"},"is_buy":{"description":"is_buy boolean","title":"get_corporations_corporation_id_wallets_division_transactions_is_buy","type":"boolean"},"journal_ref_id":{"description":"-1 if there is no corresponding wallet journal entry","format":"int64","title":"get_corporations_corporation_id_wallets_division_transactions_journal_ref_id","type":"integer"},"location_id":{"description":"location_id integer","format":"int64","title":"get_corporations_corporation_id_wallets_division_transactions_location_id","type":"integer"},"quantity":{"description":"quantity integer","format":"int32","title":"get_corporations_corporation_id_wallets_division_transactions_quantity","type":"integer"},"transaction_id":{"description":"Unique transaction ID","format":"int64","title":"get_corporations_corporation_id_wallets_division_transactions_transaction_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_corporations_corporation_id_wallets_division_transactions_type_id","type":"integer"},"unit_price":{"description":"Amount paid per unit","format":"double","title":"get_corporations_corporation_id_wallets_division_transactions_unit_price","type":"number"}},"required":["transaction_id","date","location_id","type_id","unit_price","quantity","client_id","is_buy","journal_ref_id"],"title":"get_corporations_corporation_id_wallets_division_transactions_200_ok","type":"object"},"maxItems":2500,"title":"get_corporations_corporation_id_wallets_division_transactions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-wallet.read_corporation_wallets.v1"]}],"summary":"Get corporation wallet transactions","tags":["Wallet"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600,"x-required-roles":["Accountant","Junior_Accountant"]}},"/dogma/attributes/":{"get":{"description":"Get a list of dogma attribute ids\n\n---\nAlternate route: `/dev/dogma/attributes/`\n\nAlternate route: `/legacy/dogma/attributes/`\n\nAlternate route: `/v1/dogma/attributes/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_attributes","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of dogma attribute ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_dogma_attributes_200_ok","type":"integer"},"maxItems":10000,"title":"get_dogma_attributes_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get attributes","tags":["Dogma"],"x-alternate-versions":["dev","legacy","v1"]}},"/dogma/attributes/{attribute_id}/":{"get":{"description":"Get information on a dogma attribute\n\n---\nAlternate route: `/dev/dogma/attributes/{attribute_id}/`\n\nAlternate route: `/legacy/dogma/attributes/{attribute_id}/`\n\nAlternate route: `/v1/dogma/attributes/{attribute_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_attributes_attribute_id","parameters":[{"description":"A dogma attribute ID","format":"int32","in":"path","name":"attribute_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Information about a dogma attribute","examples":{"application/json":{"attribute_id":20,"default_value":1,"description":"Factor by which topspeed increases.","display_name":"Maximum Velocity Bonus","high_is_good":true,"icon_id":1389,"name":"speedFactor","published":true,"unit_id":124}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"attribute_id":{"description":"attribute_id integer","format":"int32","title":"get_dogma_attributes_attribute_id_attribute_id","type":"integer"},"default_value":{"description":"default_value number","format":"float","title":"get_dogma_attributes_attribute_id_default_value","type":"number"},"description":{"description":"description string","title":"get_dogma_attributes_attribute_id_description","type":"string"},"display_name":{"description":"display_name string","title":"get_dogma_attributes_attribute_id_display_name","type":"string"},"high_is_good":{"description":"high_is_good boolean","title":"get_dogma_attributes_attribute_id_high_is_good","type":"boolean"},"icon_id":{"description":"icon_id integer","format":"int32","title":"get_dogma_attributes_attribute_id_icon_id","type":"integer"},"name":{"description":"name string","title":"get_dogma_attributes_attribute_id_name","type":"string"},"published":{"description":"published boolean","title":"get_dogma_attributes_attribute_id_published","type":"boolean"},"stackable":{"description":"stackable boolean","title":"get_dogma_attributes_attribute_id_stackable","type":"boolean"},"unit_id":{"description":"unit_id integer","format":"int32","title":"get_dogma_attributes_attribute_id_unit_id","type":"integer"}},"required":["attribute_id"],"title":"get_dogma_attributes_attribute_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Dogma attribute not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_dogma_attributes_attribute_id_404_not_found","type":"string"}},"title":"get_dogma_attributes_attribute_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get attribute information","tags":["Dogma"],"x-alternate-versions":["dev","legacy","v1"]}},"/dogma/dynamic/items/{type_id}/{item_id}/":{"get":{"description":"Returns info about a dynamic item resulting from mutation with a mutaplasmid.\n\n---\nAlternate route: `/dev/dogma/dynamic/items/{type_id}/{item_id}/`\n\nAlternate route: `/legacy/dogma/dynamic/items/{type_id}/{item_id}/`\n\nAlternate route: `/v1/dogma/dynamic/items/{type_id}/{item_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_dynamic_items_type_id_item_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"item_id integer","format":"int64","in":"path","name":"item_id","required":true,"type":"integer"},{"description":"type_id integer","format":"int32","in":"path","name":"type_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Details about a dynamic item","examples":{"application/json":{"created_by":2112625428,"dogma_attributes":[{"attribute_id":9,"value":350}],"dogma_effects":[{"effect_id":508,"is_default":false}],"mutator_type_id":47845,"source_type_id":33103}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"created_by":{"description":"The ID of the character who created the item","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_created_by","type":"integer"},"dogma_attributes":{"description":"dogma_attributes array","items":{"description":"dogma_attribute object","properties":{"attribute_id":{"description":"attribute_id integer","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_attribute_id","type":"integer"},"value":{"description":"value number","format":"float","title":"get_dogma_dynamic_items_type_id_item_id_value","type":"number"}},"required":["attribute_id","value"],"title":"get_dogma_dynamic_items_type_id_item_id_dogma_attribute","type":"object"},"maxItems":1000,"title":"get_dogma_dynamic_items_type_id_item_id_dogma_attributes","type":"array"},"dogma_effects":{"description":"dogma_effects array","items":{"description":"dogma_effect object","properties":{"effect_id":{"description":"effect_id integer","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_effect_id","type":"integer"},"is_default":{"description":"is_default boolean","title":"get_dogma_dynamic_items_type_id_item_id_is_default","type":"boolean"}},"required":["effect_id","is_default"],"title":"get_dogma_dynamic_items_type_id_item_id_dogma_effect","type":"object"},"maxItems":1000,"title":"get_dogma_dynamic_items_type_id_item_id_dogma_effects","type":"array"},"mutator_type_id":{"description":"The type ID of the mutator used to generate the dynamic item.","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_mutator_type_id","type":"integer"},"source_type_id":{"description":"The type ID of the source item the mutator was applied to create the dynamic item.","format":"int32","title":"get_dogma_dynamic_items_type_id_item_id_source_type_id","type":"integer"}},"required":["dogma_attributes","dogma_effects","created_by","source_type_id","mutator_type_id"],"title":"get_dogma_dynamic_items_type_id_item_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Item not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_dogma_dynamic_items_type_id_item_id_404_not_found","type":"string"}},"title":"get_dogma_dynamic_items_type_id_item_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get dynamic item information","tags":["Dogma"],"x-alternate-versions":["dev","legacy","v1"]}},"/dogma/effects/":{"get":{"description":"Get a list of dogma effect ids\n\n---\nAlternate route: `/dev/dogma/effects/`\n\nAlternate route: `/legacy/dogma/effects/`\n\nAlternate route: `/v1/dogma/effects/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_effects","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of dogma effect ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_dogma_effects_200_ok","type":"integer"},"maxItems":10000,"title":"get_dogma_effects_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get effects","tags":["Dogma"],"x-alternate-versions":["dev","legacy","v1"]}},"/dogma/effects/{effect_id}/":{"get":{"description":"Get information on a dogma effect\n\n---\nAlternate route: `/dev/dogma/effects/{effect_id}/`\n\nAlternate route: `/v2/dogma/effects/{effect_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_dogma_effects_effect_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"A dogma effect ID","format":"int32","in":"path","name":"effect_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Information about a dogma effect","examples":{"application/json":{"description":"Requires a high power slot.","display_name":"High power","effect_category":0,"effect_id":12,"icon_id":293,"name":"hiPower","post_expression":131,"pre_expression":131,"published":true}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"description":{"description":"description string","title":"get_dogma_effects_effect_id_description","type":"string"},"disallow_auto_repeat":{"description":"disallow_auto_repeat boolean","title":"get_dogma_effects_effect_id_disallow_auto_repeat","type":"boolean"},"discharge_attribute_id":{"description":"discharge_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_discharge_attribute_id","type":"integer"},"display_name":{"description":"display_name string","title":"get_dogma_effects_effect_id_display_name","type":"string"},"duration_attribute_id":{"description":"duration_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_duration_attribute_id","type":"integer"},"effect_category":{"description":"effect_category integer","format":"int32","title":"get_dogma_effects_effect_id_effect_category","type":"integer"},"effect_id":{"description":"effect_id integer","format":"int32","title":"get_dogma_effects_effect_id_effect_id","type":"integer"},"electronic_chance":{"description":"electronic_chance boolean","title":"get_dogma_effects_effect_id_electronic_chance","type":"boolean"},"falloff_attribute_id":{"description":"falloff_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_falloff_attribute_id","type":"integer"},"icon_id":{"description":"icon_id integer","format":"int32","title":"get_dogma_effects_effect_id_icon_id","type":"integer"},"is_assistance":{"description":"is_assistance boolean","title":"get_dogma_effects_effect_id_is_assistance","type":"boolean"},"is_offensive":{"description":"is_offensive boolean","title":"get_dogma_effects_effect_id_is_offensive","type":"boolean"},"is_warp_safe":{"description":"is_warp_safe boolean","title":"get_dogma_effects_effect_id_is_warp_safe","type":"boolean"},"modifiers":{"description":"modifiers array","items":{"description":"modifier object","properties":{"domain":{"description":"domain string","title":"get_dogma_effects_effect_id_domain","type":"string"},"effect_id":{"description":"effect_id integer","format":"int32","title":"get_dogma_effects_effect_id_modifier_effect_id","type":"integer"},"func":{"description":"func string","title":"get_dogma_effects_effect_id_func","type":"string"},"modified_attribute_id":{"description":"modified_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_modified_attribute_id","type":"integer"},"modifying_attribute_id":{"description":"modifying_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_modifying_attribute_id","type":"integer"},"operator":{"description":"operator integer","format":"int32","title":"get_dogma_effects_effect_id_operator","type":"integer"}},"required":["func"],"title":"get_dogma_effects_effect_id_modifier","type":"object"},"maxItems":100,"title":"get_dogma_effects_effect_id_modifiers","type":"array"},"name":{"description":"name string","title":"get_dogma_effects_effect_id_name","type":"string"},"post_expression":{"description":"post_expression integer","format":"int32","title":"get_dogma_effects_effect_id_post_expression","type":"integer"},"pre_expression":{"description":"pre_expression integer","format":"int32","title":"get_dogma_effects_effect_id_pre_expression","type":"integer"},"published":{"description":"published boolean","title":"get_dogma_effects_effect_id_published","type":"boolean"},"range_attribute_id":{"description":"range_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_range_attribute_id","type":"integer"},"range_chance":{"description":"range_chance boolean","title":"get_dogma_effects_effect_id_range_chance","type":"boolean"},"tracking_speed_attribute_id":{"description":"tracking_speed_attribute_id integer","format":"int32","title":"get_dogma_effects_effect_id_tracking_speed_attribute_id","type":"integer"}},"required":["effect_id"],"title":"get_dogma_effects_effect_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Dogma effect not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_dogma_effects_effect_id_404_not_found","type":"string"}},"title":"get_dogma_effects_effect_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get effect information","tags":["Dogma"],"x-alternate-versions":["dev","v2"]}},"/fleets/{fleet_id}/":{"get":{"description":"Return details about a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_fleets_fleet_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Details about a fleet","examples":{"application/json":{"is_free_move":false,"is_registered":false,"is_voice_enabled":false,"motd":"This is an awesome fleet!"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"is_free_move":{"description":"Is free-move enabled","title":"get_fleets_fleet_id_is_free_move","type":"boolean"},"is_registered":{"description":"Does the fleet have an active fleet advertisement","title":"get_fleets_fleet_id_is_registered","type":"boolean"},"is_voice_enabled":{"description":"Is EVE Voice enabled","title":"get_fleets_fleet_id_is_voice_enabled","type":"boolean"},"motd":{"description":"Fleet MOTD in CCP flavoured HTML","title":"get_fleets_fleet_id_motd","type":"string"}},"required":["motd","is_free_move","is_registered","is_voice_enabled"],"title":"get_fleets_fleet_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_fleets_fleet_id_404_not_found","type":"string"}},"title":"get_fleets_fleet_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.read_fleet.v1"]}],"summary":"Get fleet information","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":5},"put":{"description":"Update settings about a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/`\n","operationId":"put_fleets_fleet_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"What to update for this fleet","in":"body","name":"new_settings","required":true,"schema":{"description":"new_settings object","properties":{"is_free_move":{"description":"Should free-move be enabled in the fleet","title":"put_fleets_fleet_id_is_free_move","type":"boolean"},"motd":{"description":"New fleet MOTD in CCP flavoured HTML","title":"put_fleets_fleet_id_motd","type":"string"}},"title":"put_fleets_fleet_id_new_settings","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fleet updated"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"put_fleets_fleet_id_404_not_found","type":"string"}},"title":"put_fleets_fleet_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Update fleet","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/members/":{"get":{"description":"Return information about fleet members\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/members/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/members/`\n\nAlternate route: `/v1/fleets/{fleet_id}/members/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_fleets_fleet_id_members","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of fleet members","examples":{"application/json":[{"character_id":93265215,"join_time":"2016-04-29T12:34:56Z","role":"squad_commander","role_name":"Squad Commander (Boss)","ship_type_id":33328,"solar_system_id":30003729,"squad_id":3129411261968,"station_id":61000180,"takes_fleet_warp":true,"wing_id":2073711261968}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"character_id":{"description":"character_id integer","format":"int32","title":"get_fleets_fleet_id_members_character_id","type":"integer"},"join_time":{"description":"join_time string","format":"date-time","title":"get_fleets_fleet_id_members_join_time","type":"string"},"role":{"description":"Member\u2019s role in fleet","enum":["fleet_commander","wing_commander","squad_commander","squad_member"],"title":"get_fleets_fleet_id_members_role","type":"string"},"role_name":{"description":"Localized role names","title":"get_fleets_fleet_id_members_role_name","type":"string"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_fleets_fleet_id_members_ship_type_id","type":"integer"},"solar_system_id":{"description":"Solar system the member is located in","format":"int32","title":"get_fleets_fleet_id_members_solar_system_id","type":"integer"},"squad_id":{"description":"ID of the squad the member is in. If not applicable, will be set to -1","format":"int64","title":"get_fleets_fleet_id_members_squad_id","type":"integer"},"station_id":{"description":"Station in which the member is docked in, if applicable","format":"int64","title":"get_fleets_fleet_id_members_station_id","type":"integer"},"takes_fleet_warp":{"description":"Whether the member take fleet warps","title":"get_fleets_fleet_id_members_takes_fleet_warp","type":"boolean"},"wing_id":{"description":"ID of the wing the member is in. If not applicable, will be set to -1","format":"int64","title":"get_fleets_fleet_id_members_wing_id","type":"integer"}},"required":["character_id","ship_type_id","wing_id","squad_id","role","role_name","join_time","takes_fleet_warp","solar_system_id"],"title":"get_fleets_fleet_id_members_200_ok","type":"object"},"maxItems":256,"title":"get_fleets_fleet_id_members_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_fleets_fleet_id_members_404_not_found","type":"string"}},"title":"get_fleets_fleet_id_members_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.read_fleet.v1"]}],"summary":"Get fleet members","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":5},"post":{"description":"Invite a character into the fleet. If a character has a CSPA charge set it is not possible to invite them to the fleet using ESI\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/members/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/members/`\n\nAlternate route: `/v1/fleets/{fleet_id}/members/`\n","operationId":"post_fleets_fleet_id_members","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"Details of the invitation","in":"body","name":"invitation","required":true,"schema":{"description":"invitation object","properties":{"character_id":{"description":"The character you want to invite","format":"int32","title":"post_fleets_fleet_id_members_character_id","type":"integer"},"role":{"description":"If a character is invited with the `fleet_commander` role, neither `wing_id` or `squad_id` should be specified. If a character is invited with the `wing_commander` role, only `wing_id` should be specified. If a character is invited with the `squad_commander` role, both `wing_id` and `squad_id` should be specified. If a character is invited with the `squad_member` role, `wing_id` and `squad_id` should either both be specified or not specified at all. If they aren\u2019t specified, the invited character will join any squad with available positions.","enum":["fleet_commander","wing_commander","squad_commander","squad_member"],"title":"post_fleets_fleet_id_members_role","type":"string"},"squad_id":{"description":"squad_id integer","format":"int64","minimum":0,"title":"post_fleets_fleet_id_members_squad_id","type":"integer"},"wing_id":{"description":"wing_id integer","format":"int64","minimum":0,"title":"post_fleets_fleet_id_members_wing_id","type":"integer"}},"required":["character_id","role"],"title":"post_fleets_fleet_id_members_invitation","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fleet invitation sent"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_fleets_fleet_id_members_404_not_found","type":"string"}},"title":"post_fleets_fleet_id_members_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Errors in invitation","examples":{"application/json":{"error":"missing wing_id"}},"schema":{"description":"422 unprocessable entity object","properties":{"error":{"description":"error message","title":"post_fleets_fleet_id_members_error","type":"string"}},"title":"post_fleets_fleet_id_members_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Create fleet invitation","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/members/{member_id}/":{"delete":{"description":"Kick a fleet member\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/members/{member_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/members/{member_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/members/{member_id}/`\n","operationId":"delete_fleets_fleet_id_members_member_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"The character ID of a member in this fleet","format":"int32","in":"path","name":"member_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fleet member kicked"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"delete_fleets_fleet_id_members_member_id_404_not_found","type":"string"}},"title":"delete_fleets_fleet_id_members_member_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Kick fleet member","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]},"put":{"description":"Move a fleet member around\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/members/{member_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/members/{member_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/members/{member_id}/`\n","operationId":"put_fleets_fleet_id_members_member_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"The character ID of a member in this fleet","format":"int32","in":"path","name":"member_id","required":true,"type":"integer"},{"description":"Details of the invitation","in":"body","name":"movement","required":true,"schema":{"description":"movement object","properties":{"role":{"description":"If a character is moved to the `fleet_commander` role, neither `wing_id` or `squad_id` should be specified. If a character is moved to the `wing_commander` role, only `wing_id` should be specified. If a character is moved to the `squad_commander` role, both `wing_id` and `squad_id` should be specified. If a character is moved to the `squad_member` role, both `wing_id` and `squad_id` should be specified.","enum":["fleet_commander","wing_commander","squad_commander","squad_member"],"title":"put_fleets_fleet_id_members_member_id_role","type":"string"},"squad_id":{"description":"squad_id integer","format":"int64","minimum":0,"title":"put_fleets_fleet_id_members_member_id_squad_id","type":"integer"},"wing_id":{"description":"wing_id integer","format":"int64","minimum":0,"title":"put_fleets_fleet_id_members_member_id_wing_id","type":"integer"}},"required":["role"],"title":"put_fleets_fleet_id_members_member_id_movement","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Fleet invitation sent"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"put_fleets_fleet_id_members_member_id_404_not_found","type":"string"}},"title":"put_fleets_fleet_id_members_member_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Errors in invitation","examples":{"application/json":{"error":"missing wing_id"}},"schema":{"description":"422 unprocessable entity object","properties":{"error":{"description":"error message","title":"put_fleets_fleet_id_members_member_id_error","type":"string"}},"title":"put_fleets_fleet_id_members_member_id_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Move fleet member","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/squads/{squad_id}/":{"delete":{"description":"Delete a fleet squad, only empty squads can be deleted\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/squads/{squad_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/squads/{squad_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/squads/{squad_id}/`\n","operationId":"delete_fleets_fleet_id_squads_squad_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"The squad to delete","format":"int64","in":"path","name":"squad_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Squad deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"delete_fleets_fleet_id_squads_squad_id_404_not_found","type":"string"}},"title":"delete_fleets_fleet_id_squads_squad_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Delete fleet squad","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]},"put":{"description":"Rename a fleet squad\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/squads/{squad_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/squads/{squad_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/squads/{squad_id}/`\n","operationId":"put_fleets_fleet_id_squads_squad_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"New name of the squad","in":"body","name":"naming","required":true,"schema":{"description":"naming object","properties":{"name":{"description":"name string","maxLength":10,"title":"put_fleets_fleet_id_squads_squad_id_name","type":"string"}},"required":["name"],"title":"put_fleets_fleet_id_squads_squad_id_naming","type":"object"}},{"description":"The squad to rename","format":"int64","in":"path","name":"squad_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Squad renamed"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"put_fleets_fleet_id_squads_squad_id_404_not_found","type":"string"}},"title":"put_fleets_fleet_id_squads_squad_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Rename fleet squad","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/wings/":{"get":{"description":"Return information about wings in a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_fleets_fleet_id_wings","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of fleet wings","examples":{"application/json":[{"id":2073711261968,"name":"Wing 1","squads":[{"id":3129411261968,"name":"Squad 1"}]}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"id":{"description":"id integer","format":"int64","title":"get_fleets_fleet_id_wings_id","type":"integer"},"name":{"description":"name string","title":"get_fleets_fleet_id_wings_name","type":"string"},"squads":{"description":"squads array","items":{"description":"squad object","properties":{"id":{"description":"id integer","format":"int64","title":"get_fleets_fleet_id_wings_squad_id","type":"integer"},"name":{"description":"name string","title":"get_fleets_fleet_id_wings_squad_name","type":"string"}},"required":["name","id"],"title":"get_fleets_fleet_id_wings_squad","type":"object"},"maxItems":25,"title":"get_fleets_fleet_id_wings_squads","type":"array"}},"required":["name","id","squads"],"title":"get_fleets_fleet_id_wings_200_ok","type":"object"},"maxItems":25,"title":"get_fleets_fleet_id_wings_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_fleets_fleet_id_wings_404_not_found","type":"string"}},"title":"get_fleets_fleet_id_wings_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.read_fleet.v1"]}],"summary":"Get fleet wings","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":5},"post":{"description":"Create a new wing in a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/`\n","operationId":"post_fleets_fleet_id_wings","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"201":{"description":"Wing created","examples":{"application/json":{"wing_id":123}},"schema":{"description":"201 created object","properties":{"wing_id":{"description":"The wing_id of the newly created wing","format":"int64","title":"post_fleets_fleet_id_wings_wing_id","type":"integer"}},"required":["wing_id"],"title":"post_fleets_fleet_id_wings_created","type":"object"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_fleets_fleet_id_wings_404_not_found","type":"string"}},"title":"post_fleets_fleet_id_wings_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Create fleet wing","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/wings/{wing_id}/":{"delete":{"description":"Delete a fleet wing, only empty wings can be deleted. The wing may contain squads, but the squads must be empty\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/{wing_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/{wing_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/{wing_id}/`\n","operationId":"delete_fleets_fleet_id_wings_wing_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"},{"description":"The wing to delete","format":"int64","in":"path","name":"wing_id","required":true,"type":"integer"}],"responses":{"204":{"description":"Wing deleted"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"delete_fleets_fleet_id_wings_wing_id_404_not_found","type":"string"}},"title":"delete_fleets_fleet_id_wings_wing_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Delete fleet wing","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]},"put":{"description":"Rename a fleet wing\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/{wing_id}/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/{wing_id}/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/{wing_id}/`\n","operationId":"put_fleets_fleet_id_wings_wing_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"description":"New name of the wing","in":"body","name":"naming","required":true,"schema":{"description":"naming object","properties":{"name":{"description":"name string","maxLength":10,"title":"put_fleets_fleet_id_wings_wing_id_name","type":"string"}},"required":["name"],"title":"put_fleets_fleet_id_wings_wing_id_naming","type":"object"}},{"$ref":"#/parameters/token"},{"description":"The wing to rename","format":"int64","in":"path","name":"wing_id","required":true,"type":"integer"}],"responses":{"204":{"description":"Wing renamed"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"put_fleets_fleet_id_wings_wing_id_404_not_found","type":"string"}},"title":"put_fleets_fleet_id_wings_wing_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Rename fleet wing","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fleets/{fleet_id}/wings/{wing_id}/squads/":{"post":{"description":"Create a new squad in a fleet\n\n---\nAlternate route: `/dev/fleets/{fleet_id}/wings/{wing_id}/squads/`\n\nAlternate route: `/legacy/fleets/{fleet_id}/wings/{wing_id}/squads/`\n\nAlternate route: `/v1/fleets/{fleet_id}/wings/{wing_id}/squads/`\n","operationId":"post_fleets_fleet_id_wings_wing_id_squads","parameters":[{"$ref":"#/parameters/datasource"},{"description":"ID for a fleet","format":"int64","in":"path","name":"fleet_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"},{"description":"The wing_id to create squad in","format":"int64","in":"path","name":"wing_id","required":true,"type":"integer"}],"responses":{"201":{"description":"Squad created","examples":{"application/json":{"squad_id":123}},"schema":{"description":"201 created object","properties":{"squad_id":{"description":"The squad_id of the newly created squad","format":"int64","title":"post_fleets_fleet_id_wings_wing_id_squads_squad_id","type":"integer"}},"required":["squad_id"],"title":"post_fleets_fleet_id_wings_wing_id_squads_created","type":"object"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"The fleet does not exist or you don't have access to it","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_fleets_fleet_id_wings_wing_id_squads_404_not_found","type":"string"}},"title":"post_fleets_fleet_id_wings_wing_id_squads_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-fleets.write_fleet.v1"]}],"summary":"Create fleet squad","tags":["Fleets"],"x-alternate-versions":["dev","legacy","v1"]}},"/fw/leaderboards/":{"get":{"description":"Top 4 leaderboard of factions for kills and victory points separated by total, last week and yesterday\n\n---\nAlternate route: `/dev/fw/leaderboards/`\n\nAlternate route: `/legacy/fw/leaderboards/`\n\nAlternate route: `/v1/fw/leaderboards/`\n\nAlternate route: `/v2/fw/leaderboards/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_leaderboards","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Corporation leaderboard of kills and victory points within faction warfare","examples":{"application/json":{"kills":{"active_total":[{"amount":832273,"faction_id":500004},{"amount":687915,"faction_id":500001}],"last_week":[{"amount":730,"faction_id":500001},{"amount":671,"faction_id":500004}],"yesterday":[{"amount":100,"faction_id":500001},{"amount":50,"faction_id":500004}]},"victory_points":{"active_total":[{"amount":53130500,"faction_id":500001},{"amount":50964263,"faction_id":500004}],"last_week":[{"amount":97360,"faction_id":500001},{"amount":84980,"faction_id":500004}],"yesterday":[{"amount":5000,"faction_id":500002},{"amount":3500,"faction_id":500003}]}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"kills":{"description":"Top 4 rankings of factions by number of kills from yesterday, last week and in total","properties":{"active_total":{"description":"Top 4 ranking of factions active in faction warfare by total kills. A faction is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_amount","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_faction_id","type":"integer"}},"title":"get_fw_leaderboards_active_total_active_total","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_active_total","type":"array"},"last_week":{"description":"Top 4 ranking of factions by kills in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_last_week_amount","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_last_week_faction_id","type":"integer"}},"title":"get_fw_leaderboards_last_week_last_week","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_last_week","type":"array"},"yesterday":{"description":"Top 4 ranking of factions by kills in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_yesterday_amount","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_yesterday_faction_id","type":"integer"}},"title":"get_fw_leaderboards_yesterday_yesterday","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_kills","type":"object"},"victory_points":{"description":"Top 4 rankings of factions by victory points from yesterday, last week and in total","properties":{"active_total":{"description":"Top 4 ranking of factions active in faction warfare by total victory points. A faction is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_active_total_amount","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_active_total_faction_id","type":"integer"}},"title":"get_fw_leaderboards_active_total_active_total_1","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_victory_points_active_total","type":"array"},"last_week":{"description":"Top 4 ranking of factions by victory points in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_last_week_amount_1","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_last_week_faction_id_1","type":"integer"}},"title":"get_fw_leaderboards_last_week_last_week_1","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_victory_points_last_week","type":"array"},"yesterday":{"description":"Top 4 ranking of factions by victory points in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_yesterday_amount_1","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_leaderboards_yesterday_faction_id_1","type":"integer"}},"title":"get_fw_leaderboards_yesterday_yesterday_1","type":"object"},"maxItems":4,"title":"get_fw_leaderboards_victory_points_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_fw_leaderboards_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List of the top factions in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/fw/leaderboards/characters/":{"get":{"description":"Top 100 leaderboard of pilots for kills and victory points separated by total, last week and yesterday\n\n---\nAlternate route: `/dev/fw/leaderboards/characters/`\n\nAlternate route: `/legacy/fw/leaderboards/characters/`\n\nAlternate route: `/v1/fw/leaderboards/characters/`\n\nAlternate route: `/v2/fw/leaderboards/characters/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_leaderboards_characters","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Character leaderboard of kills and victory points within faction warfare","examples":{"application/json":{"kills":{"active_total":[{"amount":10000,"character_id":2112625428},{"amount":8500,"character_id":95465499}],"last_week":[{"amount":100,"character_id":2112625428},{"amount":70,"character_id":95465499}],"yesterday":[{"amount":34,"character_id":2112625428},{"amount":20,"character_id":95465499}]},"victory_points":{"active_total":[{"amount":1239158,"character_id":2112625428},{"amount":1139029,"character_id":95465499}],"last_week":[{"amount":2660,"character_id":2112625428},{"amount":2000,"character_id":95465499}],"yesterday":[{"amount":620,"character_id":2112625428},{"amount":550,"character_id":95465499}]}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"kills":{"description":"Top 100 rankings of pilots by number of kills from yesterday, last week and in total","properties":{"active_total":{"description":"Top 100 ranking of pilots active in faction warfare by total kills. A pilot is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_characters_amount","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_character_id","type":"integer"}},"title":"get_fw_leaderboards_characters_active_total_active_total","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_active_total","type":"array"},"last_week":{"description":"Top 100 ranking of pilots by kills in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_characters_last_week_amount","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_last_week_character_id","type":"integer"}},"title":"get_fw_leaderboards_characters_last_week_last_week","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_last_week","type":"array"},"yesterday":{"description":"Top 100 ranking of pilots by kills in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_characters_yesterday_amount","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_yesterday_character_id","type":"integer"}},"title":"get_fw_leaderboards_characters_yesterday_yesterday","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_characters_kills","type":"object"},"victory_points":{"description":"Top 100 rankings of pilots by victory points from yesterday, last week and in total","properties":{"active_total":{"description":"Top 100 ranking of pilots active in faction warfare by total victory points. A pilot is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_characters_active_total_amount","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_active_total_character_id","type":"integer"}},"title":"get_fw_leaderboards_characters_active_total_active_total_1","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_victory_points_active_total","type":"array"},"last_week":{"description":"Top 100 ranking of pilots by victory points in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_characters_last_week_amount_1","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_last_week_character_id_1","type":"integer"}},"title":"get_fw_leaderboards_characters_last_week_last_week_1","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_victory_points_last_week","type":"array"},"yesterday":{"description":"Top 100 ranking of pilots by victory points in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_characters_yesterday_amount_1","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_fw_leaderboards_characters_yesterday_character_id_1","type":"integer"}},"title":"get_fw_leaderboards_characters_yesterday_yesterday_1","type":"object"},"maxItems":100,"title":"get_fw_leaderboards_characters_victory_points_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_characters_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_fw_leaderboards_characters_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List of the top pilots in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/fw/leaderboards/corporations/":{"get":{"description":"Top 10 leaderboard of corporations for kills and victory points separated by total, last week and yesterday\n\n---\nAlternate route: `/dev/fw/leaderboards/corporations/`\n\nAlternate route: `/legacy/fw/leaderboards/corporations/`\n\nAlternate route: `/v1/fw/leaderboards/corporations/`\n\nAlternate route: `/v2/fw/leaderboards/corporations/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_leaderboards_corporations","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Corporation leaderboard of kills and victory points within faction warfare","examples":{"application/json":{"kills":{"active_total":[{"amount":81692,"corporation_id":1000180},{"amount":76793,"corporation_id":1000182}],"last_week":[{"amount":290,"corporation_id":1000180},{"amount":169,"corporation_id":1000182}],"yesterday":[{"amount":51,"corporation_id":1000180},{"amount":39,"corporation_id":1000182}]},"victory_points":{"active_total":[{"amount":18640927,"corporation_id":1000180},{"amount":18078265,"corporation_id":1000181}],"last_week":[{"amount":91980,"corporation_id":1000180},{"amount":58920,"corporation_id":1000181}],"yesterday":[{"amount":12600,"corporation_id":1000180},{"amount":8240,"corporation_id":1000181}]}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"kills":{"description":"Top 10 rankings of corporations by number of kills from yesterday, last week and in total","properties":{"active_total":{"description":"Top 10 ranking of corporations active in faction warfare by total kills. A corporation is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_corporations_amount","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_corporation_id","type":"integer"}},"title":"get_fw_leaderboards_corporations_active_total_active_total","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_active_total","type":"array"},"last_week":{"description":"Top 10 ranking of corporations by kills in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_corporations_last_week_amount","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_last_week_corporation_id","type":"integer"}},"title":"get_fw_leaderboards_corporations_last_week_last_week","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_last_week","type":"array"},"yesterday":{"description":"Top 10 ranking of corporations by kills in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of kills","format":"int32","title":"get_fw_leaderboards_corporations_yesterday_amount","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_yesterday_corporation_id","type":"integer"}},"title":"get_fw_leaderboards_corporations_yesterday_yesterday","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_corporations_kills","type":"object"},"victory_points":{"description":"Top 10 rankings of corporations by victory points from yesterday, last week and in total","properties":{"active_total":{"description":"Top 10 ranking of corporations active in faction warfare by total victory points. A corporation is considered \"active\" if they have participated in faction warfare in the past 14 days","items":{"description":"active_total object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_corporations_active_total_amount","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_active_total_corporation_id","type":"integer"}},"title":"get_fw_leaderboards_corporations_active_total_active_total_1","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_victory_points_active_total","type":"array"},"last_week":{"description":"Top 10 ranking of corporations by victory points in the past week","items":{"description":"last_week object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_corporations_last_week_amount_1","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_last_week_corporation_id_1","type":"integer"}},"title":"get_fw_leaderboards_corporations_last_week_last_week_1","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_victory_points_last_week","type":"array"},"yesterday":{"description":"Top 10 ranking of corporations by victory points in the past day","items":{"description":"yesterday object","properties":{"amount":{"description":"Amount of victory points","format":"int32","title":"get_fw_leaderboards_corporations_yesterday_amount_1","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_fw_leaderboards_corporations_yesterday_corporation_id_1","type":"integer"}},"title":"get_fw_leaderboards_corporations_yesterday_yesterday_1","type":"object"},"maxItems":10,"title":"get_fw_leaderboards_corporations_victory_points_yesterday","type":"array"}},"required":["yesterday","last_week","active_total"],"title":"get_fw_leaderboards_corporations_victory_points","type":"object"}},"required":["kills","victory_points"],"title":"get_fw_leaderboards_corporations_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List of the top corporations in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/fw/stats/":{"get":{"description":"Statistical overviews of factions involved in faction warfare\n\n---\nAlternate route: `/dev/fw/stats/`\n\nAlternate route: `/legacy/fw/stats/`\n\nAlternate route: `/v1/fw/stats/`\n\nAlternate route: `/v2/fw/stats/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_stats","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Per faction breakdown of faction warfare statistics","examples":{"application/json":[{"faction_id":500001,"kills":{"last_week":893,"total":684350,"yesterday":136},"pilots":28863,"systems_controlled":20,"victory_points":{"last_week":102640,"total":52658260,"yesterday":15980}}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_stats_faction_id","type":"integer"},"kills":{"description":"Summary of kills against an enemy faction for the given faction","properties":{"last_week":{"description":"Last week's total number of kills against enemy factions","format":"int32","title":"get_fw_stats_last_week","type":"integer"},"total":{"description":"Total number of kills against enemy factions since faction warfare began","format":"int32","title":"get_fw_stats_total","type":"integer"},"yesterday":{"description":"Yesterday's total number of kills against enemy factions","format":"int32","title":"get_fw_stats_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_fw_stats_kills","type":"object"},"pilots":{"description":"How many pilots fight for the given faction","format":"int32","title":"get_fw_stats_pilots","type":"integer"},"systems_controlled":{"description":"The number of solar systems controlled by the given faction","format":"int32","title":"get_fw_stats_systems_controlled","type":"integer"},"victory_points":{"description":"Summary of victory points gained for the given faction","properties":{"last_week":{"description":"Last week's victory points gained","format":"int32","title":"get_fw_stats_victory_points_last_week","type":"integer"},"total":{"description":"Total victory points gained since faction warfare began","format":"int32","title":"get_fw_stats_victory_points_total","type":"integer"},"yesterday":{"description":"Yesterday's victory points gained","format":"int32","title":"get_fw_stats_victory_points_yesterday","type":"integer"}},"required":["yesterday","last_week","total"],"title":"get_fw_stats_victory_points","type":"object"}},"required":["faction_id","pilots","systems_controlled","kills","victory_points"],"title":"get_fw_stats_200_ok","type":"object"},"maxItems":4,"title":"get_fw_stats_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"An overview of statistics about factions involved in faction warfare","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/fw/systems/":{"get":{"description":"An overview of the current ownership of faction warfare solar systems\n\n---\nAlternate route: `/dev/fw/systems/`\n\nAlternate route: `/v2/fw/systems/`\n\nAlternate route: `/v3/fw/systems/`\n\n---\nThis route is cached for up to 1800 seconds","operationId":"get_fw_systems","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"All faction warfare solar systems","examples":{"application/json":[{"contested":"uncontested","occupier_faction_id":500001,"owner_faction_id":500001,"solar_system_id":30002096,"victory_points":60,"victory_points_threshold":3000}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"contested":{"description":"contested string","enum":["captured","contested","uncontested","vulnerable"],"title":"get_fw_systems_contested","type":"string"},"occupier_faction_id":{"description":"occupier_faction_id integer","format":"int32","title":"get_fw_systems_occupier_faction_id","type":"integer"},"owner_faction_id":{"description":"owner_faction_id integer","format":"int32","title":"get_fw_systems_owner_faction_id","type":"integer"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_fw_systems_solar_system_id","type":"integer"},"victory_points":{"description":"victory_points integer","format":"int32","title":"get_fw_systems_victory_points","type":"integer"},"victory_points_threshold":{"description":"victory_points_threshold integer","format":"int32","title":"get_fw_systems_victory_points_threshold","type":"integer"}},"required":["solar_system_id","occupier_faction_id","owner_faction_id","victory_points","victory_points_threshold","contested"],"title":"get_fw_systems_200_ok","type":"object"},"maxItems":171,"title":"get_fw_systems_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Ownership of faction warfare systems","tags":["Faction Warfare"],"x-alternate-versions":["dev","v2","v3"],"x-cached-seconds":1800}},"/fw/wars/":{"get":{"description":"Data about which NPC factions are at war\n\n---\nAlternate route: `/dev/fw/wars/`\n\nAlternate route: `/legacy/fw/wars/`\n\nAlternate route: `/v1/fw/wars/`\n\nAlternate route: `/v2/fw/wars/`\n\n---\nThis route expires daily at 11:05","operationId":"get_fw_wars","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of NPC factions at war","examples":{"application/json":[{"against_id":500002,"faction_id":500001}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"List of factions at war","items":{"description":"200 ok object","properties":{"against_id":{"description":"The faction ID of the enemy faction.","format":"int32","title":"get_fw_wars_against_id","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_fw_wars_faction_id","type":"integer"}},"required":["faction_id","against_id"],"title":"get_fw_wars_200_ok","type":"object"},"maxItems":8,"title":"get_fw_wars_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Data about which NPC factions are at war","tags":["Faction Warfare"],"x-alternate-versions":["dev","legacy","v1","v2"]}},"/incursions/":{"get":{"description":"Return a list of current incursions\n\n---\nAlternate route: `/dev/incursions/`\n\nAlternate route: `/legacy/incursions/`\n\nAlternate route: `/v1/incursions/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_incursions","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of incursions","examples":{"application/json":[{"constellation_id":20000607,"faction_id":500019,"has_boss":true,"infested_solar_systems":[30004148,30004149,30004150,30004151,30004152,30004153,30004154],"influence":0.9,"staging_solar_system_id":30004154,"state":"mobilizing","type":"Incursion"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"constellation_id":{"description":"The constellation id in which this incursion takes place","format":"int32","title":"get_incursions_constellation_id","type":"integer"},"faction_id":{"description":"The attacking faction's id","format":"int32","title":"get_incursions_faction_id","type":"integer"},"has_boss":{"description":"Whether the final encounter has boss or not","title":"get_incursions_has_boss","type":"boolean"},"infested_solar_systems":{"description":"A list of infested solar system ids that are a part of this incursion","items":{"description":"infested_solar_system integer","format":"int32","title":"get_incursions_infested_solar_system","type":"integer"},"maxItems":100,"title":"get_incursions_infested_solar_systems","type":"array"},"influence":{"description":"Influence of this incursion as a float from 0 to 1","format":"float","title":"get_incursions_influence","type":"number"},"staging_solar_system_id":{"description":"Staging solar system for this incursion","format":"int32","title":"get_incursions_staging_solar_system_id","type":"integer"},"state":{"description":"The state of this incursion","enum":["withdrawing","mobilizing","established"],"title":"get_incursions_state","type":"string"},"type":{"description":"The type of this incursion","title":"get_incursions_type","type":"string"}},"required":["type","state","influence","has_boss","faction_id","constellation_id","staging_solar_system_id","infested_solar_systems"],"title":"get_incursions_200_ok","type":"object"},"maxItems":100,"title":"get_incursions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List incursions","tags":["Incursions"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/industry/facilities/":{"get":{"description":"Return a list of industry facilities\n\n---\nAlternate route: `/dev/industry/facilities/`\n\nAlternate route: `/legacy/industry/facilities/`\n\nAlternate route: `/v1/industry/facilities/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_industry_facilities","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of facilities","examples":{"application/json":[{"facility_id":60012544,"owner_id":1000126,"region_id":10000001,"solar_system_id":30000032,"tax":0.1,"type_id":2502}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"facility_id":{"description":"ID of the facility","format":"int64","title":"get_industry_facilities_facility_id","type":"integer"},"owner_id":{"description":"Owner of the facility","format":"int32","title":"get_industry_facilities_owner_id","type":"integer"},"region_id":{"description":"Region ID where the facility is","format":"int32","title":"get_industry_facilities_region_id","type":"integer"},"solar_system_id":{"description":"Solar system ID where the facility is","format":"int32","title":"get_industry_facilities_solar_system_id","type":"integer"},"tax":{"description":"Tax imposed by the facility","format":"float","title":"get_industry_facilities_tax","type":"number"},"type_id":{"description":"Type ID of the facility","format":"int32","title":"get_industry_facilities_type_id","type":"integer"}},"required":["facility_id","owner_id","type_id","solar_system_id","region_id"],"title":"get_industry_facilities_200_ok","type":"object"},"maxItems":10000,"title":"get_industry_facilities_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List industry facilities","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/industry/systems/":{"get":{"description":"Return cost indices for solar systems\n\n---\nAlternate route: `/dev/industry/systems/`\n\nAlternate route: `/legacy/industry/systems/`\n\nAlternate route: `/v1/industry/systems/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_industry_systems","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of cost indicies","examples":{"application/json":[{"cost_indices":[{"activity":"invention","cost_index":0.0048}],"solar_system_id":30011392}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"cost_indices":{"description":"cost_indices array","items":{"description":"cost_indice object","properties":{"activity":{"description":"activity string","enum":["copying","duplicating","invention","manufacturing","none","reaction","researching_material_efficiency","researching_technology","researching_time_efficiency","reverse_engineering"],"title":"get_industry_systems_activity","type":"string"},"cost_index":{"description":"cost_index number","format":"float","title":"get_industry_systems_cost_index","type":"number"}},"required":["activity","cost_index"],"title":"get_industry_systems_cost_indice","type":"object"},"maxItems":10,"title":"get_industry_systems_cost_indices","type":"array"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_industry_systems_solar_system_id","type":"integer"}},"required":["solar_system_id","cost_indices"],"title":"get_industry_systems_200_ok","type":"object"},"maxItems":10000,"title":"get_industry_systems_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List solar system cost indices","tags":["Industry"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/insurance/prices/":{"get":{"description":"Return available insurance levels for all ship types\n\n---\nAlternate route: `/dev/insurance/prices/`\n\nAlternate route: `/legacy/insurance/prices/`\n\nAlternate route: `/v1/insurance/prices/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_insurance_prices","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of insurance levels for all ship types","examples":{"application/json":[{"levels":[{"cost":10.01,"name":"Basic","payout":20.01}],"type_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"levels":{"description":"A list of a available insurance levels for this ship type","items":{"description":"level object","properties":{"cost":{"description":"cost number","format":"float","title":"get_insurance_prices_cost","type":"number"},"name":{"description":"Localized insurance level","title":"get_insurance_prices_name","type":"string"},"payout":{"description":"payout number","format":"float","title":"get_insurance_prices_payout","type":"number"}},"required":["cost","payout","name"],"title":"get_insurance_prices_level","type":"object"},"maxItems":6,"title":"get_insurance_prices_levels","type":"array"},"type_id":{"description":"type_id integer","format":"int32","title":"get_insurance_prices_type_id","type":"integer"}},"required":["type_id","levels"],"title":"get_insurance_prices_200_ok","type":"object"},"maxItems":1000,"title":"get_insurance_prices_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List insurance levels","tags":["Insurance"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/killmails/{killmail_id}/{killmail_hash}/":{"get":{"description":"Return a single killmail from its ID and hash\n\n---\nAlternate route: `/dev/killmails/{killmail_id}/{killmail_hash}/`\n\nAlternate route: `/legacy/killmails/{killmail_id}/{killmail_hash}/`\n\nAlternate route: `/v1/killmails/{killmail_id}/{killmail_hash}/`\n\n---\nThis route is cached for up to 30758400 seconds","operationId":"get_killmails_killmail_id_killmail_hash","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"The killmail hash for verification","in":"path","name":"killmail_hash","required":true,"type":"string"},{"description":"The killmail ID to be queried","format":"int32","in":"path","name":"killmail_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A killmail","examples":{"application/json":{"attackers":[{"character_id":95810944,"corporation_id":1000179,"damage_done":5745,"faction_id":500003,"final_blow":true,"security_status":-0.3,"ship_type_id":17841,"weapon_type_id":3074}],"killmail_id":56733821,"killmail_time":"2016-10-22T17:13:36Z","solar_system_id":30002976,"victim":{"alliance_id":621338554,"character_id":92796241,"corporation_id":841363671,"damage_taken":5745,"items":[{"flag":20,"item_type_id":5973,"quantity_dropped":1,"singleton":0}],"position":{"x":452186600569.4748,"y":146704961490.90222,"z":109514596532.54477},"ship_type_id":17812}}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"attackers":{"description":"attackers array","items":{"description":"attacker object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_alliance_id","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_character_id","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_corporation_id","type":"integer"},"damage_done":{"description":"damage_done integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_damage_done","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_faction_id","type":"integer"},"final_blow":{"description":"Was the attacker the one to achieve the final blow\n","title":"get_killmails_killmail_id_killmail_hash_final_blow","type":"boolean"},"security_status":{"description":"Security status for the attacker\n","format":"float","title":"get_killmails_killmail_id_killmail_hash_security_status","type":"number"},"ship_type_id":{"description":"What ship was the attacker flying\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_ship_type_id","type":"integer"},"weapon_type_id":{"description":"What weapon was used by the attacker for the kill\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_weapon_type_id","type":"integer"}},"required":["security_status","final_blow","damage_done"],"title":"get_killmails_killmail_id_killmail_hash_attacker","type":"object"},"maxItems":10000,"title":"get_killmails_killmail_id_killmail_hash_attackers","type":"array"},"killmail_id":{"description":"ID of the killmail","format":"int32","title":"get_killmails_killmail_id_killmail_hash_killmail_id","type":"integer"},"killmail_time":{"description":"Time that the victim was killed and the killmail generated\n","format":"date-time","title":"get_killmails_killmail_id_killmail_hash_killmail_time","type":"string"},"moon_id":{"description":"Moon if the kill took place at one","format":"int32","title":"get_killmails_killmail_id_killmail_hash_moon_id","type":"integer"},"solar_system_id":{"description":"Solar system that the kill took place in\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_solar_system_id","type":"integer"},"victim":{"description":"victim object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_alliance_id","type":"integer"},"character_id":{"description":"character_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_character_id","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_corporation_id","type":"integer"},"damage_taken":{"description":"How much total damage was taken by the victim\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_damage_taken","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_faction_id","type":"integer"},"items":{"description":"items array","items":{"description":"item object","properties":{"flag":{"description":"Flag for the location of the item\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_flag","type":"integer"},"item_type_id":{"description":"item_type_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_item_type_id","type":"integer"},"items":{"description":"items array","items":{"description":"item object","properties":{"flag":{"description":"flag integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_item_flag","type":"integer"},"item_type_id":{"description":"item_type_id integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_item_item_type_id","type":"integer"},"quantity_destroyed":{"description":"quantity_destroyed integer","format":"int64","title":"get_killmails_killmail_id_killmail_hash_item_quantity_destroyed","type":"integer"},"quantity_dropped":{"description":"quantity_dropped integer","format":"int64","title":"get_killmails_killmail_id_killmail_hash_item_quantity_dropped","type":"integer"},"singleton":{"description":"singleton integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_item_singleton","type":"integer"}},"required":["item_type_id","singleton","flag"],"title":"get_killmails_killmail_id_killmail_hash_items_item","type":"object"},"maxItems":10000,"title":"get_killmails_killmail_id_killmail_hash_item_items","type":"array"},"quantity_destroyed":{"description":"How many of the item were destroyed if any\n","format":"int64","title":"get_killmails_killmail_id_killmail_hash_quantity_destroyed","type":"integer"},"quantity_dropped":{"description":"How many of the item were dropped if any\n","format":"int64","title":"get_killmails_killmail_id_killmail_hash_quantity_dropped","type":"integer"},"singleton":{"description":"singleton integer","format":"int32","title":"get_killmails_killmail_id_killmail_hash_singleton","type":"integer"}},"required":["item_type_id","singleton","flag"],"title":"get_killmails_killmail_id_killmail_hash_item","type":"object"},"maxItems":10000,"title":"get_killmails_killmail_id_killmail_hash_items","type":"array"},"position":{"description":"Coordinates of the victim in Cartesian space relative to the Sun\n","properties":{"x":{"description":"x number","format":"double","title":"get_killmails_killmail_id_killmail_hash_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_killmails_killmail_id_killmail_hash_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_killmails_killmail_id_killmail_hash_z","type":"number"}},"required":["x","y","z"],"title":"get_killmails_killmail_id_killmail_hash_position","type":"object"},"ship_type_id":{"description":"The ship that the victim was piloting and was destroyed\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_victim_ship_type_id","type":"integer"}},"required":["damage_taken","ship_type_id"],"title":"get_killmails_killmail_id_killmail_hash_victim","type":"object"},"war_id":{"description":"War if the killmail is generated in relation to an official war\n","format":"int32","title":"get_killmails_killmail_id_killmail_hash_war_id","type":"integer"}},"required":["killmail_id","killmail_time","victim","attackers","solar_system_id"],"title":"get_killmails_killmail_id_killmail_hash_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Invalid killmail_id and/or killmail_hash","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_killmails_killmail_id_killmail_hash_422_unprocessable_entity","type":"string"}},"title":"get_killmails_killmail_id_killmail_hash_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get a single killmail","tags":["Killmails"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":30758400}},"/loyalty/stores/{corporation_id}/offers/":{"get":{"description":"Return a list of offers from a specific corporation's loyalty store\n\n---\nAlternate route: `/dev/loyalty/stores/{corporation_id}/offers/`\n\nAlternate route: `/legacy/loyalty/stores/{corporation_id}/offers/`\n\nAlternate route: `/v1/loyalty/stores/{corporation_id}/offers/`\n\n---\nThis route expires daily at 11:05","operationId":"get_loyalty_stores_corporation_id_offers","parameters":[{"$ref":"#/parameters/corporation_id"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of offers","examples":{"application/json":[{"ak_cost":35000,"isk_cost":0,"lp_cost":100,"offer_id":1,"quantity":1,"required_items":[],"type_id":123},{"isk_cost":1000,"lp_cost":100,"offer_id":2,"quantity":10,"required_items":[{"quantity":10,"type_id":1234}],"type_id":1235}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"ak_cost":{"description":"Analysis kredit cost","format":"int32","title":"get_loyalty_stores_corporation_id_offers_ak_cost","type":"integer"},"isk_cost":{"description":"isk_cost integer","format":"int64","title":"get_loyalty_stores_corporation_id_offers_isk_cost","type":"integer"},"lp_cost":{"description":"lp_cost integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_lp_cost","type":"integer"},"offer_id":{"description":"offer_id integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_offer_id","type":"integer"},"quantity":{"description":"quantity integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_quantity","type":"integer"},"required_items":{"description":"required_items array","items":{"description":"required_item object","properties":{"quantity":{"description":"quantity integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_required_item_quantity","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_required_item_type_id","type":"integer"}},"required":["type_id","quantity"],"title":"get_loyalty_stores_corporation_id_offers_required_item","type":"object"},"maxItems":100,"title":"get_loyalty_stores_corporation_id_offers_required_items","type":"array"},"type_id":{"description":"type_id integer","format":"int32","title":"get_loyalty_stores_corporation_id_offers_type_id","type":"integer"}},"required":["offer_id","type_id","quantity","lp_cost","isk_cost","required_items"],"title":"get_loyalty_stores_corporation_id_offers_200_ok","type":"object"},"maxItems":10000,"title":"get_loyalty_stores_corporation_id_offers_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No loyalty point store found for the provided corporation","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_loyalty_stores_corporation_id_offers_404_not_found","type":"string"}},"title":"get_loyalty_stores_corporation_id_offers_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List loyalty store offers","tags":["Loyalty"],"x-alternate-versions":["dev","legacy","v1"]}},"/markets/groups/":{"get":{"description":"Get a list of item groups\n\n---\nAlternate route: `/dev/markets/groups/`\n\nAlternate route: `/legacy/markets/groups/`\n\nAlternate route: `/v1/markets/groups/`\n\n---\nThis route expires daily at 11:05","operationId":"get_markets_groups","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of item group ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_markets_groups_200_ok","type":"integer"},"maxItems":5000,"title":"get_markets_groups_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item groups","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"]}},"/markets/groups/{market_group_id}/":{"get":{"description":"Get information on an item group\n\n---\nAlternate route: `/dev/markets/groups/{market_group_id}/`\n\nAlternate route: `/legacy/markets/groups/{market_group_id}/`\n\nAlternate route: `/v1/markets/groups/{market_group_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_markets_groups_market_group_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"An Eve item group ID","format":"int32","in":"path","name":"market_group_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about an item group","examples":{"application/json":{"description":"Small, fast vessels suited to a variety of purposes.","market_group_id":5,"name":"Standard Frigates","parent_group_id":1361,"types":[582,583]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"description":{"description":"description string","title":"get_markets_groups_market_group_id_description","type":"string"},"market_group_id":{"description":"market_group_id integer","format":"int32","title":"get_markets_groups_market_group_id_market_group_id","type":"integer"},"name":{"description":"name string","title":"get_markets_groups_market_group_id_name","type":"string"},"parent_group_id":{"description":"parent_group_id integer","format":"int32","title":"get_markets_groups_market_group_id_parent_group_id","type":"integer"},"types":{"description":"types array","items":{"description":"type integer","format":"int32","title":"get_markets_groups_market_group_id_type","type":"integer"},"maxItems":5000,"title":"get_markets_groups_market_group_id_types","type":"array"}},"required":["market_group_id","name","description","types"],"title":"get_markets_groups_market_group_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Market group not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_markets_groups_market_group_id_404_not_found","type":"string"}},"title":"get_markets_groups_market_group_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item group information","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"]}},"/markets/prices/":{"get":{"description":"Return a list of prices\n\n---\nAlternate route: `/dev/markets/prices/`\n\nAlternate route: `/legacy/markets/prices/`\n\nAlternate route: `/v1/markets/prices/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_markets_prices","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of prices","examples":{"application/json":[{"adjusted_price":306988.09,"average_price":306292.67,"type_id":32772}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"adjusted_price":{"description":"adjusted_price number","format":"double","title":"get_markets_prices_adjusted_price","type":"number"},"average_price":{"description":"average_price number","format":"double","title":"get_markets_prices_average_price","type":"number"},"type_id":{"description":"type_id integer","format":"int32","title":"get_markets_prices_type_id","type":"integer"}},"required":["type_id"],"title":"get_markets_prices_200_ok","type":"object"},"maxItems":20000,"title":"get_markets_prices_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List market prices","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/markets/structures/{structure_id}/":{"get":{"description":"Return all orders in a structure\n\n---\nAlternate route: `/dev/markets/structures/{structure_id}/`\n\nAlternate route: `/legacy/markets/structures/{structure_id}/`\n\nAlternate route: `/v1/markets/structures/{structure_id}/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_markets_structures_structure_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"description":"Return orders in this structure","format":"int64","in":"path","name":"structure_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"A list of orders","examples":{"application/json":[{"duration":90,"is_buy_order":false,"issued":"2016-09-03T05:12:25Z","location_id":1020988381992,"min_volume":1,"order_id":4623824223,"price":9.9,"range":"region","type_id":34,"volume_remain":1296000,"volume_total":2000000}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"duration integer","format":"int32","title":"get_markets_structures_structure_id_duration","type":"integer"},"is_buy_order":{"description":"is_buy_order boolean","title":"get_markets_structures_structure_id_is_buy_order","type":"boolean"},"issued":{"description":"issued string","format":"date-time","title":"get_markets_structures_structure_id_issued","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_markets_structures_structure_id_location_id","type":"integer"},"min_volume":{"description":"min_volume integer","format":"int32","title":"get_markets_structures_structure_id_min_volume","type":"integer"},"order_id":{"description":"order_id integer","format":"int64","title":"get_markets_structures_structure_id_order_id","type":"integer"},"price":{"description":"price number","format":"double","title":"get_markets_structures_structure_id_price","type":"number"},"range":{"description":"range string","enum":["station","region","solarsystem","1","2","3","4","5","10","20","30","40"],"title":"get_markets_structures_structure_id_range","type":"string"},"type_id":{"description":"type_id integer","format":"int32","title":"get_markets_structures_structure_id_type_id","type":"integer"},"volume_remain":{"description":"volume_remain integer","format":"int32","title":"get_markets_structures_structure_id_volume_remain","type":"integer"},"volume_total":{"description":"volume_total integer","format":"int32","title":"get_markets_structures_structure_id_volume_total","type":"integer"}},"required":["order_id","type_id","location_id","volume_total","volume_remain","min_volume","price","is_buy_order","duration","issued","range"],"title":"get_markets_structures_structure_id_200_ok","type":"object"},"maxItems":1000,"title":"get_markets_structures_structure_id_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-markets.structure_markets.v1"]}],"summary":"List orders in a structure","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/markets/{region_id}/history/":{"get":{"description":"Return a list of historical market statistics for the specified type in a region\n\n---\nAlternate route: `/dev/markets/{region_id}/history/`\n\nAlternate route: `/legacy/markets/{region_id}/history/`\n\nAlternate route: `/v1/markets/{region_id}/history/`\n\n---\nThis route expires daily at 11:05","operationId":"get_markets_region_id_history","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Return statistics in this region","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"},{"description":"Return statistics for this type","format":"int32","in":"query","name":"type_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A list of historical market statistics","examples":{"application/json":[{"average":5.25,"date":"2015-05-01","highest":5.27,"lowest":5.11,"order_count":2267,"volume":16276782035}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"average":{"description":"average number","format":"double","title":"get_markets_region_id_history_average","type":"number"},"date":{"description":"The date of this historical statistic entry","format":"date","title":"get_markets_region_id_history_date","type":"string"},"highest":{"description":"highest number","format":"double","title":"get_markets_region_id_history_highest","type":"number"},"lowest":{"description":"lowest number","format":"double","title":"get_markets_region_id_history_lowest","type":"number"},"order_count":{"description":"Total number of orders happened that day","format":"int64","title":"get_markets_region_id_history_order_count","type":"integer"},"volume":{"description":"Total","format":"int64","title":"get_markets_region_id_history_volume","type":"integer"}},"required":["date","order_count","volume","highest","average","lowest"],"title":"get_markets_region_id_history_200_ok","type":"object"},"maxItems":500,"title":"get_markets_region_id_history_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Type not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_markets_region_id_history_404_not_found","type":"string"}},"title":"get_markets_region_id_history_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Not found","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_markets_region_id_history_422_unprocessable_entity","type":"string"}},"title":"get_markets_region_id_history_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}},"520":{"description":"Internal error thrown from the EVE server","examples":{"application/json":{"error":"Error 520 message"}},"schema":{"description":"Error 520","properties":{"error":{"description":"Error 520 message","title":"get_markets_region_id_history_520_error_520","type":"string"}},"title":"get_markets_region_id_history_error_520","type":"object"}}},"summary":"List historical market statistics in a region","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"]}},"/markets/{region_id}/orders/":{"get":{"description":"Return a list of orders in a region\n\n---\nAlternate route: `/dev/markets/{region_id}/orders/`\n\nAlternate route: `/legacy/markets/{region_id}/orders/`\n\nAlternate route: `/v1/markets/{region_id}/orders/`\n\n---\nThis route is cached for up to 300 seconds","operationId":"get_markets_region_id_orders","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"default":"all","description":"Filter buy/sell orders, return all orders by default. If you query without type_id, we always return both buy and sell orders","enum":["buy","sell","all"],"in":"query","name":"order_type","required":true,"type":"string"},{"$ref":"#/parameters/page"},{"description":"Return orders in this region","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"},{"description":"Return orders only for this type","format":"int32","in":"query","name":"type_id","required":false,"type":"integer"}],"responses":{"200":{"description":"A list of orders","examples":{"application/json":[{"duration":90,"is_buy_order":false,"issued":"2016-09-03T05:12:25Z","location_id":60005599,"min_volume":1,"order_id":4623824223,"price":9.9,"range":"region","system_id":30000053,"type_id":34,"volume_remain":1296000,"volume_total":2000000}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"duration":{"description":"duration integer","format":"int32","title":"get_markets_region_id_orders_duration","type":"integer"},"is_buy_order":{"description":"is_buy_order boolean","title":"get_markets_region_id_orders_is_buy_order","type":"boolean"},"issued":{"description":"issued string","format":"date-time","title":"get_markets_region_id_orders_issued","type":"string"},"location_id":{"description":"location_id integer","format":"int64","title":"get_markets_region_id_orders_location_id","type":"integer"},"min_volume":{"description":"min_volume integer","format":"int32","title":"get_markets_region_id_orders_min_volume","type":"integer"},"order_id":{"description":"order_id integer","format":"int64","title":"get_markets_region_id_orders_order_id","type":"integer"},"price":{"description":"price number","format":"double","title":"get_markets_region_id_orders_price","type":"number"},"range":{"description":"range string","enum":["station","region","solarsystem","1","2","3","4","5","10","20","30","40"],"title":"get_markets_region_id_orders_range","type":"string"},"system_id":{"description":"The solar system this order was placed","format":"int32","title":"get_markets_region_id_orders_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_markets_region_id_orders_type_id","type":"integer"},"volume_remain":{"description":"volume_remain integer","format":"int32","title":"get_markets_region_id_orders_volume_remain","type":"integer"},"volume_total":{"description":"volume_total integer","format":"int32","title":"get_markets_region_id_orders_volume_total","type":"integer"}},"required":["order_id","type_id","location_id","system_id","volume_total","volume_remain","min_volume","price","is_buy_order","duration","issued","range"],"title":"get_markets_region_id_orders_200_ok","type":"object"},"maxItems":1000,"title":"get_markets_region_id_orders_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_markets_region_id_orders_404_not_found","type":"string"}},"title":"get_markets_region_id_orders_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Not found","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_markets_region_id_orders_422_unprocessable_entity","type":"string"}},"title":"get_markets_region_id_orders_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List orders in a region","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":300}},"/markets/{region_id}/types/":{"get":{"description":"Return a list of type IDs that have active orders in the region, for efficient market indexing.\n\n---\nAlternate route: `/dev/markets/{region_id}/types/`\n\nAlternate route: `/legacy/markets/{region_id}/types/`\n\nAlternate route: `/v1/markets/{region_id}/types/`\n\n---\nThis route is cached for up to 600 seconds","operationId":"get_markets_region_id_types","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"description":"Return statistics in this region","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A list of type IDs","examples":{"application/json":[587,593,597]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_markets_region_id_types_200_ok","type":"integer"},"maxItems":1000,"title":"get_markets_region_id_types_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List type IDs relevant to a market","tags":["Market"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":600}},"/opportunities/groups/":{"get":{"description":"Return a list of opportunities groups\n\n---\nAlternate route: `/dev/opportunities/groups/`\n\nAlternate route: `/legacy/opportunities/groups/`\n\nAlternate route: `/v1/opportunities/groups/`\n\n---\nThis route expires daily at 11:05","operationId":"get_opportunities_groups","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of opportunities group ids","examples":{"application/json":[100,101,102,103]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_opportunities_groups_200_ok","type":"integer"},"maxItems":50,"title":"get_opportunities_groups_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get opportunities groups","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"]}},"/opportunities/groups/{group_id}/":{"get":{"description":"Return information of an opportunities group\n\n---\nAlternate route: `/dev/opportunities/groups/{group_id}/`\n\nAlternate route: `/legacy/opportunities/groups/{group_id}/`\n\nAlternate route: `/v1/opportunities/groups/{group_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_opportunities_groups_group_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"description":"ID of an opportunities group","format":"int32","in":"path","name":"group_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"Details of an opportunities group","examples":{"application/json":{"connected_groups":[100],"description":"As a capsuleer...","group_id":103,"name":"Welcome to New Eden","notification":"Completed:
Welcome to New Eden","required_tasks":[19]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"connected_groups":{"description":"The groups that are connected to this group on the opportunities map","items":{"description":"connected_group integer","format":"int32","title":"get_opportunities_groups_group_id_connected_group","type":"integer"},"maxItems":50,"title":"get_opportunities_groups_group_id_connected_groups","type":"array"},"description":{"description":"description string","title":"get_opportunities_groups_group_id_description","type":"string"},"group_id":{"description":"group_id integer","format":"int32","title":"get_opportunities_groups_group_id_group_id","type":"integer"},"name":{"description":"name string","title":"get_opportunities_groups_group_id_name","type":"string"},"notification":{"description":"notification string","title":"get_opportunities_groups_group_id_notification","type":"string"},"required_tasks":{"description":"Tasks need to complete for this group","items":{"description":"required_task integer","format":"int32","title":"get_opportunities_groups_group_id_required_task","type":"integer"},"maxItems":100,"title":"get_opportunities_groups_group_id_required_tasks","type":"array"}},"required":["group_id","name","description","notification","required_tasks","connected_groups"],"title":"get_opportunities_groups_group_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get opportunities group","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"]}},"/opportunities/tasks/":{"get":{"description":"Return a list of opportunities tasks\n\n---\nAlternate route: `/dev/opportunities/tasks/`\n\nAlternate route: `/legacy/opportunities/tasks/`\n\nAlternate route: `/v1/opportunities/tasks/`\n\n---\nThis route expires daily at 11:05","operationId":"get_opportunities_tasks","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of opportunities task ids","examples":{"application/json":[1,2,3,4]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_opportunities_tasks_200_ok","type":"integer"},"maxItems":100,"title":"get_opportunities_tasks_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get opportunities tasks","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"]}},"/opportunities/tasks/{task_id}/":{"get":{"description":"Return information of an opportunities task\n\n---\nAlternate route: `/dev/opportunities/tasks/{task_id}/`\n\nAlternate route: `/legacy/opportunities/tasks/{task_id}/`\n\nAlternate route: `/v1/opportunities/tasks/{task_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_opportunities_tasks_task_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"ID of an opportunities task","format":"int32","in":"path","name":"task_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Details of an opportunities task","examples":{"application/json":{"description":"To use station services...","name":"Dock in the station","notification":"Completed:
Docked in a station!","task_id":10}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"description":{"description":"description string","title":"get_opportunities_tasks_task_id_description","type":"string"},"name":{"description":"name string","title":"get_opportunities_tasks_task_id_name","type":"string"},"notification":{"description":"notification string","title":"get_opportunities_tasks_task_id_notification","type":"string"},"task_id":{"description":"task_id integer","format":"int32","title":"get_opportunities_tasks_task_id_task_id","type":"integer"}},"required":["task_id","name","description","notification"],"title":"get_opportunities_tasks_task_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get opportunities task","tags":["Opportunities"],"x-alternate-versions":["dev","legacy","v1"]}},"/route/{origin}/{destination}/":{"get":{"description":"Get the systems between origin and destination\n\n---\nAlternate route: `/dev/route/{origin}/{destination}/`\n\nAlternate route: `/legacy/route/{origin}/{destination}/`\n\nAlternate route: `/v1/route/{origin}/{destination}/`\n\n---\nThis route is cached for up to 86400 seconds","operationId":"get_route_origin_destination","parameters":[{"description":"avoid solar system ID(s)","in":"query","items":{"format":"int32","type":"integer"},"maxItems":100,"name":"avoid","type":"array","uniqueItems":true},{"description":"connected solar system pairs","in":"query","items":{"collectionFormat":"pipes","items":{"format":"int32","type":"integer"},"maxItems":2,"minItems":2,"type":"array","uniqueItems":true},"maxItems":100,"name":"connections","type":"array","uniqueItems":true},{"$ref":"#/parameters/datasource"},{"description":"destination solar system ID","format":"int32","in":"path","name":"destination","required":true,"type":"integer"},{"default":"shortest","description":"route security preference","enum":["shortest","secure","insecure"],"in":"query","name":"flag","type":"string"},{"$ref":"#/parameters/If-None-Match"},{"description":"origin solar system ID","format":"int32","in":"path","name":"origin","required":true,"type":"integer"}],"responses":{"200":{"description":"Solar systems in route from origin to destination","examples":{"application/json":[30002771,30002770,30002769,30002772]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"Solar systems in route","items":{"description":"Solar system in route","format":"int32","title":"Solar system ID","type":"integer"},"maxItems":1000,"title":"get_route_origin_destination_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"No route found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_route_origin_destination_404_not_found","type":"string"}},"title":"get_route_origin_destination_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get route","tags":["Routes"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":86400}},"/search/":{"get":{"description":"Search for entities that match a given sub-string.\n\n---\nAlternate route: `/dev/search/`\n\nAlternate route: `/legacy/search/`\n\nAlternate route: `/v2/search/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_search","parameters":[{"$ref":"#/parameters/Accept-Language"},{"description":"Type of entities to search for","in":"query","items":{"enum":["agent","alliance","character","constellation","corporation","faction","inventory_type","region","solar_system","station"],"type":"string"},"maxItems":10,"minItems":1,"name":"categories","required":true,"type":"array","uniqueItems":true},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"The string to search on","in":"query","minLength":3,"name":"search","required":true,"type":"string"},{"default":false,"description":"Whether the search should be a strict match","in":"query","name":"strict","type":"boolean"}],"responses":{"200":{"description":"A list of search results","examples":{"application/json":{"solar_system":[30002510],"station":[60004588,60004594,60005725,60009106,60012721,60012724,60012727]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"agent":{"description":"agent array","items":{"description":"agent integer","format":"int32","title":"get_search_agent_agent","type":"integer"},"maxItems":500,"title":"get_search_agent","type":"array"},"alliance":{"description":"alliance array","items":{"description":"alliance integer","format":"int32","title":"get_search_alliance_alliance","type":"integer"},"maxItems":500,"title":"get_search_alliance","type":"array"},"character":{"description":"character array","items":{"description":"character integer","format":"int32","title":"get_search_character_character","type":"integer"},"maxItems":500,"title":"get_search_character","type":"array"},"constellation":{"description":"constellation array","items":{"description":"constellation integer","format":"int32","title":"get_search_constellation_constellation","type":"integer"},"maxItems":500,"title":"get_search_constellation","type":"array"},"corporation":{"description":"corporation array","items":{"description":"corporation integer","format":"int32","title":"get_search_corporation_corporation","type":"integer"},"maxItems":500,"title":"get_search_corporation","type":"array"},"faction":{"description":"faction array","items":{"description":"faction integer","format":"int32","title":"get_search_faction_faction","type":"integer"},"maxItems":500,"title":"get_search_faction","type":"array"},"inventory_type":{"description":"inventory_type array","items":{"description":"inventory_type integer","format":"int32","title":"get_search_inventory_type_inventory_type","type":"integer"},"maxItems":500,"title":"get_search_inventory_type","type":"array"},"region":{"description":"region array","items":{"description":"region integer","format":"int32","title":"get_search_region_region","type":"integer"},"maxItems":500,"title":"get_search_region","type":"array"},"solar_system":{"description":"solar_system array","items":{"description":"solar_system integer","format":"int32","title":"get_search_solar_system_solar_system","type":"integer"},"maxItems":500,"title":"get_search_solar_system","type":"array"},"station":{"description":"station array","items":{"description":"station integer","format":"int32","title":"get_search_station_station","type":"integer"},"maxItems":500,"title":"get_search_station","type":"array"}},"title":"get_search_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Search on a string","tags":["Search"],"x-alternate-versions":["dev","legacy","v2"],"x-cached-seconds":3600}},"/sovereignty/campaigns/":{"get":{"description":"Shows sovereignty data for campaigns.\n\n---\nAlternate route: `/dev/sovereignty/campaigns/`\n\nAlternate route: `/legacy/sovereignty/campaigns/`\n\nAlternate route: `/v1/sovereignty/campaigns/`\n\n---\nThis route is cached for up to 5 seconds","operationId":"get_sovereignty_campaigns","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of sovereignty campaigns","examples":{"application/json":[{"attackers_score":0.4,"campaign_id":32833,"constellation_id":20000125,"defender_id":1695357456,"defender_score":0.6,"event_type":"station_defense","solar_system_id":30000856,"start_time":"2016-10-29T14:34:40Z","structure_id":61001096}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"attackers_score":{"description":"Score for all attacking parties, only present in Defense Events.\n","format":"float","title":"get_sovereignty_campaigns_attackers_score","type":"number"},"campaign_id":{"description":"Unique ID for this campaign.","format":"int32","title":"get_sovereignty_campaigns_campaign_id","type":"integer"},"constellation_id":{"description":"The constellation in which the campaign will take place.\n","format":"int32","title":"get_sovereignty_campaigns_constellation_id","type":"integer"},"defender_id":{"description":"Defending alliance, only present in Defense Events\n","format":"int32","title":"get_sovereignty_campaigns_defender_id","type":"integer"},"defender_score":{"description":"Score for the defending alliance, only present in Defense Events.\n","format":"float","title":"get_sovereignty_campaigns_defender_score","type":"number"},"event_type":{"description":"Type of event this campaign is for. tcu_defense, ihub_defense and station_defense are referred to as \"Defense Events\", station_freeport as \"Freeport Events\".\n","enum":["tcu_defense","ihub_defense","station_defense","station_freeport"],"title":"get_sovereignty_campaigns_event_type","type":"string"},"participants":{"description":"Alliance participating and their respective scores, only present in Freeport Events.\n","items":{"description":"participant object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_sovereignty_campaigns_alliance_id","type":"integer"},"score":{"description":"score number","format":"float","title":"get_sovereignty_campaigns_score","type":"number"}},"required":["alliance_id","score"],"title":"get_sovereignty_campaigns_participant","type":"object"},"maxItems":5000,"title":"get_sovereignty_campaigns_participants","type":"array"},"solar_system_id":{"description":"The solar system the structure is located in.\n","format":"int32","title":"get_sovereignty_campaigns_solar_system_id","type":"integer"},"start_time":{"description":"Time the event is scheduled to start.\n","format":"date-time","title":"get_sovereignty_campaigns_start_time","type":"string"},"structure_id":{"description":"The structure item ID that is related to this campaign.\n","format":"int64","title":"get_sovereignty_campaigns_structure_id","type":"integer"}},"required":["campaign_id","structure_id","solar_system_id","constellation_id","event_type","start_time"],"title":"get_sovereignty_campaigns_200_ok","type":"object"},"maxItems":10000,"title":"get_sovereignty_campaigns_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List sovereignty campaigns","tags":["Sovereignty"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":5}},"/sovereignty/map/":{"get":{"description":"Shows sovereignty information for solar systems\n\n---\nAlternate route: `/dev/sovereignty/map/`\n\nAlternate route: `/legacy/sovereignty/map/`\n\nAlternate route: `/v1/sovereignty/map/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_sovereignty_map","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of sovereignty information for solar systems in New Eden","examples":{"application/json":[{"faction_id":500001,"system_id":30045334}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"alliance_id integer","format":"int32","title":"get_sovereignty_map_alliance_id","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_sovereignty_map_corporation_id","type":"integer"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_sovereignty_map_faction_id","type":"integer"},"system_id":{"description":"system_id integer","format":"int32","title":"get_sovereignty_map_system_id","type":"integer"}},"required":["system_id"],"title":"get_sovereignty_map_200_ok","type":"object"},"maxItems":10000,"title":"get_sovereignty_map_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List sovereignty of systems","tags":["Sovereignty"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/sovereignty/structures/":{"get":{"description":"Shows sovereignty data for structures.\n\n---\nAlternate route: `/dev/sovereignty/structures/`\n\nAlternate route: `/legacy/sovereignty/structures/`\n\nAlternate route: `/v1/sovereignty/structures/`\n\n---\nThis route is cached for up to 120 seconds","operationId":"get_sovereignty_structures","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of sovereignty structures","examples":{"application/json":[{"alliance_id":498125261,"solar_system_id":30000570,"structure_id":1018253388776,"structure_type_id":32226,"vulnerability_occupancy_level":2,"vulnerable_end_time":"2016-10-29T05:30:00Z","vulnerable_start_time":"2016-10-28T20:30:00Z"}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"The alliance that owns the structure.\n","format":"int32","title":"get_sovereignty_structures_alliance_id","type":"integer"},"solar_system_id":{"description":"Solar system in which the structure is located.\n","format":"int32","title":"get_sovereignty_structures_solar_system_id","type":"integer"},"structure_id":{"description":"Unique item ID for this structure.","format":"int64","title":"get_sovereignty_structures_structure_id","type":"integer"},"structure_type_id":{"description":"A reference to the type of structure this is.\n","format":"int32","title":"get_sovereignty_structures_structure_type_id","type":"integer"},"vulnerability_occupancy_level":{"description":"The occupancy level for the next or current vulnerability window. This takes into account all development indexes and capital system bonuses. Also known as Activity Defense Multiplier from in the client. It increases the time that attackers must spend using their entosis links on the structure.\n","format":"float","title":"get_sovereignty_structures_vulnerability_occupancy_level","type":"number"},"vulnerable_end_time":{"description":"The time at which the next or current vulnerability window ends. At the end of a vulnerability window the next window is recalculated and locked in along with the vulnerabilityOccupancyLevel. If the structure is not in 100% entosis control of the defender, it will go in to 'overtime' and stay vulnerable for as long as that situation persists. Only once the defenders have 100% entosis control and has the vulnerableEndTime passed does the vulnerability interval expire and a new one is calculated.\n","format":"date-time","title":"get_sovereignty_structures_vulnerable_end_time","type":"string"},"vulnerable_start_time":{"description":"The next time at which the structure will become vulnerable. Or the start time of the current window if current time is between this and vulnerableEndTime.\n","format":"date-time","title":"get_sovereignty_structures_vulnerable_start_time","type":"string"}},"required":["alliance_id","solar_system_id","structure_id","structure_type_id"],"title":"get_sovereignty_structures_200_ok","type":"object"},"maxItems":10000,"title":"get_sovereignty_structures_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List sovereignty structures","tags":["Sovereignty"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":120}},"/status/":{"get":{"description":"EVE Server status\n\n---\nAlternate route: `/dev/status/`\n\nAlternate route: `/legacy/status/`\n\nAlternate route: `/v1/status/`\n\n---\nThis route is cached for up to 30 seconds","operationId":"get_status","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Server status","examples":{"application/json":{"players":12345,"server_version":"1132976","start_time":"2017-01-02T12:34:56Z"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"players":{"description":"Current online player count","title":"get_status_players","type":"integer"},"server_version":{"description":"Running version as string","title":"get_status_server_version","type":"string"},"start_time":{"description":"Server start timestamp","format":"date-time","title":"get_status_start_time","type":"string"},"vip":{"description":"If the server is in VIP mode","title":"get_status_vip","type":"boolean"}},"required":["start_time","players","server_version"],"title":"get_status_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Retrieve the uptime and player counts","tags":["Status"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":30}},"/ui/autopilot/waypoint/":{"post":{"description":"Set a solar system as autopilot waypoint\n\n---\nAlternate route: `/dev/ui/autopilot/waypoint/`\n\nAlternate route: `/legacy/ui/autopilot/waypoint/`\n\nAlternate route: `/v2/ui/autopilot/waypoint/`\n","operationId":"post_ui_autopilot_waypoint","parameters":[{"default":false,"description":"Whether this solar system should be added to the beginning of all waypoints","in":"query","name":"add_to_beginning","required":true,"type":"boolean"},{"default":false,"description":"Whether clean other waypoints beforing adding this one","in":"query","name":"clear_other_waypoints","required":true,"type":"boolean"},{"$ref":"#/parameters/datasource"},{"description":"The destination to travel to, can be solar system, station or structure's id","format":"int64","in":"query","name":"destination_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.write_waypoint.v1"]}],"summary":"Set Autopilot Waypoint","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v2"]}},"/ui/openwindow/contract/":{"post":{"description":"Open the contract window inside the client\n\n---\nAlternate route: `/dev/ui/openwindow/contract/`\n\nAlternate route: `/legacy/ui/openwindow/contract/`\n\nAlternate route: `/v1/ui/openwindow/contract/`\n","operationId":"post_ui_openwindow_contract","parameters":[{"description":"The contract to open","format":"int32","in":"query","name":"contract_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.open_window.v1"]}],"summary":"Open Contract Window","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v1"]}},"/ui/openwindow/information/":{"post":{"description":"Open the information window for a character, corporation or alliance inside the client\n\n---\nAlternate route: `/dev/ui/openwindow/information/`\n\nAlternate route: `/legacy/ui/openwindow/information/`\n\nAlternate route: `/v1/ui/openwindow/information/`\n","operationId":"post_ui_openwindow_information","parameters":[{"$ref":"#/parameters/datasource"},{"description":"The target to open","format":"int32","in":"query","name":"target_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.open_window.v1"]}],"summary":"Open Information Window","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v1"]}},"/ui/openwindow/marketdetails/":{"post":{"description":"Open the market details window for a specific typeID inside the client\n\n---\nAlternate route: `/dev/ui/openwindow/marketdetails/`\n\nAlternate route: `/legacy/ui/openwindow/marketdetails/`\n\nAlternate route: `/v1/ui/openwindow/marketdetails/`\n","operationId":"post_ui_openwindow_marketdetails","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/token"},{"description":"The item type to open in market window","format":"int32","in":"query","name":"type_id","required":true,"type":"integer"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.open_window.v1"]}],"summary":"Open Market Details","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v1"]}},"/ui/openwindow/newmail/":{"post":{"description":"Open the New Mail window, according to settings from the request if applicable\n\n---\nAlternate route: `/dev/ui/openwindow/newmail/`\n\nAlternate route: `/legacy/ui/openwindow/newmail/`\n\nAlternate route: `/v1/ui/openwindow/newmail/`\n","operationId":"post_ui_openwindow_newmail","parameters":[{"$ref":"#/parameters/datasource"},{"description":"The details of mail to create","in":"body","name":"new_mail","required":true,"schema":{"description":"new_mail object","properties":{"body":{"description":"body string","maxLength":10000,"title":"post_ui_openwindow_newmail_body","type":"string"},"recipients":{"description":"recipients array","items":{"description":"recipient integer","format":"int32","title":"post_ui_openwindow_newmail_recipient","type":"integer"},"maxItems":50,"minItems":1,"title":"post_ui_openwindow_newmail_recipients","type":"array"},"subject":{"description":"subject string","maxLength":1000,"title":"post_ui_openwindow_newmail_subject","type":"string"},"to_corp_or_alliance_id":{"description":"to_corp_or_alliance_id integer","format":"int32","title":"post_ui_openwindow_newmail_to_corp_or_alliance_id","type":"integer"},"to_mailing_list_id":{"description":"Corporations, alliances and mailing lists are all types of mailing groups. You may only send to one mailing group, at a time, so you may fill out either this field or the to_corp_or_alliance_ids field","format":"int32","title":"post_ui_openwindow_newmail_to_mailing_list_id","type":"integer"}},"required":["subject","body","recipients"],"title":"post_ui_openwindow_newmail_new_mail","type":"object"}},{"$ref":"#/parameters/token"}],"responses":{"204":{"description":"Open window request received"},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"Invalid request","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"post_ui_openwindow_newmail_422_unprocessable_entity","type":"string"}},"title":"post_ui_openwindow_newmail_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-ui.open_window.v1"]}],"summary":"Open New Mail Window","tags":["User Interface"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/ancestries/":{"get":{"description":"Get all character ancestries\n\n---\nAlternate route: `/dev/universe/ancestries/`\n\nAlternate route: `/legacy/universe/ancestries/`\n\nAlternate route: `/v1/universe/ancestries/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_ancestries","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of ancestries","examples":{"application/json":[{"bloodline_id":1,"description":"Acutely aware of the small population...","id":12,"name":"Tube Child","short_description":"Manufactured citizens of the State."}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"bloodline_id":{"description":"The bloodline associated with this ancestry","format":"int32","title":"get_universe_ancestries_bloodline_id","type":"integer"},"description":{"description":"description string","title":"get_universe_ancestries_description","type":"string"},"icon_id":{"description":"icon_id integer","format":"int32","title":"get_universe_ancestries_icon_id","type":"integer"},"id":{"description":"id integer","format":"int32","title":"get_universe_ancestries_id","type":"integer"},"name":{"description":"name string","title":"get_universe_ancestries_name","type":"string"},"short_description":{"description":"short_description string","title":"get_universe_ancestries_short_description","type":"string"}},"required":["id","name","bloodline_id","description"],"title":"get_universe_ancestries_200_ok","type":"object"},"maxItems":42,"title":"get_universe_ancestries_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get ancestries","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/asteroid_belts/{asteroid_belt_id}/":{"get":{"description":"Get information on an asteroid belt\n\n---\nAlternate route: `/dev/universe/asteroid_belts/{asteroid_belt_id}/`\n\nAlternate route: `/legacy/universe/asteroid_belts/{asteroid_belt_id}/`\n\nAlternate route: `/v1/universe/asteroid_belts/{asteroid_belt_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_asteroid_belts_asteroid_belt_id","parameters":[{"description":"asteroid_belt_id integer","format":"int32","in":"path","name":"asteroid_belt_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Information about an asteroid belt","examples":{"application/json":{"name":"Tanoo I - Asteroid Belt 1","position":{"x":161967513600,"y":21288837120,"z":-73505464320},"system_id":30000001}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"name":{"description":"name string","title":"get_universe_asteroid_belts_asteroid_belt_id_name","type":"string"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_asteroid_belts_asteroid_belt_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_asteroid_belts_asteroid_belt_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_asteroid_belts_asteroid_belt_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_asteroid_belts_asteroid_belt_id_position","type":"object"},"system_id":{"description":"The solar system this asteroid belt is in","format":"int32","title":"get_universe_asteroid_belts_asteroid_belt_id_system_id","type":"integer"}},"required":["name","position","system_id"],"title":"get_universe_asteroid_belts_asteroid_belt_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Asteroid belt not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_asteroid_belts_asteroid_belt_id_404_not_found","type":"string"}},"title":"get_universe_asteroid_belts_asteroid_belt_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get asteroid belt information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/bloodlines/":{"get":{"description":"Get a list of bloodlines\n\n---\nAlternate route: `/dev/universe/bloodlines/`\n\nAlternate route: `/legacy/universe/bloodlines/`\n\nAlternate route: `/v1/universe/bloodlines/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_bloodlines","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of bloodlines","examples":{"application/json":[{"bloodline_id":1,"charisma":6,"corporation_id":1000006,"description":"The Deteis are regarded as ...","intelligence":7,"memory":7,"name":"Deteis","perception":5,"race_id":1,"ship_type_id":601,"willpower":5}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"bloodline_id":{"description":"bloodline_id integer","format":"int32","title":"get_universe_bloodlines_bloodline_id","type":"integer"},"charisma":{"description":"charisma integer","format":"int32","title":"get_universe_bloodlines_charisma","type":"integer"},"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_universe_bloodlines_corporation_id","type":"integer"},"description":{"description":"description string","title":"get_universe_bloodlines_description","type":"string"},"intelligence":{"description":"intelligence integer","format":"int32","title":"get_universe_bloodlines_intelligence","type":"integer"},"memory":{"description":"memory integer","format":"int32","title":"get_universe_bloodlines_memory","type":"integer"},"name":{"description":"name string","title":"get_universe_bloodlines_name","type":"string"},"perception":{"description":"perception integer","format":"int32","title":"get_universe_bloodlines_perception","type":"integer"},"race_id":{"description":"race_id integer","format":"int32","title":"get_universe_bloodlines_race_id","type":"integer"},"ship_type_id":{"description":"ship_type_id integer","format":"int32","title":"get_universe_bloodlines_ship_type_id","type":"integer"},"willpower":{"description":"willpower integer","format":"int32","title":"get_universe_bloodlines_willpower","type":"integer"}},"required":["bloodline_id","name","description","race_id","ship_type_id","corporation_id","perception","willpower","charisma","memory","intelligence"],"title":"get_universe_bloodlines_200_ok","type":"object"},"maxItems":100,"title":"get_universe_bloodlines_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get bloodlines","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/categories/":{"get":{"description":"Get a list of item categories\n\n---\nAlternate route: `/dev/universe/categories/`\n\nAlternate route: `/legacy/universe/categories/`\n\nAlternate route: `/v1/universe/categories/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_categories","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of item category ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_categories_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_categories_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item categories","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/categories/{category_id}/":{"get":{"description":"Get information of an item category\n\n---\nAlternate route: `/dev/universe/categories/{category_id}/`\n\nAlternate route: `/legacy/universe/categories/{category_id}/`\n\nAlternate route: `/v1/universe/categories/{category_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_categories_category_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"description":"An Eve item category ID","format":"int32","in":"path","name":"category_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"Information about an item category","examples":{"application/json":{"category_id":6,"groups":[25,26,27],"name":"Ship","published":true}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"category_id":{"description":"category_id integer","format":"int32","title":"get_universe_categories_category_id_category_id","type":"integer"},"groups":{"description":"groups array","items":{"description":"group integer","format":"int32","title":"get_universe_categories_category_id_group","type":"integer"},"maxItems":10000,"title":"get_universe_categories_category_id_groups","type":"array"},"name":{"description":"name string","title":"get_universe_categories_category_id_name","type":"string"},"published":{"description":"published boolean","title":"get_universe_categories_category_id_published","type":"boolean"}},"required":["category_id","name","published","groups"],"title":"get_universe_categories_category_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Category not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_categories_category_id_404_not_found","type":"string"}},"title":"get_universe_categories_category_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item category information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/constellations/":{"get":{"description":"Get a list of constellations\n\n---\nAlternate route: `/dev/universe/constellations/`\n\nAlternate route: `/legacy/universe/constellations/`\n\nAlternate route: `/v1/universe/constellations/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_constellations","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of constellation ids","examples":{"application/json":[20000001,20000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_constellations_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_constellations_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get constellations","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/constellations/{constellation_id}/":{"get":{"description":"Get information on a constellation\n\n---\nAlternate route: `/dev/universe/constellations/{constellation_id}/`\n\nAlternate route: `/legacy/universe/constellations/{constellation_id}/`\n\nAlternate route: `/v1/universe/constellations/{constellation_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_constellations_constellation_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"description":"constellation_id integer","format":"int32","in":"path","name":"constellation_id","required":true,"type":"integer"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"Information about a constellation","examples":{"application/json":{"constellation_id":20000009,"name":"Mekashtad","position":{"x":67796138757472320,"y":-70591121348560960,"z":-59587016159270070},"region_id":10000001,"systems":[20000302,20000303]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"constellation_id":{"description":"constellation_id integer","format":"int32","title":"get_universe_constellations_constellation_id_constellation_id","type":"integer"},"name":{"description":"name string","title":"get_universe_constellations_constellation_id_name","type":"string"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_constellations_constellation_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_constellations_constellation_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_constellations_constellation_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_constellations_constellation_id_position","type":"object"},"region_id":{"description":"The region this constellation is in","format":"int32","title":"get_universe_constellations_constellation_id_region_id","type":"integer"},"systems":{"description":"systems array","items":{"description":"system integer","format":"int32","title":"get_universe_constellations_constellation_id_system","type":"integer"},"maxItems":10000,"title":"get_universe_constellations_constellation_id_systems","type":"array"}},"required":["constellation_id","name","position","region_id","systems"],"title":"get_universe_constellations_constellation_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Constellation not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_constellations_constellation_id_404_not_found","type":"string"}},"title":"get_universe_constellations_constellation_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get constellation information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/factions/":{"get":{"description":"Get a list of factions\n\n---\nAlternate route: `/dev/universe/factions/`\n\nAlternate route: `/v2/universe/factions/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_factions","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of factions","examples":{"application/json":[{"corporation_id":456,"description":"blah blah","faction_id":1,"is_unique":true,"name":"Faction","size_factor":1.0,"solar_system_id":123,"station_count":1000,"station_system_count":100}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"corporation_id":{"description":"corporation_id integer","format":"int32","title":"get_universe_factions_corporation_id","type":"integer"},"description":{"description":"description string","title":"get_universe_factions_description","type":"string"},"faction_id":{"description":"faction_id integer","format":"int32","title":"get_universe_factions_faction_id","type":"integer"},"is_unique":{"description":"is_unique boolean","title":"get_universe_factions_is_unique","type":"boolean"},"militia_corporation_id":{"description":"militia_corporation_id integer","format":"int32","title":"get_universe_factions_militia_corporation_id","type":"integer"},"name":{"description":"name string","title":"get_universe_factions_name","type":"string"},"size_factor":{"description":"size_factor number","format":"float","title":"get_universe_factions_size_factor","type":"number"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_universe_factions_solar_system_id","type":"integer"},"station_count":{"description":"station_count integer","format":"int32","title":"get_universe_factions_station_count","type":"integer"},"station_system_count":{"description":"station_system_count integer","format":"int32","title":"get_universe_factions_station_system_count","type":"integer"}},"required":["faction_id","name","description","size_factor","station_count","station_system_count","is_unique"],"title":"get_universe_factions_200_ok","type":"object"},"maxItems":10000,"title":"get_universe_factions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get factions","tags":["Universe"],"x-alternate-versions":["dev","v2"]}},"/universe/graphics/":{"get":{"description":"Get a list of graphics\n\n---\nAlternate route: `/dev/universe/graphics/`\n\nAlternate route: `/legacy/universe/graphics/`\n\nAlternate route: `/v1/universe/graphics/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_graphics","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of graphic ids","examples":{"application/json":[10,4106]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_graphics_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_graphics_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get graphics","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/graphics/{graphic_id}/":{"get":{"description":"Get information on a graphic\n\n---\nAlternate route: `/dev/universe/graphics/{graphic_id}/`\n\nAlternate route: `/legacy/universe/graphics/{graphic_id}/`\n\nAlternate route: `/v1/universe/graphics/{graphic_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_graphics_graphic_id","parameters":[{"$ref":"#/parameters/datasource"},{"description":"graphic_id integer","format":"int32","in":"path","name":"graphic_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"Information about a graphic","examples":{"application/json":{"graphic_file":"res:/dx9/model/worldobject/planet/moon.red","graphic_id":10}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"collision_file":{"description":"collision_file string","title":"get_universe_graphics_graphic_id_collision_file","type":"string"},"graphic_file":{"description":"graphic_file string","title":"get_universe_graphics_graphic_id_graphic_file","type":"string"},"graphic_id":{"description":"graphic_id integer","format":"int32","title":"get_universe_graphics_graphic_id_graphic_id","type":"integer"},"icon_folder":{"description":"icon_folder string","title":"get_universe_graphics_graphic_id_icon_folder","type":"string"},"sof_dna":{"description":"sof_dna string","title":"get_universe_graphics_graphic_id_sof_dna","type":"string"},"sof_fation_name":{"description":"sof_fation_name string","title":"get_universe_graphics_graphic_id_sof_fation_name","type":"string"},"sof_hull_name":{"description":"sof_hull_name string","title":"get_universe_graphics_graphic_id_sof_hull_name","type":"string"},"sof_race_name":{"description":"sof_race_name string","title":"get_universe_graphics_graphic_id_sof_race_name","type":"string"}},"required":["graphic_id"],"title":"get_universe_graphics_graphic_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Graphic not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_graphics_graphic_id_404_not_found","type":"string"}},"title":"get_universe_graphics_graphic_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get graphic information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/groups/":{"get":{"description":"Get a list of item groups\n\n---\nAlternate route: `/dev/universe/groups/`\n\nAlternate route: `/legacy/universe/groups/`\n\nAlternate route: `/v1/universe/groups/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_groups","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"}],"responses":{"200":{"description":"A list of item group ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_groups_200_ok","type":"integer"},"maxItems":1000,"title":"get_universe_groups_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item groups","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/groups/{group_id}/":{"get":{"description":"Get information on an item group\n\n---\nAlternate route: `/dev/universe/groups/{group_id}/`\n\nAlternate route: `/legacy/universe/groups/{group_id}/`\n\nAlternate route: `/v1/universe/groups/{group_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_groups_group_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"description":"An Eve item group ID","format":"int32","in":"path","name":"group_id","required":true,"type":"integer"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"Information about an item group","examples":{"application/json":{"category_id":6,"group_id":25,"name":"Frigate","published":true,"types":[587,586,585]}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"category_id":{"description":"category_id integer","format":"int32","title":"get_universe_groups_group_id_category_id","type":"integer"},"group_id":{"description":"group_id integer","format":"int32","title":"get_universe_groups_group_id_group_id","type":"integer"},"name":{"description":"name string","title":"get_universe_groups_group_id_name","type":"string"},"published":{"description":"published boolean","title":"get_universe_groups_group_id_published","type":"boolean"},"types":{"description":"types array","items":{"description":"type integer","format":"int32","title":"get_universe_groups_group_id_type","type":"integer"},"maxItems":10000,"title":"get_universe_groups_group_id_types","type":"array"}},"required":["group_id","name","published","category_id","types"],"title":"get_universe_groups_group_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Group not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_groups_group_id_404_not_found","type":"string"}},"title":"get_universe_groups_group_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get item group information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/ids/":{"post":{"description":"Resolve a set of names to IDs in the following categories: agents, alliances, characters, constellations, corporations factions, inventory_types, regions, stations, and systems. Only exact matches will be returned. All names searched for are cached for 12 hours\n\n---\nAlternate route: `/dev/universe/ids/`\n\nAlternate route: `/legacy/universe/ids/`\n\nAlternate route: `/v1/universe/ids/`\n","operationId":"post_universe_ids","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/language"},{"description":"The names to resolve","in":"body","name":"names","required":true,"schema":{"description":"names array","example":["CCP Zoetrope"],"items":{"description":"name string","maxLength":100,"minLength":1,"title":"post_universe_ids_name","type":"string"},"maxItems":500,"minItems":1,"title":"post_universe_ids_names","type":"array","uniqueItems":true}}],"responses":{"200":{"description":"List of id/name associations for a set of names divided by category. Any name passed in that did not have a match will be ommitted","examples":{"application/json":{"characters":[{"id":95465499,"name":"CCP Bartender"},{"id":2112625428,"name":"CCP Zoetrope"}],"systems":[{"id":30000142,"name":"Jita"}]}},"headers":{"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"}},"schema":{"description":"200 ok object","properties":{"agents":{"description":"agents array","items":{"description":"agent object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_name","type":"string"}},"title":"post_universe_ids_agent","type":"object"},"maxItems":500,"title":"post_universe_ids_agents","type":"array"},"alliances":{"description":"alliances array","items":{"description":"alliance object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_alliance_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_alliance_name","type":"string"}},"title":"post_universe_ids_alliance","type":"object"},"maxItems":500,"title":"post_universe_ids_alliances","type":"array"},"characters":{"description":"characters array","items":{"description":"character object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_character_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_character_name","type":"string"}},"title":"post_universe_ids_character","type":"object"},"maxItems":500,"title":"post_universe_ids_characters","type":"array"},"constellations":{"description":"constellations array","items":{"description":"constellation object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_constellation_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_constellation_name","type":"string"}},"title":"post_universe_ids_constellation","type":"object"},"maxItems":500,"title":"post_universe_ids_constellations","type":"array"},"corporations":{"description":"corporations array","items":{"description":"corporation object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_corporation_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_corporation_name","type":"string"}},"title":"post_universe_ids_corporation","type":"object"},"maxItems":500,"title":"post_universe_ids_corporations","type":"array"},"factions":{"description":"factions array","items":{"description":"faction object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_faction_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_faction_name","type":"string"}},"title":"post_universe_ids_faction","type":"object"},"maxItems":500,"title":"post_universe_ids_factions","type":"array"},"inventory_types":{"description":"inventory_types array","items":{"description":"inventory_type object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_inventory_type_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_inventory_type_name","type":"string"}},"title":"post_universe_ids_inventory_type","type":"object"},"maxItems":500,"title":"post_universe_ids_inventory_types","type":"array"},"regions":{"description":"regions array","items":{"description":"region object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_region_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_region_name","type":"string"}},"title":"post_universe_ids_region","type":"object"},"maxItems":500,"title":"post_universe_ids_regions","type":"array"},"stations":{"description":"stations array","items":{"description":"station object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_station_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_station_name","type":"string"}},"title":"post_universe_ids_station","type":"object"},"maxItems":500,"title":"post_universe_ids_stations","type":"array"},"systems":{"description":"systems array","items":{"description":"system object","properties":{"id":{"description":"id integer","format":"int32","title":"post_universe_ids_system_id","type":"integer"},"name":{"description":"name string","title":"post_universe_ids_system_name","type":"string"}},"title":"post_universe_ids_system","type":"object"},"maxItems":500,"title":"post_universe_ids_systems","type":"array"}},"title":"post_universe_ids_ok","type":"object"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Bulk names to IDs","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/moons/{moon_id}/":{"get":{"description":"Get information on a moon\n\n---\nAlternate route: `/dev/universe/moons/{moon_id}/`\n\nAlternate route: `/legacy/universe/moons/{moon_id}/`\n\nAlternate route: `/v1/universe/moons/{moon_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_moons_moon_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"moon_id integer","format":"int32","in":"path","name":"moon_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a moon","examples":{"application/json":{"moon_id":40000042,"name":"Akpivem I - Moon 1","position":{"x":58605102008,"y":-3066616285,"z":-55193617920},"system_id":30000003}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"moon_id":{"description":"moon_id integer","format":"int32","title":"get_universe_moons_moon_id_moon_id","type":"integer"},"name":{"description":"name string","title":"get_universe_moons_moon_id_name","type":"string"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_moons_moon_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_moons_moon_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_moons_moon_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_moons_moon_id_position","type":"object"},"system_id":{"description":"The solar system this moon is in","format":"int32","title":"get_universe_moons_moon_id_system_id","type":"integer"}},"required":["moon_id","name","position","system_id"],"title":"get_universe_moons_moon_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Moon not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_moons_moon_id_404_not_found","type":"string"}},"title":"get_universe_moons_moon_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get moon information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/names/":{"post":{"description":"Resolve a set of IDs to names and categories. Supported ID's for resolving are: Characters, Corporations, Alliances, Stations, Solar Systems, Constellations, Regions, Types, Factions\n\n---\nAlternate route: `/dev/universe/names/`\n\nAlternate route: `/v3/universe/names/`\n","operationId":"post_universe_names","parameters":[{"$ref":"#/parameters/datasource"},{"description":"The ids to resolve","in":"body","name":"ids","required":true,"schema":{"description":"ids array","example":[95465499,30000142],"items":{"description":"id integer","format":"int32","title":"post_universe_names_id","type":"integer"},"maxItems":1000,"minItems":1,"title":"post_universe_names_ids","type":"array","uniqueItems":true}}],"responses":{"200":{"description":"List of id/name associations for a set of IDs. All IDs must resolve to a name, or nothing will be returned","examples":{"application/json":[{"category":"character","id":95465499,"name":"CCP Bartender"},{"category":"solar_system","id":30000142,"name":"Jita"}]},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"category":{"description":"category string","enum":["alliance","character","constellation","corporation","inventory_type","region","solar_system","station","faction"],"title":"post_universe_names_category","type":"string"},"id":{"description":"id integer","format":"int32","title":"post_universe_names_id","type":"integer"},"name":{"description":"name string","title":"post_universe_names_name","type":"string"}},"required":["id","name","category"],"title":"post_universe_names_200_ok","type":"object"},"maxItems":1000,"title":"post_universe_names_ok","type":"array"}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Ensure all IDs are valid before resolving","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"post_universe_names_404_not_found","type":"string"}},"title":"post_universe_names_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get names and categories for a set of IDs","tags":["Universe"],"x-alternate-versions":["dev","v3"]}},"/universe/planets/{planet_id}/":{"get":{"description":"Get information on a planet\n\n---\nAlternate route: `/dev/universe/planets/{planet_id}/`\n\nAlternate route: `/legacy/universe/planets/{planet_id}/`\n\nAlternate route: `/v1/universe/planets/{planet_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_planets_planet_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"planet_id integer","format":"int32","in":"path","name":"planet_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a planet","examples":{"application/json":{"name":"Akpivem III","planet_id":40000046,"position":{"x":-189226344497,"y":9901605317,"z":-254852632979},"system_id":30000003,"type_id":13}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"name":{"description":"name string","title":"get_universe_planets_planet_id_name","type":"string"},"planet_id":{"description":"planet_id integer","format":"int32","title":"get_universe_planets_planet_id_planet_id","type":"integer"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_planets_planet_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_planets_planet_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_planets_planet_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_planets_planet_id_position","type":"object"},"system_id":{"description":"The solar system this planet is in","format":"int32","title":"get_universe_planets_planet_id_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_planets_planet_id_type_id","type":"integer"}},"required":["planet_id","name","type_id","position","system_id"],"title":"get_universe_planets_planet_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Planet not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_planets_planet_id_404_not_found","type":"string"}},"title":"get_universe_planets_planet_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get planet information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/races/":{"get":{"description":"Get a list of character races\n\n---\nAlternate route: `/dev/universe/races/`\n\nAlternate route: `/legacy/universe/races/`\n\nAlternate route: `/v1/universe/races/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_races","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"}],"responses":{"200":{"description":"A list of character races","examples":{"application/json":[{"alliance_id":500001,"description":"Founded on the tenets of patriotism and hard work...","name":"Caldari","race_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"alliance_id":{"description":"The alliance generally associated with this race","format":"int32","title":"get_universe_races_alliance_id","type":"integer"},"description":{"description":"description string","title":"get_universe_races_description","type":"string"},"name":{"description":"name string","title":"get_universe_races_name","type":"string"},"race_id":{"description":"race_id integer","format":"int32","title":"get_universe_races_race_id","type":"integer"}},"required":["race_id","name","description","alliance_id"],"title":"get_universe_races_200_ok","type":"object"},"maxItems":4,"title":"get_universe_races_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get character races","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/regions/":{"get":{"description":"Get a list of regions\n\n---\nAlternate route: `/dev/universe/regions/`\n\nAlternate route: `/legacy/universe/regions/`\n\nAlternate route: `/v1/universe/regions/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_regions","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of region ids","examples":{"application/json":[11000001,11000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_regions_200_ok","type":"integer"},"maxItems":1000,"title":"get_universe_regions_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get regions","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/regions/{region_id}/":{"get":{"description":"Get information on a region\n\n---\nAlternate route: `/dev/universe/regions/{region_id}/`\n\nAlternate route: `/legacy/universe/regions/{region_id}/`\n\nAlternate route: `/v1/universe/regions/{region_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_regions_region_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"region_id integer","format":"int32","in":"path","name":"region_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a region","examples":{"application/json":{"constellations":[20000302,20000303],"description":"It has long been an established fact of civilization...","name":"Metropolis","region_id":10000042}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"constellations":{"description":"constellations array","items":{"description":"constellation integer","format":"int32","title":"get_universe_regions_region_id_constellation","type":"integer"},"maxItems":1000,"title":"get_universe_regions_region_id_constellations","type":"array"},"description":{"description":"description string","title":"get_universe_regions_region_id_description","type":"string"},"name":{"description":"name string","title":"get_universe_regions_region_id_name","type":"string"},"region_id":{"description":"region_id integer","format":"int32","title":"get_universe_regions_region_id_region_id","type":"integer"}},"required":["region_id","name","constellations"],"title":"get_universe_regions_region_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Region not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_regions_region_id_404_not_found","type":"string"}},"title":"get_universe_regions_region_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get region information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/schematics/{schematic_id}/":{"get":{"description":"Get information on a planetary factory schematic\n\n---\nAlternate route: `/dev/universe/schematics/{schematic_id}/`\n\nAlternate route: `/legacy/universe/schematics/{schematic_id}/`\n\nAlternate route: `/v1/universe/schematics/{schematic_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_schematics_schematic_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"A PI schematic ID","format":"int32","in":"path","name":"schematic_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Public data about a schematic","examples":{"application/json":{"cycle_time":1800,"schematic_name":"Bacteria"}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"cycle_time":{"description":"Time in seconds to process a run","format":"int32","title":"get_universe_schematics_schematic_id_cycle_time","type":"integer"},"schematic_name":{"description":"schematic_name string","title":"get_universe_schematics_schematic_id_schematic_name","type":"string"}},"required":["schematic_name","cycle_time"],"title":"get_universe_schematics_schematic_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Schematic not found","examples":{"application/json":{"error":"Schematic not found"}},"schema":{"description":"Schematic not found","properties":{"error":{"description":"error message","title":"get_universe_schematics_schematic_id_error","type":"string"}},"title":"get_universe_schematics_schematic_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get schematic information","tags":["Planetary Interaction"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/universe/stargates/{stargate_id}/":{"get":{"description":"Get information on a stargate\n\n---\nAlternate route: `/dev/universe/stargates/{stargate_id}/`\n\nAlternate route: `/legacy/universe/stargates/{stargate_id}/`\n\nAlternate route: `/v1/universe/stargates/{stargate_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_stargates_stargate_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"stargate_id integer","format":"int32","in":"path","name":"stargate_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a stargate","examples":{"application/json":{"destination":{"stargate_id":50000056,"system_id":30000001},"name":"Stargate (Tanoo)","position":{"x":-101092761600,"y":5279539200,"z":1550503403520},"stargate_id":50000342,"system_id":30000003,"type_id":29624}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"destination":{"description":"destination object","properties":{"stargate_id":{"description":"The stargate this stargate connects to","format":"int32","title":"get_universe_stargates_stargate_id_destination_stargate_id","type":"integer"},"system_id":{"description":"The solar system this stargate connects to","format":"int32","title":"get_universe_stargates_stargate_id_destination_system_id","type":"integer"}},"required":["system_id","stargate_id"],"title":"get_universe_stargates_stargate_id_destination","type":"object"},"name":{"description":"name string","title":"get_universe_stargates_stargate_id_name","type":"string"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_stargates_stargate_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_stargates_stargate_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_stargates_stargate_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_stargates_stargate_id_position","type":"object"},"stargate_id":{"description":"stargate_id integer","format":"int32","title":"get_universe_stargates_stargate_id_stargate_id","type":"integer"},"system_id":{"description":"The solar system this stargate is in","format":"int32","title":"get_universe_stargates_stargate_id_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_stargates_stargate_id_type_id","type":"integer"}},"required":["stargate_id","name","type_id","position","system_id","destination"],"title":"get_universe_stargates_stargate_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Stargate not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_stargates_stargate_id_404_not_found","type":"string"}},"title":"get_universe_stargates_stargate_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get stargate information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/stars/{star_id}/":{"get":{"description":"Get information on a star\n\n---\nAlternate route: `/dev/universe/stars/{star_id}/`\n\nAlternate route: `/legacy/universe/stars/{star_id}/`\n\nAlternate route: `/v1/universe/stars/{star_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_stars_star_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"star_id integer","format":"int32","in":"path","name":"star_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a star","examples":{"application/json":{"age":9398686722,"luminosity":0.06615000218153,"name":"BKG-Q2 - Star","radius":346600000,"solar_system_id":30004333,"spectral_class":"K2 V","temperature":3953,"type_id":45033}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"age":{"description":"Age of star in years","format":"int64","title":"get_universe_stars_star_id_age","type":"integer"},"luminosity":{"description":"luminosity number","format":"float","title":"get_universe_stars_star_id_luminosity","type":"number"},"name":{"description":"name string","title":"get_universe_stars_star_id_name","type":"string"},"radius":{"description":"radius integer","format":"int64","title":"get_universe_stars_star_id_radius","type":"integer"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_universe_stars_star_id_solar_system_id","type":"integer"},"spectral_class":{"description":"spectral_class string","enum":["K2 V","K4 V","G2 V","G8 V","M7 V","K7 V","M2 V","K5 V","M3 V","G0 V","G7 V","G3 V","F9 V","G5 V","F6 V","K8 V","K9 V","K6 V","G9 V","G6 V","G4 VI","G4 V","F8 V","F2 V","F1 V","K3 V","F0 VI","G1 VI","G0 VI","K1 V","M4 V","M1 V","M6 V","M0 V","K2 IV","G2 VI","K0 V","K5 IV","F5 VI","G6 VI","F6 VI","F2 IV","G3 VI","M8 V","F1 VI","K1 IV","F7 V","G5 VI","M5 V","G7 VI","F5 V","F4 VI","F8 VI","K3 IV","F4 IV","F0 V","G7 IV","G8 VI","F2 VI","F4 V","F7 VI","F3 V","G1 V","G9 VI","F3 IV","F9 VI","M9 V","K0 IV","F1 IV","G4 IV","F3 VI","K4 IV","G5 IV","G3 IV","G1 IV","K7 IV","G0 IV","K6 IV","K9 IV","G2 IV","F9 IV","F0 IV","K8 IV","G8 IV","F6 IV","F5 IV","A0","A0IV","A0IV2"],"title":"get_universe_stars_star_id_spectral_class","type":"string"},"temperature":{"description":"temperature integer","format":"int32","title":"get_universe_stars_star_id_temperature","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_stars_star_id_type_id","type":"integer"}},"required":["name","type_id","age","luminosity","radius","spectral_class","temperature","solar_system_id"],"title":"get_universe_stars_star_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get star information","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/stations/{station_id}/":{"get":{"description":"Get information on a station\n\n---\nAlternate route: `/dev/universe/stations/{station_id}/`\n\nAlternate route: `/v2/universe/stations/{station_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_stations_station_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"station_id integer","format":"int32","in":"path","name":"station_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a station","examples":{"application/json":{"max_dockable_ship_volume":50000000,"name":"Jakanerva III - Moon 15 - Prompt Delivery Storage","office_rental_cost":10000,"owner":1000003,"position":{"x":165632286720,"y":2771804160,"z":-2455331266560},"race_id":1,"reprocessing_efficiency":0.5,"reprocessing_stations_take":0.05,"services":["courier-missions","reprocessing-plant","market","repair-facilities","fitting","news","storage","insurance","docking","office-rental","loyalty-point-store","navy-offices"],"station_id":60000277,"system_id":30000148,"type_id":1531}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"max_dockable_ship_volume":{"description":"max_dockable_ship_volume number","format":"float","title":"get_universe_stations_station_id_max_dockable_ship_volume","type":"number"},"name":{"description":"name string","title":"get_universe_stations_station_id_name","type":"string"},"office_rental_cost":{"description":"office_rental_cost number","format":"float","title":"get_universe_stations_station_id_office_rental_cost","type":"number"},"owner":{"description":"ID of the corporation that controls this station","format":"int32","title":"get_universe_stations_station_id_owner","type":"integer"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_stations_station_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_stations_station_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_stations_station_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_stations_station_id_position","type":"object"},"race_id":{"description":"race_id integer","format":"int32","title":"get_universe_stations_station_id_race_id","type":"integer"},"reprocessing_efficiency":{"description":"reprocessing_efficiency number","format":"float","title":"get_universe_stations_station_id_reprocessing_efficiency","type":"number"},"reprocessing_stations_take":{"description":"reprocessing_stations_take number","format":"float","title":"get_universe_stations_station_id_reprocessing_stations_take","type":"number"},"services":{"description":"services array","items":{"description":"service string","enum":["bounty-missions","assasination-missions","courier-missions","interbus","reprocessing-plant","refinery","market","black-market","stock-exchange","cloning","surgery","dna-therapy","repair-facilities","factory","labratory","gambling","fitting","paintshop","news","storage","insurance","docking","office-rental","jump-clone-facility","loyalty-point-store","navy-offices","security-offices"],"title":"get_universe_stations_station_id_service","type":"string"},"maxItems":30,"title":"get_universe_stations_station_id_services","type":"array"},"station_id":{"description":"station_id integer","format":"int32","title":"get_universe_stations_station_id_station_id","type":"integer"},"system_id":{"description":"The solar system this station is in","format":"int32","title":"get_universe_stations_station_id_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_stations_station_id_type_id","type":"integer"}},"required":["station_id","name","type_id","position","system_id","reprocessing_efficiency","reprocessing_stations_take","max_dockable_ship_volume","office_rental_cost","services"],"title":"get_universe_stations_station_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Station not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_stations_station_id_404_not_found","type":"string"}},"title":"get_universe_stations_station_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get station information","tags":["Universe"],"x-alternate-versions":["dev","v2"]}},"/universe/structures/":{"get":{"description":"List all public structures\n\n---\nAlternate route: `/dev/universe/structures/`\n\nAlternate route: `/legacy/universe/structures/`\n\nAlternate route: `/v1/universe/structures/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_structures","parameters":[{"$ref":"#/parameters/datasource"},{"description":"Only list public structures that have this service online","enum":["market","manufacturing_basic"],"in":"query","name":"filter","required":false,"type":"string"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"List of public structure IDs","examples":{"application/json":[1020988381992,1020988381991]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int64","minimum":0,"title":"get_universe_structures_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_structures_ok","type":"array","uniqueItems":true}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List all public structures","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/universe/structures/{structure_id}/":{"get":{"description":"Returns information on requested structure if you are on the ACL. Otherwise, returns \"Forbidden\" for all inputs.\n\n---\nAlternate route: `/dev/universe/structures/{structure_id}/`\n\nAlternate route: `/v2/universe/structures/{structure_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_structures_structure_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"An Eve structure ID","format":"int64","in":"path","name":"structure_id","required":true,"type":"integer"},{"$ref":"#/parameters/token"}],"responses":{"200":{"description":"Data about a structure","examples":{"application/json":{"name":"V-3YG7 VI - The Capital","owner_id":109299958,"solar_system_id":30000142}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"name":{"description":"The full name of the structure","title":"get_universe_structures_structure_id_name","type":"string"},"owner_id":{"description":"The ID of the corporation who owns this particular structure","format":"int32","title":"get_universe_structures_structure_id_owner_id","type":"integer"},"position":{"description":"Coordinates of the structure in Cartesian space relative to the Sun, in metres.\n","properties":{"x":{"description":"x number","format":"double","title":"get_universe_structures_structure_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_structures_structure_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_structures_structure_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_structures_structure_id_position","type":"object"},"solar_system_id":{"description":"solar_system_id integer","format":"int32","title":"get_universe_structures_structure_id_solar_system_id","type":"integer"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_structures_structure_id_type_id","type":"integer"}},"required":["name","solar_system_id","owner_id"],"title":"get_universe_structures_structure_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"401":{"description":"Unauthorized","examples":{"application/json":{"error":"Unauthorized message"}},"schema":{"$ref":"#/definitions/unauthorized"}},"403":{"description":"Forbidden","examples":{"application/json":{"error":"Forbidden message"}},"schema":{"$ref":"#/definitions/forbidden"}},"404":{"description":"Structure not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_structures_structure_id_404_not_found","type":"string"}},"title":"get_universe_structures_structure_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"security":[{"evesso":["esi-universe.read_structures.v1"]}],"summary":"Get structure information","tags":["Universe"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/universe/system_jumps/":{"get":{"description":"Get the number of jumps in solar systems within the last hour ending at the timestamp of the Last-Modified header, excluding wormhole space. Only systems with jumps will be listed\n\n---\nAlternate route: `/dev/universe/system_jumps/`\n\nAlternate route: `/legacy/universe/system_jumps/`\n\nAlternate route: `/v1/universe/system_jumps/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_system_jumps","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of systems and number of jumps","examples":{"application/json":[{"ship_jumps":42,"system_id":30002410}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"ship_jumps":{"description":"ship_jumps integer","format":"int32","title":"get_universe_system_jumps_ship_jumps","type":"integer"},"system_id":{"description":"system_id integer","format":"int32","title":"get_universe_system_jumps_system_id","type":"integer"}},"required":["system_id","ship_jumps"],"title":"get_universe_system_jumps_200_ok","type":"object"},"maxItems":10000,"title":"get_universe_system_jumps_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get system jumps","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/universe/system_kills/":{"get":{"description":"Get the number of ship, pod and NPC kills per solar system within the last hour ending at the timestamp of the Last-Modified header, excluding wormhole space. Only systems with kills will be listed\n\n---\nAlternate route: `/dev/universe/system_kills/`\n\nAlternate route: `/v2/universe/system_kills/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_universe_system_kills","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of systems and number of ship, pod and NPC kills","examples":{"application/json":[{"npc_kills":0,"pod_kills":24,"ship_kills":42,"system_id":30002410}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"npc_kills":{"description":"Number of NPC ships killed in this system","format":"int32","title":"get_universe_system_kills_npc_kills","type":"integer"},"pod_kills":{"description":"Number of pods killed in this system","format":"int32","title":"get_universe_system_kills_pod_kills","type":"integer"},"ship_kills":{"description":"Number of player ships killed in this system","format":"int32","title":"get_universe_system_kills_ship_kills","type":"integer"},"system_id":{"description":"system_id integer","format":"int32","title":"get_universe_system_kills_system_id","type":"integer"}},"required":["system_id","ship_kills","npc_kills","pod_kills"],"title":"get_universe_system_kills_200_ok","type":"object"},"maxItems":10000,"title":"get_universe_system_kills_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get system kills","tags":["Universe"],"x-alternate-versions":["dev","v2"],"x-cached-seconds":3600}},"/universe/systems/":{"get":{"description":"Get a list of solar systems\n\n---\nAlternate route: `/dev/universe/systems/`\n\nAlternate route: `/legacy/universe/systems/`\n\nAlternate route: `/v1/universe/systems/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_systems","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"}],"responses":{"200":{"description":"A list of solar system ids","examples":{"application/json":[30000001,30000002]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_systems_200_ok","type":"integer"},"maxItems":10000,"title":"get_universe_systems_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get solar systems","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/systems/{system_id}/":{"get":{"description":"Get information on a solar system.\n\n---\nAlternate route: `/dev/universe/systems/{system_id}/`\n\nAlternate route: `/v4/universe/systems/{system_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_systems_system_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"system_id integer","format":"int32","in":"path","name":"system_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a solar system","examples":{"application/json":{"constellation_id":20000001,"name":"Akpivem","planets":[{"moons":[40000042],"planet_id":40000041},{"planet_id":40000043}],"position":{"x":-91174141133075340,"y":43938227486247170,"z":-56482824383339900},"security_class":"B","security_status":0.8462923765182495,"star_id":40000040,"stargates":[50000342],"system_id":30000003}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"constellation_id":{"description":"The constellation this solar system is in","format":"int32","title":"get_universe_systems_system_id_constellation_id","type":"integer"},"name":{"description":"name string","title":"get_universe_systems_system_id_name","type":"string"},"planets":{"description":"planets array","items":{"description":"planet object","properties":{"asteroid_belts":{"description":"asteroid_belts array","items":{"description":"asteroid_belt integer","format":"int32","title":"get_universe_systems_system_id_asteroid_belt","type":"integer"},"maxItems":100,"title":"get_universe_systems_system_id_asteroid_belts","type":"array"},"moons":{"description":"moons array","items":{"description":"moon integer","format":"int32","title":"get_universe_systems_system_id_moon","type":"integer"},"maxItems":1000,"title":"get_universe_systems_system_id_moons","type":"array"},"planet_id":{"description":"planet_id integer","format":"int32","title":"get_universe_systems_system_id_planet_id","type":"integer"}},"required":["planet_id"],"title":"get_universe_systems_system_id_planet","type":"object"},"maxItems":1000,"title":"get_universe_systems_system_id_planets","type":"array"},"position":{"description":"position object","properties":{"x":{"description":"x number","format":"double","title":"get_universe_systems_system_id_x","type":"number"},"y":{"description":"y number","format":"double","title":"get_universe_systems_system_id_y","type":"number"},"z":{"description":"z number","format":"double","title":"get_universe_systems_system_id_z","type":"number"}},"required":["x","y","z"],"title":"get_universe_systems_system_id_position","type":"object"},"security_class":{"description":"security_class string","title":"get_universe_systems_system_id_security_class","type":"string"},"security_status":{"description":"security_status number","format":"float","title":"get_universe_systems_system_id_security_status","type":"number"},"star_id":{"description":"star_id integer","format":"int32","title":"get_universe_systems_system_id_star_id","type":"integer"},"stargates":{"description":"stargates array","items":{"description":"stargate integer","format":"int32","title":"get_universe_systems_system_id_stargate","type":"integer"},"maxItems":25,"title":"get_universe_systems_system_id_stargates","type":"array"},"stations":{"description":"stations array","items":{"description":"station integer","format":"int32","title":"get_universe_systems_system_id_station","type":"integer"},"maxItems":25,"title":"get_universe_systems_system_id_stations","type":"array"},"system_id":{"description":"system_id integer","format":"int32","title":"get_universe_systems_system_id_system_id","type":"integer"}},"required":["system_id","name","position","security_status","constellation_id"],"title":"get_universe_systems_system_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Solar system not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_systems_system_id_404_not_found","type":"string"}},"title":"get_universe_systems_system_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get solar system information","tags":["Universe"],"x-alternate-versions":["dev","v4"]}},"/universe/types/":{"get":{"description":"Get a list of type ids\n\n---\nAlternate route: `/dev/universe/types/`\n\nAlternate route: `/legacy/universe/types/`\n\nAlternate route: `/v1/universe/types/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_types","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"}],"responses":{"200":{"description":"A list of type ids","examples":{"application/json":[1,2,3]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_universe_types_200_ok","type":"integer"},"maxItems":1000,"title":"get_universe_types_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get types","tags":["Universe"],"x-alternate-versions":["dev","legacy","v1"]}},"/universe/types/{type_id}/":{"get":{"description":"Get information on a type\n\n---\nAlternate route: `/dev/universe/types/{type_id}/`\n\nAlternate route: `/v3/universe/types/{type_id}/`\n\n---\nThis route expires daily at 11:05","operationId":"get_universe_types_type_id","parameters":[{"$ref":"#/parameters/Accept-Language"},{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/language"},{"description":"An Eve item type ID","format":"int32","in":"path","name":"type_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Information about a type","examples":{"application/json":{"description":"The Rifter is a...","group_id":25,"name":"Rifter","published":true,"type_id":587}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"Content-Language":{"description":"The language used in the response","enum":["de","en-us","fr","ja","ru","zh","ko"],"type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"capacity":{"description":"capacity number","format":"float","title":"get_universe_types_type_id_capacity","type":"number"},"description":{"description":"description string","title":"get_universe_types_type_id_description","type":"string"},"dogma_attributes":{"description":"dogma_attributes array","items":{"description":"dogma_attribute object","properties":{"attribute_id":{"description":"attribute_id integer","format":"int32","title":"get_universe_types_type_id_attribute_id","type":"integer"},"value":{"description":"value number","format":"float","title":"get_universe_types_type_id_value","type":"number"}},"required":["attribute_id","value"],"title":"get_universe_types_type_id_dogma_attribute","type":"object"},"maxItems":1000,"title":"get_universe_types_type_id_dogma_attributes","type":"array"},"dogma_effects":{"description":"dogma_effects array","items":{"description":"dogma_effect object","properties":{"effect_id":{"description":"effect_id integer","format":"int32","title":"get_universe_types_type_id_effect_id","type":"integer"},"is_default":{"description":"is_default boolean","title":"get_universe_types_type_id_is_default","type":"boolean"}},"required":["effect_id","is_default"],"title":"get_universe_types_type_id_dogma_effect","type":"object"},"maxItems":1000,"title":"get_universe_types_type_id_dogma_effects","type":"array"},"graphic_id":{"description":"graphic_id integer","format":"int32","title":"get_universe_types_type_id_graphic_id","type":"integer"},"group_id":{"description":"group_id integer","format":"int32","title":"get_universe_types_type_id_group_id","type":"integer"},"icon_id":{"description":"icon_id integer","format":"int32","title":"get_universe_types_type_id_icon_id","type":"integer"},"market_group_id":{"description":"This only exists for types that can be put on the market","format":"int32","title":"get_universe_types_type_id_market_group_id","type":"integer"},"mass":{"description":"mass number","format":"float","title":"get_universe_types_type_id_mass","type":"number"},"name":{"description":"name string","title":"get_universe_types_type_id_name","type":"string"},"packaged_volume":{"description":"packaged_volume number","format":"float","title":"get_universe_types_type_id_packaged_volume","type":"number"},"portion_size":{"description":"portion_size integer","format":"int32","title":"get_universe_types_type_id_portion_size","type":"integer"},"published":{"description":"published boolean","title":"get_universe_types_type_id_published","type":"boolean"},"radius":{"description":"radius number","format":"float","title":"get_universe_types_type_id_radius","type":"number"},"type_id":{"description":"type_id integer","format":"int32","title":"get_universe_types_type_id_type_id","type":"integer"},"volume":{"description":"volume number","format":"float","title":"get_universe_types_type_id_volume","type":"number"}},"required":["type_id","name","description","published","group_id"],"title":"get_universe_types_type_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"404":{"description":"Type not found","examples":{"application/json":{"error":"Not found message"}},"schema":{"description":"Not found","properties":{"error":{"description":"Not found message","title":"get_universe_types_type_id_404_not_found","type":"string"}},"title":"get_universe_types_type_id_not_found","type":"object"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get type information","tags":["Universe"],"x-alternate-versions":["dev","v3"]}},"/wars/":{"get":{"description":"Return a list of wars\n\n---\nAlternate route: `/dev/wars/`\n\nAlternate route: `/legacy/wars/`\n\nAlternate route: `/v1/wars/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_wars","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"Only return wars with ID smaller than this","format":"int32","in":"query","name":"max_war_id","required":false,"type":"integer"}],"responses":{"200":{"description":"A list of war IDs, in descending order by war_id","examples":{"application/json":[3,2,1]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok array","items":{"description":"200 ok integer","format":"int32","title":"get_wars_200_ok","type":"integer"},"maxItems":2000,"title":"get_wars_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List wars","tags":["Wars"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/wars/{war_id}/":{"get":{"description":"Return details about a war\n\n---\nAlternate route: `/dev/wars/{war_id}/`\n\nAlternate route: `/legacy/wars/{war_id}/`\n\nAlternate route: `/v1/wars/{war_id}/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_wars_war_id","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"description":"ID for a war","format":"int32","in":"path","minimum":1,"name":"war_id","required":true,"type":"integer"}],"responses":{"200":{"description":"Details about a war","examples":{"application/json":{"aggressor":{"corporation_id":986665792,"isk_destroyed":0,"ships_killed":0},"declared":"2004-05-22T05:20:00Z","defender":{"corporation_id":1001562011,"isk_destroyed":0,"ships_killed":0},"id":1941,"mutual":false,"open_for_allies":false}},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}},"schema":{"description":"200 ok object","properties":{"aggressor":{"description":"The aggressor corporation or alliance that declared this war, only contains either corporation_id or alliance_id","properties":{"alliance_id":{"description":"Alliance ID if and only if the aggressor is an alliance","format":"int32","title":"get_wars_war_id_alliance_id","type":"integer"},"corporation_id":{"description":"Corporation ID if and only if the aggressor is a corporation","format":"int32","title":"get_wars_war_id_corporation_id","type":"integer"},"isk_destroyed":{"description":"ISK value of ships the aggressor has destroyed","format":"float","title":"get_wars_war_id_isk_destroyed","type":"number"},"ships_killed":{"description":"The number of ships the aggressor has killed","format":"int32","title":"get_wars_war_id_ships_killed","type":"integer"}},"required":["ships_killed","isk_destroyed"],"title":"get_wars_war_id_aggressor","type":"object"},"allies":{"description":"allied corporations or alliances, each object contains either corporation_id or alliance_id","items":{"description":"ally object","properties":{"alliance_id":{"description":"Alliance ID if and only if this ally is an alliance","format":"int32","title":"get_wars_war_id_ally_alliance_id","type":"integer"},"corporation_id":{"description":"Corporation ID if and only if this ally is a corporation","format":"int32","title":"get_wars_war_id_ally_corporation_id","type":"integer"}},"title":"get_wars_war_id_ally","type":"object"},"maxItems":10000,"title":"get_wars_war_id_allies","type":"array"},"declared":{"description":"Time that the war was declared","format":"date-time","title":"get_wars_war_id_declared","type":"string"},"defender":{"description":"The defending corporation or alliance that declared this war, only contains either corporation_id or alliance_id","properties":{"alliance_id":{"description":"Alliance ID if and only if the defender is an alliance","format":"int32","title":"get_wars_war_id_defender_alliance_id","type":"integer"},"corporation_id":{"description":"Corporation ID if and only if the defender is a corporation","format":"int32","title":"get_wars_war_id_defender_corporation_id","type":"integer"},"isk_destroyed":{"description":"ISK value of ships the defender has killed","format":"float","title":"get_wars_war_id_defender_isk_destroyed","type":"number"},"ships_killed":{"description":"The number of ships the defender has killed","format":"int32","title":"get_wars_war_id_defender_ships_killed","type":"integer"}},"required":["ships_killed","isk_destroyed"],"title":"get_wars_war_id_defender","type":"object"},"finished":{"description":"Time the war ended and shooting was no longer allowed","format":"date-time","title":"get_wars_war_id_finished","type":"string"},"id":{"description":"ID of the specified war","format":"int32","title":"get_wars_war_id_id","type":"integer"},"mutual":{"description":"Was the war declared mutual by both parties","title":"get_wars_war_id_mutual","type":"boolean"},"open_for_allies":{"description":"Is the war currently open for allies or not","title":"get_wars_war_id_open_for_allies","type":"boolean"},"retracted":{"description":"Time the war was retracted but both sides could still shoot each other","format":"date-time","title":"get_wars_war_id_retracted","type":"string"},"started":{"description":"Time when the war started and both sides could shoot each other","format":"date-time","title":"get_wars_war_id_started","type":"string"}},"required":["id","declared","mutual","open_for_allies","aggressor","defender"],"title":"get_wars_war_id_ok","type":"object"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"War not found","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_wars_war_id_422_unprocessable_entity","type":"string"}},"title":"get_wars_war_id_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"Get war information","tags":["Wars"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}},"/wars/{war_id}/killmails/":{"get":{"description":"Return a list of kills related to a war\n\n---\nAlternate route: `/dev/wars/{war_id}/killmails/`\n\nAlternate route: `/legacy/wars/{war_id}/killmails/`\n\nAlternate route: `/v1/wars/{war_id}/killmails/`\n\n---\nThis route is cached for up to 3600 seconds","operationId":"get_wars_war_id_killmails","parameters":[{"$ref":"#/parameters/datasource"},{"$ref":"#/parameters/If-None-Match"},{"$ref":"#/parameters/page"},{"description":"A valid war ID","format":"int32","in":"path","minimum":1,"name":"war_id","required":true,"type":"integer"}],"responses":{"200":{"description":"A list of killmail IDs and hashes","examples":{"application/json":[{"killmail_hash":"8eef5e8fb6b88fe3407c489df33822b2e3b57a5e","killmail_id":2},{"killmail_hash":"b41ccb498ece33d64019f64c0db392aa3aa701fb","killmail_id":1}]},"headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"},"X-Pages":{"default":1,"description":"Maximum page number","format":"int32","type":"integer"}},"schema":{"description":"200 ok array","items":{"description":"200 ok object","properties":{"killmail_hash":{"description":"A hash of this killmail","title":"get_wars_war_id_killmails_killmail_hash","type":"string"},"killmail_id":{"description":"ID of this killmail","format":"int32","title":"get_wars_war_id_killmails_killmail_id","type":"integer"}},"required":["killmail_id","killmail_hash"],"title":"get_wars_war_id_killmails_200_ok","type":"object"},"maxItems":2000,"title":"get_wars_war_id_killmails_ok","type":"array"}},"304":{"description":"Not modified","headers":{"Cache-Control":{"description":"The caching mechanism used","type":"string"},"ETag":{"description":"RFC7232 compliant entity tag","type":"string"},"Expires":{"description":"RFC7231 formatted datetime string","type":"string"},"Last-Modified":{"description":"RFC7231 formatted datetime string","type":"string"}}},"400":{"description":"Bad request","examples":{"application/json":{"error":"Bad request message"}},"schema":{"$ref":"#/definitions/bad_request"}},"420":{"description":"Error limited","examples":{"application/json":{"error":"Error limited message"}},"schema":{"$ref":"#/definitions/error_limited"}},"422":{"description":"War not found","examples":{"application/json":{"error":"Unprocessable entity message"}},"schema":{"description":"Unprocessable entity","properties":{"error":{"description":"Unprocessable entity message","title":"get_wars_war_id_killmails_422_unprocessable_entity","type":"string"}},"title":"get_wars_war_id_killmails_unprocessable_entity","type":"object"}},"500":{"description":"Internal server error","examples":{"application/json":{"error":"Internal server error message"}},"schema":{"$ref":"#/definitions/internal_server_error"}},"503":{"description":"Service unavailable","examples":{"application/json":{"error":"Service unavailable message"}},"schema":{"$ref":"#/definitions/service_unavailable"}},"504":{"description":"Gateway timeout","examples":{"application/json":{"error":"Gateway timeout message"}},"schema":{"$ref":"#/definitions/gateway_timeout"}}},"summary":"List kills for a war","tags":["Wars"],"x-alternate-versions":["dev","legacy","v1"],"x-cached-seconds":3600}}},"produces":["application/json"],"schemes":["https"],"securityDefinitions":{"evesso":{"authorizationUrl":"https://login.eveonline.com/v2/oauth/authorize","flow":"implicit","scopes":{"esi-alliances.read_contacts.v1":"EVE SSO scope esi-alliances.read_contacts.v1","esi-assets.read_assets.v1":"EVE SSO scope esi-assets.read_assets.v1","esi-assets.read_corporation_assets.v1":"EVE SSO scope esi-assets.read_corporation_assets.v1","esi-bookmarks.read_character_bookmarks.v1":"EVE SSO scope esi-bookmarks.read_character_bookmarks.v1","esi-bookmarks.read_corporation_bookmarks.v1":"EVE SSO scope esi-bookmarks.read_corporation_bookmarks.v1","esi-calendar.read_calendar_events.v1":"EVE SSO scope esi-calendar.read_calendar_events.v1","esi-calendar.respond_calendar_events.v1":"EVE SSO scope esi-calendar.respond_calendar_events.v1","esi-characters.read_agents_research.v1":"EVE SSO scope esi-characters.read_agents_research.v1","esi-characters.read_blueprints.v1":"EVE SSO scope esi-characters.read_blueprints.v1","esi-characters.read_contacts.v1":"EVE SSO scope esi-characters.read_contacts.v1","esi-characters.read_corporation_roles.v1":"EVE SSO scope esi-characters.read_corporation_roles.v1","esi-characters.read_fatigue.v1":"EVE SSO scope esi-characters.read_fatigue.v1","esi-characters.read_fw_stats.v1":"EVE SSO scope esi-characters.read_fw_stats.v1","esi-characters.read_loyalty.v1":"EVE SSO scope esi-characters.read_loyalty.v1","esi-characters.read_medals.v1":"EVE SSO scope esi-characters.read_medals.v1","esi-characters.read_notifications.v1":"EVE SSO scope esi-characters.read_notifications.v1","esi-characters.read_opportunities.v1":"EVE SSO scope esi-characters.read_opportunities.v1","esi-characters.read_standings.v1":"EVE SSO scope esi-characters.read_standings.v1","esi-characters.read_titles.v1":"EVE SSO scope esi-characters.read_titles.v1","esi-characters.write_contacts.v1":"EVE SSO scope esi-characters.write_contacts.v1","esi-characterstats.read.v1":"EVE SSO scope esi-characterstats.read.v1","esi-clones.read_clones.v1":"EVE SSO scope esi-clones.read_clones.v1","esi-clones.read_implants.v1":"EVE SSO scope esi-clones.read_implants.v1","esi-contracts.read_character_contracts.v1":"EVE SSO scope esi-contracts.read_character_contracts.v1","esi-contracts.read_corporation_contracts.v1":"EVE SSO scope esi-contracts.read_corporation_contracts.v1","esi-corporations.read_blueprints.v1":"EVE SSO scope esi-corporations.read_blueprints.v1","esi-corporations.read_contacts.v1":"EVE SSO scope esi-corporations.read_contacts.v1","esi-corporations.read_container_logs.v1":"EVE SSO scope esi-corporations.read_container_logs.v1","esi-corporations.read_corporation_membership.v1":"EVE SSO scope esi-corporations.read_corporation_membership.v1","esi-corporations.read_divisions.v1":"EVE SSO scope esi-corporations.read_divisions.v1","esi-corporations.read_facilities.v1":"EVE SSO scope esi-corporations.read_facilities.v1","esi-corporations.read_fw_stats.v1":"EVE SSO scope esi-corporations.read_fw_stats.v1","esi-corporations.read_medals.v1":"EVE SSO scope esi-corporations.read_medals.v1","esi-corporations.read_standings.v1":"EVE SSO scope esi-corporations.read_standings.v1","esi-corporations.read_starbases.v1":"EVE SSO scope esi-corporations.read_starbases.v1","esi-corporations.read_structures.v1":"EVE SSO scope esi-corporations.read_structures.v1","esi-corporations.read_titles.v1":"EVE SSO scope esi-corporations.read_titles.v1","esi-corporations.track_members.v1":"EVE SSO scope esi-corporations.track_members.v1","esi-fittings.read_fittings.v1":"EVE SSO scope esi-fittings.read_fittings.v1","esi-fittings.write_fittings.v1":"EVE SSO scope esi-fittings.write_fittings.v1","esi-fleets.read_fleet.v1":"EVE SSO scope esi-fleets.read_fleet.v1","esi-fleets.write_fleet.v1":"EVE SSO scope esi-fleets.write_fleet.v1","esi-industry.read_character_jobs.v1":"EVE SSO scope esi-industry.read_character_jobs.v1","esi-industry.read_character_mining.v1":"EVE SSO scope esi-industry.read_character_mining.v1","esi-industry.read_corporation_jobs.v1":"EVE SSO scope esi-industry.read_corporation_jobs.v1","esi-industry.read_corporation_mining.v1":"EVE SSO scope esi-industry.read_corporation_mining.v1","esi-killmails.read_corporation_killmails.v1":"EVE SSO scope esi-killmails.read_corporation_killmails.v1","esi-killmails.read_killmails.v1":"EVE SSO scope esi-killmails.read_killmails.v1","esi-location.read_location.v1":"EVE SSO scope esi-location.read_location.v1","esi-location.read_online.v1":"EVE SSO scope esi-location.read_online.v1","esi-location.read_ship_type.v1":"EVE SSO scope esi-location.read_ship_type.v1","esi-mail.organize_mail.v1":"EVE SSO scope esi-mail.organize_mail.v1","esi-mail.read_mail.v1":"EVE SSO scope esi-mail.read_mail.v1","esi-mail.send_mail.v1":"EVE SSO scope esi-mail.send_mail.v1","esi-markets.read_character_orders.v1":"EVE SSO scope esi-markets.read_character_orders.v1","esi-markets.read_corporation_orders.v1":"EVE SSO scope esi-markets.read_corporation_orders.v1","esi-markets.structure_markets.v1":"EVE SSO scope esi-markets.structure_markets.v1","esi-planets.manage_planets.v1":"EVE SSO scope esi-planets.manage_planets.v1","esi-planets.read_customs_offices.v1":"EVE SSO scope esi-planets.read_customs_offices.v1","esi-search.search_structures.v1":"EVE SSO scope esi-search.search_structures.v1","esi-skills.read_skillqueue.v1":"EVE SSO scope esi-skills.read_skillqueue.v1","esi-skills.read_skills.v1":"EVE SSO scope esi-skills.read_skills.v1","esi-ui.open_window.v1":"EVE SSO scope esi-ui.open_window.v1","esi-ui.write_waypoint.v1":"EVE SSO scope esi-ui.write_waypoint.v1","esi-universe.read_structures.v1":"EVE SSO scope esi-universe.read_structures.v1","esi-wallet.read_character_wallet.v1":"EVE SSO scope esi-wallet.read_character_wallet.v1","esi-wallet.read_corporation_wallets.v1":"EVE SSO scope esi-wallet.read_corporation_wallets.v1"},"type":"oauth2"}},"swagger":"2.0"} diff --git a/allianceauth/corputils/templates/corputils/base.html b/allianceauth/corputils/templates/corputils/base.html index 56a626e1..d23bd86e 100644 --- a/allianceauth/corputils/templates/corputils/base.html +++ b/allianceauth/corputils/templates/corputils/base.html @@ -34,4 +34,4 @@ {% block member_data %}{% endblock %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/allianceauth/corputils/templates/corputils/corpstats.html b/allianceauth/corputils/templates/corputils/corpstats.html index 6e24178b..e8655422 100644 --- a/allianceauth/corputils/templates/corputils/corpstats.html +++ b/allianceauth/corputils/templates/corputils/corpstats.html @@ -58,8 +58,7 @@ {% for id, main in mains.items %}
@@ -123,10 +121,9 @@ - + @@ -136,10 +133,9 @@ - + @@ -167,9 +163,7 @@ diff --git a/allianceauth/corputils/templates/corputils/search.html b/allianceauth/corputils/templates/corputils/search.html index 85d482b9..3f9176bb 100644 --- a/allianceauth/corputils/templates/corputils/search.html +++ b/allianceauth/corputils/templates/corputils/search.html @@ -45,4 +45,4 @@ $(document).ready(function(){ $('#table-search').DataTable(); }); -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/allianceauth/corputils/views.py b/allianceauth/corputils/views.py index 92853ce6..fd818896 100644 --- a/allianceauth/corputils/views.py +++ b/allianceauth/corputils/views.py @@ -96,7 +96,7 @@ def corpstats_view(request, corp_id=None): character_ownership__user__profile__main_character__corporation_id=corpstats.corp.corporation_id) linked_chars = linked_chars.select_related('character_ownership', - 'character_ownership__user__profile__main_character') \ + 'character_ownership__user__profile__main_character') \ .prefetch_related('character_ownership__user__character_ownerships') \ .prefetch_related('character_ownership__user__character_ownerships__character') diff --git a/allianceauth/eveonline/admin.py b/allianceauth/eveonline/admin.py index 9c0447a1..1333fa9d 100644 --- a/allianceauth/eveonline/admin.py +++ b/allianceauth/eveonline/admin.py @@ -97,7 +97,7 @@ class EveAllianceForm(EveEntityForm): @admin.register(EveCorporationInfo) class EveCorporationInfoAdmin(admin.ModelAdmin): search_fields = ['corporation_name'] - list_display = ('corporation_name', 'alliance') + list_display = ('corporation_name', 'alliance') list_select_related = ('alliance',) list_filter = (('alliance', admin.RelatedOnlyFieldListFilter),) ordering = ('corporation_name',) @@ -114,9 +114,9 @@ class EveCorporationInfoAdmin(admin.ModelAdmin): @admin.register(EveAllianceInfo) class EveAllianceInfoAdmin(admin.ModelAdmin): search_fields = ['alliance_name'] - list_display = ('alliance_name',) + list_display = ('alliance_name',) ordering = ('alliance_name',) - + def has_change_permission(self, request, obj=None): return False @@ -129,9 +129,9 @@ class EveAllianceInfoAdmin(admin.ModelAdmin): @admin.register(EveCharacter) class EveCharacterAdmin(admin.ModelAdmin): search_fields = [ - 'character_name', - 'corporation_name', - 'alliance_name', + 'character_name', + 'corporation_name', + 'alliance_name', 'character_ownership__user__username' ] list_display = ( @@ -141,10 +141,10 @@ class EveCharacterAdmin(admin.ModelAdmin): 'character_ownership', 'character_ownership__user__profile__main_character' ) list_filter = ( - 'corporation_name', - 'alliance_name', + 'corporation_name', + 'alliance_name', ( - 'character_ownership__user__profile__main_character', + 'character_ownership__user__profile__main_character', admin.RelatedOnlyFieldListFilter ), ) diff --git a/allianceauth/eveonline/autogroups/admin.py b/allianceauth/eveonline/autogroups/admin.py index f06af858..888be4ed 100644 --- a/allianceauth/eveonline/autogroups/admin.py +++ b/allianceauth/eveonline/autogroups/admin.py @@ -31,12 +31,11 @@ class AutogroupsConfigAdmin(admin.ModelAdmin): def get_actions(self, request): actions = super(AutogroupsConfigAdmin, self).get_actions(request) actions['sync_user_groups'] = (sync_user_groups, - 'sync_user_groups', - 'Sync all users groups for this Autogroup Config') + 'sync_user_groups', + 'Sync all users groups for this Autogroup Config') return actions admin.site.register(AutogroupsConfig, AutogroupsConfigAdmin) admin.site.register(ManagedCorpGroup) admin.site.register(ManagedAllianceGroup) - diff --git a/allianceauth/eveonline/autogroups/migrations/0001_initial.py b/allianceauth/eveonline/autogroups/migrations/0001_initial.py index 8441e1ed..3c552693 100644 --- a/allianceauth/eveonline/autogroups/migrations/0001_initial.py +++ b/allianceauth/eveonline/autogroups/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.6 on 2017-12-23 04:30 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/autogroups/models.py b/allianceauth/eveonline/autogroups/models.py index 23b7bf23..8cf6f319 100644 --- a/allianceauth/eveonline/autogroups/models.py +++ b/allianceauth/eveonline/autogroups/models.py @@ -57,25 +57,21 @@ class AutogroupsConfig(models.Model): states = models.ManyToManyField(State, related_name='autogroups') - corp_groups = models.BooleanField(default=False, - help_text="Setting this to false will delete all the created groups.") + corp_groups = models.BooleanField(default=False, help_text="Setting this to false will delete all the created groups.") corp_group_prefix = models.CharField(max_length=50, default='Corp ', blank=True) corp_name_source = models.CharField(max_length=20, choices=NAME_OPTIONS, default=OPT_NAME) - alliance_groups = models.BooleanField(default=False, - help_text="Setting this to false will delete all the created groups.") + alliance_groups = models.BooleanField(default=False, help_text="Setting this to false will delete all the created groups.") alliance_group_prefix = models.CharField(max_length=50, default='Alliance ', blank=True) alliance_name_source = models.CharField(max_length=20, choices=NAME_OPTIONS, default=OPT_NAME) corp_managed_groups = models.ManyToManyField( Group, through='ManagedCorpGroup', related_name='corp_managed_config', - help_text='A list of corporation groups created and maintained by this AutogroupConfig. ' - 'You should not edit this list unless you know what you\'re doing.') + help_text='A list of corporation groups created and maintained by this AutogroupConfig. You should not edit this list unless you know what you\'re doing.') alliance_managed_groups = models.ManyToManyField( Group, through='ManagedAllianceGroup', related_name='alliance_managed_config', - help_text='A list of alliance groups created and maintained by this AutogroupConfig. ' - 'You should not edit this list unless you know what you\'re doing.') + help_text='A list of alliance groups created and maintained by this AutogroupConfig. You should not edit this list unless you know what you\'re doing.') replace_spaces = models.BooleanField(default=False) replace_spaces_with = models.CharField( diff --git a/allianceauth/eveonline/autogroups/tests/test_managers.py b/allianceauth/eveonline/autogroups/tests/test_managers.py index ebf5eb02..e4e42ef0 100644 --- a/allianceauth/eveonline/autogroups/tests/test_managers.py +++ b/allianceauth/eveonline/autogroups/tests/test_managers.py @@ -44,7 +44,7 @@ class AutogroupsConfigManagerTestCase(TestCase): with patch('.models.AutogroupsConfig.update_group_membership_for_user') \ as update_group_membership_for_user: AutogroupsConfig.objects.update_groups_for_user( - user=member, + user=member, state=member.profile.state ) diff --git a/allianceauth/eveonline/autogroups/tests/test_models.py b/allianceauth/eveonline/autogroups/tests/test_models.py index 44917d3c..45044608 100644 --- a/allianceauth/eveonline/autogroups/tests/test_models.py +++ b/allianceauth/eveonline/autogroups/tests/test_models.py @@ -52,8 +52,8 @@ class AutogroupsConfigTestCase(TestCase): @patch('.models.AutogroupsConfig.update_alliance_group_membership') @patch('.models.AutogroupsConfig.update_corp_group_membership') def test_update_group_membership_for_user( - self, - update_corp, + self, + update_corp, update_alliance ): agc = AutogroupsConfig.objects.create() @@ -123,9 +123,9 @@ class AutogroupsConfigTestCase(TestCase): alliance_ticker='alliance_ticker', executor_corp_id='2345' ) - + mock_create_alliance.side_effect = mock_create_alliance_side_effect - + obj = AutogroupsConfig.objects.create(alliance_groups=True) obj.states.add(AuthUtils.get_member_state()) char = EveCharacter.objects.create( @@ -140,7 +140,7 @@ class AutogroupsConfigTestCase(TestCase): self.member.profile.main_character = char self.member.profile.save() - # Act + # Act obj.update_alliance_group_membership(self.member) group = obj.get_alliance_group(self.alliance) diff --git a/allianceauth/eveonline/evelinks/__init__.py b/allianceauth/eveonline/evelinks/__init__.py index 2fb4f6b8..6f725dfd 100644 --- a/allianceauth/eveonline/evelinks/__init__.py +++ b/allianceauth/eveonline/evelinks/__init__.py @@ -1,4 +1,4 @@ -# this package generates profile URL for eve entities +# this package generates profile URL for eve entities # on 3rd party websites like evewho and zKillboard # # It contains of modules for views and templatetags for templates diff --git a/allianceauth/eveonline/evelinks/dotlan.py b/allianceauth/eveonline/evelinks/dotlan.py index ebd0e7bd..b782eabd 100644 --- a/allianceauth/eveonline/evelinks/dotlan.py +++ b/allianceauth/eveonline/evelinks/dotlan.py @@ -3,9 +3,9 @@ from urllib.parse import urljoin, quote from . import ( - _ESI_CATEGORY_ALLIANCE, - _ESI_CATEGORY_CORPORATION, - _ESI_CATEGORY_REGION, + _ESI_CATEGORY_ALLIANCE, + _ESI_CATEGORY_CORPORATION, + _ESI_CATEGORY_REGION, _ESI_CATEGORY_SOLARSYSTEM ) @@ -15,28 +15,28 @@ _BASE_URL = 'http://evemaps.dotlan.net' def _build_url(category: str, name: str) -> str: """return url to profile page for an eve entity""" - - if category == _ESI_CATEGORY_ALLIANCE: + + if category == _ESI_CATEGORY_ALLIANCE: partial = 'alliance' - elif category == _ESI_CATEGORY_CORPORATION: + elif category == _ESI_CATEGORY_CORPORATION: partial = 'corp' elif category == _ESI_CATEGORY_REGION: partial = 'map' - + elif category == _ESI_CATEGORY_SOLARSYSTEM: partial = 'system' - + else: raise NotImplementedError( "Not implemented yet for category:" + category ) - + url = urljoin( _BASE_URL, '{}/{}'.format(partial, quote(str(name).replace(" ", "_"))) - + ) return url diff --git a/allianceauth/eveonline/evelinks/eveimageserver.py b/allianceauth/eveonline/evelinks/eveimageserver.py index d3323446..d2f51c27 100644 --- a/allianceauth/eveonline/evelinks/eveimageserver.py +++ b/allianceauth/eveonline/evelinks/eveimageserver.py @@ -1,7 +1,7 @@ from . import ( - _ESI_CATEGORY_ALLIANCE, - _ESI_CATEGORY_CHARACTER, - _ESI_CATEGORY_CORPORATION, + _ESI_CATEGORY_ALLIANCE, + _ESI_CATEGORY_CHARACTER, + _ESI_CATEGORY_CORPORATION, _ESI_CATEGORY_INVENTORYTYPE ) @@ -10,7 +10,7 @@ _EVE_IMAGE_SERVER_URL = 'https://images.evetech.net' _DEFAULT_IMAGE_SIZE = 32 -def _eve_entity_image_url( +def _eve_entity_image_url( category: str, entity_id: int, size: int = 32, @@ -19,7 +19,7 @@ def _eve_entity_image_url( ) -> str: """returns image URL for an Eve Online ID. Supported categories: alliance, corporation, character, inventory_type - + Arguments: - category: category of the ID, see ESI category constants - entity_id: Eve ID of the entity @@ -33,7 +33,7 @@ def _eve_entity_image_url( Exceptions: - Throws ValueError on invalid input """ - + # input validations categories = { _ESI_CATEGORY_ALLIANCE: { @@ -54,15 +54,15 @@ def _eve_entity_image_url( } } tenants = ['tranquility', 'singularity'] - + if not entity_id: raise ValueError('Invalid entity_id: {}'.format(entity_id)) else: entity_id = int(entity_id) - + if not size or size < 32 or size > 1024 or (size & (size - 1) != 0): raise ValueError('Invalid size: {}'.format(size)) - + if category not in categories: raise ValueError('Invalid category {}'.format(category)) else: @@ -79,7 +79,7 @@ def _eve_entity_image_url( if tenant and tenant not in tenants: raise ValueError('Invalid tenant {}'.format(tenant)) - + # compose result URL result = '{}/{}/{}/{}?size={}'.format( _EVE_IMAGE_SERVER_URL, @@ -90,7 +90,7 @@ def _eve_entity_image_url( ) if tenant: result += '&tenant={}'.format(tenant) - + return result diff --git a/allianceauth/eveonline/evelinks/evewho.py b/allianceauth/eveonline/evelinks/evewho.py index 57d748ac..3062ba45 100644 --- a/allianceauth/eveonline/evelinks/evewho.py +++ b/allianceauth/eveonline/evelinks/evewho.py @@ -3,9 +3,9 @@ from urllib.parse import urljoin from . import ( - _ESI_CATEGORY_ALLIANCE, - _ESI_CATEGORY_CORPORATION, - _ESI_CATEGORY_CHARACTER, + _ESI_CATEGORY_ALLIANCE, + _ESI_CATEGORY_CORPORATION, + _ESI_CATEGORY_CHARACTER, ) @@ -14,21 +14,21 @@ _BASE_URL = 'https://evewho.com' def _build_url(category: str, eve_id: int) -> str: """return url to profile page for an eve entity""" - - if category == _ESI_CATEGORY_ALLIANCE: + + if category == _ESI_CATEGORY_ALLIANCE: partial = 'alliance' - elif category == _ESI_CATEGORY_CORPORATION: + elif category == _ESI_CATEGORY_CORPORATION: partial = 'corporation' elif category == _ESI_CATEGORY_CHARACTER: partial = 'character' - + else: raise NotImplementedError( "Not implemented yet for category:" + category ) - + url = urljoin( _BASE_URL, '{}/{}'.format(partial, int(eve_id)) diff --git a/allianceauth/eveonline/evelinks/tests/test_evelinks.py b/allianceauth/eveonline/evelinks/tests/test_evelinks.py index a9baeb93..32f79f05 100644 --- a/allianceauth/eveonline/evelinks/tests/test_evelinks.py +++ b/allianceauth/eveonline/evelinks/tests/test_evelinks.py @@ -12,12 +12,12 @@ class TestEveWho(TestCase): evewho.alliance_url(12345678), 'https://evewho.com/alliance/12345678' ) - + def test_corporation_url(self): self.assertEqual( evewho.corporation_url(12345678), 'https://evewho.com/corporation/12345678' - ) + ) def test_character_url(self): self.assertEqual( @@ -49,7 +49,7 @@ class TestDotlan(TestCase): dotlan.region_url('Black Rise'), 'http://evemaps.dotlan.net/map/Black_Rise' ) - + def test_solar_system_url(self): self.assertEqual( dotlan.solar_system_url('Jita'), @@ -69,14 +69,14 @@ class TestZkillboard(TestCase): self.assertEqual( zkillboard.corporation_url(12345678), 'https://zkillboard.com/corporation/12345678/' - ) + ) def test_character_url(self): self.assertEqual( zkillboard.character_url(12345678), 'https://zkillboard.com/character/12345678/' ) - + def test_region_url(self): self.assertEqual( @@ -93,34 +93,34 @@ class TestZkillboard(TestCase): class TestEveImageServer(TestCase): """unit test for eveimageserver""" - - def test_sizes(self): + + def test_sizes(self): self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42), + eveimageserver._eve_entity_image_url('character', 42), 'https://images.evetech.net/characters/42/portrait?size=32' ) self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, size=32), + eveimageserver._eve_entity_image_url('character', 42, size=32), 'https://images.evetech.net/characters/42/portrait?size=32' ) self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, size=64), + eveimageserver._eve_entity_image_url('character', 42, size=64), 'https://images.evetech.net/characters/42/portrait?size=64' ) self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, size=128), + eveimageserver._eve_entity_image_url('character', 42, size=128), 'https://images.evetech.net/characters/42/portrait?size=128' ) self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, size=256), + eveimageserver._eve_entity_image_url('character', 42, size=256), 'https://images.evetech.net/characters/42/portrait?size=256' ) self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, size=512), + eveimageserver._eve_entity_image_url('character', 42, size=512), 'https://images.evetech.net/characters/42/portrait?size=512' ) self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, size=1024), + eveimageserver._eve_entity_image_url('character', 42, size=1024), 'https://images.evetech.net/characters/42/portrait?size=1024' ) with self.assertRaises(ValueError): @@ -128,10 +128,10 @@ class TestEveImageServer(TestCase): with self.assertRaises(ValueError): eveimageserver._eve_entity_image_url('corporation', 42, size=0) - + with self.assertRaises(ValueError): eveimageserver._eve_entity_image_url('corporation', 42, size=31) - + with self.assertRaises(ValueError): eveimageserver._eve_entity_image_url('corporation', 42, size=1025) @@ -141,28 +141,28 @@ class TestEveImageServer(TestCase): def test_variant(self): self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, variant='portrait'), + eveimageserver._eve_entity_image_url('character', 42, variant='portrait'), 'https://images.evetech.net/characters/42/portrait?size=32' ) self.assertEqual( - eveimageserver._eve_entity_image_url('alliance', 42, variant='logo'), + eveimageserver._eve_entity_image_url('alliance', 42, variant='logo'), 'https://images.evetech.net/alliances/42/logo?size=32' ) with self.assertRaises(ValueError): eveimageserver._eve_entity_image_url('character', 42, variant='logo') - + def test_alliance(self): self.assertEqual( - eveimageserver._eve_entity_image_url('alliance', 42), + eveimageserver._eve_entity_image_url('alliance', 42), 'https://images.evetech.net/alliances/42/logo?size=32' ) self.assertEqual( - eveimageserver._eve_entity_image_url('corporation', 42), + eveimageserver._eve_entity_image_url('corporation', 42), 'https://images.evetech.net/corporations/42/logo?size=32' ) self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42), + eveimageserver._eve_entity_image_url('character', 42), 'https://images.evetech.net/characters/42/portrait?size=32' ) with self.assertRaises(ValueError): @@ -171,16 +171,16 @@ class TestEveImageServer(TestCase): def test_tenants(self): self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, tenant='tranquility'), + eveimageserver._eve_entity_image_url('character', 42, tenant='tranquility'), 'https://images.evetech.net/characters/42/portrait?size=32&tenant=tranquility' ) self.assertEqual( - eveimageserver._eve_entity_image_url('character', 42, tenant='singularity'), + eveimageserver._eve_entity_image_url('character', 42, tenant='singularity'), 'https://images.evetech.net/characters/42/portrait?size=32&tenant=singularity' ) with self.assertRaises(ValueError): eveimageserver._eve_entity_image_url('character', 42, tenant='xxx') - + def test_alliance_logo_url(self): expected = 'https://images.evetech.net/alliances/42/logo?size=128' self.assertEqual(eveimageserver.alliance_logo_url(42, 128), expected) @@ -201,4 +201,4 @@ class TestEveImageServer(TestCase): def test_type_render_url(self): expected = 'https://images.evetech.net/types/42/render?size=128' - self.assertEqual(eveimageserver.type_render_url(42, 128), expected) \ No newline at end of file + self.assertEqual(eveimageserver.type_render_url(42, 128), expected) diff --git a/allianceauth/eveonline/evelinks/tests/test_templatetags.py b/allianceauth/eveonline/evelinks/tests/test_templatetags.py index 4fb8327a..db5c8178 100644 --- a/allianceauth/eveonline/evelinks/tests/test_templatetags.py +++ b/allianceauth/eveonline/evelinks/tests/test_templatetags.py @@ -38,15 +38,15 @@ class TestTemplateTags(TestCase): member_count=42, alliance=self.my_alliance ) - + self.my_region_id = 8001 self.my_region_name = 'Southpark' - + self.my_solar_system_id = 9001 self.my_solar_system_name = 'Gotham' - - def test_evewho_character_url(self): + + def test_evewho_character_url(self): self.assertEqual( evelinks.evewho_character_url(self.my_character), evewho.character_url(self.my_character.character_id), @@ -59,9 +59,9 @@ class TestTemplateTags(TestCase): evelinks.evewho_character_url(self.my_character.character_id), evewho.character_url(self.my_character.character_id), ) - - - def test_evewho_corporation_url(self): + + + def test_evewho_corporation_url(self): self.assertEqual( evelinks.evewho_corporation_url(self.my_character), evewho.corporation_url(self.my_character.corporation_id), @@ -80,7 +80,7 @@ class TestTemplateTags(TestCase): ) - def test_evewho_alliance_url(self): + def test_evewho_alliance_url(self): self.assertEqual( evelinks.evewho_alliance_url(self.my_character), evewho.alliance_url(self.my_character.alliance_id), @@ -100,12 +100,12 @@ class TestTemplateTags(TestCase): self.assertEqual( evelinks.evewho_alliance_url(self.my_character.alliance_id), evewho.alliance_url(self.my_character.alliance_id), - ) + ) + - # dotlan - - def test_dotlan_corporation_url(self): + + def test_dotlan_corporation_url(self): self.assertEqual( evelinks.dotlan_corporation_url(self.my_character), dotlan.corporation_url(self.my_character.corporation_name), @@ -121,10 +121,10 @@ class TestTemplateTags(TestCase): self.assertEqual( evelinks.dotlan_corporation_url(self.my_character.corporation_name), dotlan.corporation_url(self.my_character.corporation_name), - ) + ) - def test_dotlan_alliance_url(self): + def test_dotlan_alliance_url(self): self.assertEqual( evelinks.dotlan_alliance_url(self.my_character), dotlan.alliance_url(self.my_character.alliance_name), @@ -144,32 +144,32 @@ class TestTemplateTags(TestCase): self.assertEqual( evelinks.dotlan_alliance_url(self.my_character.alliance_name), dotlan.alliance_url(self.my_character.alliance_name), - ) + ) - def test_dotlan_region_url(self): + def test_dotlan_region_url(self): self.assertEqual( evelinks.dotlan_region_url(self.my_region_name), dotlan.region_url(self.my_region_name), - ) + ) self.assertEqual( evelinks.dotlan_region_url(None), '' - ) + ) - def test_dotlan_solar_system_url(self): + def test_dotlan_solar_system_url(self): self.assertEqual( evelinks.dotlan_solar_system_url(self.my_solar_system_name), dotlan.solar_system_url(self.my_solar_system_name), - ) + ) self.assertEqual( evelinks.dotlan_solar_system_url(None), '' - ) + ) + - # zkillboard - def test_zkillboard_character_url(self): + def test_zkillboard_character_url(self): self.assertEqual( evelinks.zkillboard_character_url(self.my_character), zkillboard.character_url(self.my_character.character_id), @@ -182,9 +182,9 @@ class TestTemplateTags(TestCase): evelinks.zkillboard_character_url(self.my_character.character_id), zkillboard.character_url(self.my_character.character_id), ) - - - def test_zkillboard_corporation_url(self): + + + def test_zkillboard_corporation_url(self): self.assertEqual( evelinks.zkillboard_corporation_url(self.my_character), zkillboard.corporation_url(self.my_character.corporation_id), @@ -200,10 +200,10 @@ class TestTemplateTags(TestCase): self.assertEqual( evelinks.zkillboard_corporation_url(self.my_character.corporation_id), zkillboard.corporation_url(self.my_character.corporation_id), - ) + ) - def test_zkillboard_alliance_url(self): + def test_zkillboard_alliance_url(self): self.assertEqual( evelinks.zkillboard_alliance_url(self.my_character), zkillboard.alliance_url(self.my_character.alliance_id), @@ -223,29 +223,29 @@ class TestTemplateTags(TestCase): self.assertEqual( evelinks.zkillboard_alliance_url(self.my_character.alliance_id), zkillboard.alliance_url(self.my_character.alliance_id), - ) + ) - def test_zkillboard_region_url(self): + def test_zkillboard_region_url(self): self.assertEqual( evelinks.zkillboard_region_url(self.my_region_id), zkillboard.region_url(self.my_region_id), - ) + ) self.assertEqual( evelinks.zkillboard_region_url(None), '' - ) + ) - def test_zkillboard_solar_system_url(self): + def test_zkillboard_solar_system_url(self): self.assertEqual( evelinks.zkillboard_solar_system_url(self.my_solar_system_id), zkillboard.solar_system_url(self.my_solar_system_id), - ) + ) self.assertEqual( evelinks.zkillboard_solar_system_url(None), '' - ) + ) # image URLs @@ -254,12 +254,12 @@ class TestTemplateTags(TestCase): self.assertEqual( evelinks.character_portrait_url(123), EveCharacter.generic_portrait_url(123) - + ), self.assertEqual( evelinks.character_portrait_url(123, 128), EveCharacter.generic_portrait_url(123, 128) - + ) self.assertEqual( evelinks.character_portrait_url(123, 99), @@ -267,7 +267,7 @@ class TestTemplateTags(TestCase): ) self.assertEqual( evelinks.character_portrait_url(self.my_character), - self.my_character.portrait_url() + self.my_character.portrait_url() ) self.assertEqual( evelinks.character_portrait_url(None), @@ -286,7 +286,7 @@ class TestTemplateTags(TestCase): ) self.assertEqual( evelinks.corporation_logo_url(123, 99), - '' + '' ) self.assertEqual( evelinks.corporation_logo_url(self.my_corporation), @@ -303,7 +303,7 @@ class TestTemplateTags(TestCase): def test_alliance_logo_url(self): - self.assertEqual( + self.assertEqual( evelinks.alliance_logo_url(123), EveAllianceInfo.generic_logo_url(123) ), @@ -314,7 +314,7 @@ class TestTemplateTags(TestCase): self.assertEqual( evelinks.alliance_logo_url(123, 99), '' - ) + ) self.assertEqual( evelinks.alliance_logo_url(self.my_alliance), self.my_alliance.logo_url() @@ -338,10 +338,10 @@ class TestTemplateTags(TestCase): expected = eveimageserver.type_icon_url(123, 128) self.assertEqual(evelinks.type_icon_url(123, 128), expected) - + expected = '' self.assertEqual(evelinks.type_icon_url(123, 99), expected) - + expected = '' self.assertEqual(evelinks.type_icon_url(None), expected) @@ -351,9 +351,9 @@ class TestTemplateTags(TestCase): expected = eveimageserver.type_render_url(123, 128) self.assertEqual(evelinks.type_render_url(123, 128), expected) - + expected = '' self.assertEqual(evelinks.type_render_url(123, 99), expected) - + expected = '' - self.assertEqual(evelinks.type_render_url(None), expected) \ No newline at end of file + self.assertEqual(evelinks.type_render_url(None), expected) diff --git a/allianceauth/eveonline/evelinks/zkillboard.py b/allianceauth/eveonline/evelinks/zkillboard.py index 255964b0..0023d071 100644 --- a/allianceauth/eveonline/evelinks/zkillboard.py +++ b/allianceauth/eveonline/evelinks/zkillboard.py @@ -3,10 +3,10 @@ from urllib.parse import urljoin from . import ( - _ESI_CATEGORY_ALLIANCE, - _ESI_CATEGORY_CORPORATION, + _ESI_CATEGORY_ALLIANCE, + _ESI_CATEGORY_CORPORATION, _ESI_CATEGORY_CHARACTER, - _ESI_CATEGORY_REGION, + _ESI_CATEGORY_REGION, _ESI_CATEGORY_SOLARSYSTEM ) @@ -16,11 +16,11 @@ _BASE_URL = 'https://zkillboard.com' def _build_url(category: str, eve_id: int) -> str: """return url to profile page for an eve entity""" - - if category == _ESI_CATEGORY_ALLIANCE: + + if category == _ESI_CATEGORY_ALLIANCE: partial = 'alliance' - elif category == _ESI_CATEGORY_CORPORATION: + elif category == _ESI_CATEGORY_CORPORATION: partial = 'corporation' elif category == _ESI_CATEGORY_CHARACTER: @@ -31,12 +31,12 @@ def _build_url(category: str, eve_id: int) -> str: elif category == _ESI_CATEGORY_SOLARSYSTEM: partial = 'system' - + else: raise NotImplementedError( "Not implemented yet for category:" + category ) - + url = urljoin( _BASE_URL, '{}/{}/'.format(partial, int(eve_id)) diff --git a/allianceauth/eveonline/migrations/0001_initial.py b/allianceauth/eveonline/migrations/0001_initial.py index cf3ebde0..e2c2589d 100644 --- a/allianceauth/eveonline/migrations/0001_initial.py +++ b/allianceauth/eveonline/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-05 21:39 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/migrations/0002_remove_eveapikeypair_error_count.py b/allianceauth/eveonline/migrations/0002_remove_eveapikeypair_error_count.py index 52fca062..5c7de29e 100644 --- a/allianceauth/eveonline/migrations/0002_remove_eveapikeypair_error_count.py +++ b/allianceauth/eveonline/migrations/0002_remove_eveapikeypair_error_count.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-10 20:20 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/migrations/0003_auto_20161026_0149.py b/allianceauth/eveonline/migrations/0003_auto_20161026_0149.py index beffba20..6ec80863 100644 --- a/allianceauth/eveonline/migrations/0003_auto_20161026_0149.py +++ b/allianceauth/eveonline/migrations/0003_auto_20161026_0149.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-10-26 01:49 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/migrations/0004_eveapikeypair_sso_verified.py b/allianceauth/eveonline/migrations/0004_eveapikeypair_sso_verified.py index 38a196c0..140aff15 100644 --- a/allianceauth/eveonline/migrations/0004_eveapikeypair_sso_verified.py +++ b/allianceauth/eveonline/migrations/0004_eveapikeypair_sso_verified.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-11-01 04:20 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/migrations/0005_remove_eveallianceinfo_member_count.py b/allianceauth/eveonline/migrations/0005_remove_eveallianceinfo_member_count.py index f9a7bfab..604146f2 100644 --- a/allianceauth/eveonline/migrations/0005_remove_eveallianceinfo_member_count.py +++ b/allianceauth/eveonline/migrations/0005_remove_eveallianceinfo_member_count.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-12-16 23:22 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/migrations/0006_allow_null_evecharacter_alliance.py b/allianceauth/eveonline/migrations/0006_allow_null_evecharacter_alliance.py index d6e44ec5..f78a2d3c 100644 --- a/allianceauth/eveonline/migrations/0006_allow_null_evecharacter_alliance.py +++ b/allianceauth/eveonline/migrations/0006_allow_null_evecharacter_alliance.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2017-01-02 19:23 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/migrations/0007_unique_id_name.py b/allianceauth/eveonline/migrations/0007_unique_id_name.py index 6aa0b593..f91733c8 100644 --- a/allianceauth/eveonline/migrations/0007_unique_id_name.py +++ b/allianceauth/eveonline/migrations/0007_unique_id_name.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-01-18 13:20 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/migrations/0008_remove_apikeys.py b/allianceauth/eveonline/migrations/0008_remove_apikeys.py index 158fccaf..e8475693 100644 --- a/allianceauth/eveonline/migrations/0008_remove_apikeys.py +++ b/allianceauth/eveonline/migrations/0008_remove_apikeys.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-03-22 23:09 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/migrations/0009_on_delete.py b/allianceauth/eveonline/migrations/0009_on_delete.py index ad534248..9cfa03e2 100644 --- a/allianceauth/eveonline/migrations/0009_on_delete.py +++ b/allianceauth/eveonline/migrations/0009_on_delete.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.5 on 2017-09-28 02:16 from __future__ import unicode_literals diff --git a/allianceauth/eveonline/models.py b/allianceauth/eveonline/models.py index 9a55e4fa..04181a38 100644 --- a/allianceauth/eveonline/models.py +++ b/allianceauth/eveonline/models.py @@ -51,7 +51,7 @@ class EveAllianceInfo(models.Model): ) -> str: """image URL for the given alliance ID""" return eveimageserver.alliance_logo_url(alliance_id, size) - + def logo_url(self, size: int = _DEFAULT_IMAGE_SIZE) -> str: """image URL of this alliance""" return self.generic_logo_url(self.alliance_id, size) @@ -91,9 +91,7 @@ class EveCorporationInfo(models.Model): provider = EveCorporationProviderManager() class Meta: - indexes = [ - models.Index(fields=['ceo_id',]), - ] + indexes = [models.Index(fields=['ceo_id',]),] def update_corporation(self, corp: providers.Corporation = None): if corp is None: @@ -157,11 +155,11 @@ class EveCharacter(models.Model): class Meta: indexes = [ - models.Index(fields=['corporation_id',]), - models.Index(fields=['alliance_id',]), - models.Index(fields=['corporation_name',]), - models.Index(fields=['alliance_name',]), - ] + models.Index(fields=['corporation_id',]), + models.Index(fields=['alliance_id',]), + models.Index(fields=['corporation_name',]), + models.Index(fields=['alliance_name',]), + ] @property def alliance(self) -> Union[EveAllianceInfo, None]: @@ -224,7 +222,7 @@ class EveCharacter(models.Model): def portrait_url_128(self) -> str: """image URL for this character""" return self.portrait_url(128) - + @property def portrait_url_256(self) -> str: """image URL for this character""" @@ -275,7 +273,7 @@ class EveCharacter(models.Model): def alliance_logo_url_128(self) -> str: """image URL for alliance of this character or empty string""" return self.alliance_logo_url(128) - + @property def alliance_logo_url_256(self) -> str: """image URL for alliance of this character or empty string""" diff --git a/allianceauth/eveonline/providers.py b/allianceauth/eveonline/providers.py index dc25ba35..1373c49d 100644 --- a/allianceauth/eveonline/providers.py +++ b/allianceauth/eveonline/providers.py @@ -159,7 +159,7 @@ class EveProvider(object): class EveSwaggerProvider(EveProvider): - def __init__(self, token=None, adapter=None): + def __init__(self, token=None, adapter=None): if settings.DEBUG: self._client = None logger.info( diff --git a/allianceauth/eveonline/tasks.py b/allianceauth/eveonline/tasks.py index 5f3f4d42..9562d520 100644 --- a/allianceauth/eveonline/tasks.py +++ b/allianceauth/eveonline/tasks.py @@ -40,7 +40,7 @@ def update_character(character_id): @shared_task def run_model_update(): """Update all alliances, corporations and characters from ESI""" - + # update existing corp models for corp in EveCorporationInfo.objects.all().values('corporation_id'): update_corp.apply_async( @@ -54,7 +54,7 @@ def run_model_update(): ) # update existing character models - character_ids = EveCharacter.objects.all().values_list('character_id', flat=True) + character_ids = EveCharacter.objects.all().values_list('character_id', flat=True) for character_ids_chunk in chunks(character_ids, CHUNK_SIZE): affiliations_raw = providers.provider.client.Character\ .post_characters_affiliation(characters=character_ids_chunk).result() @@ -62,39 +62,39 @@ def run_model_update(): .post_universe_names(ids=character_ids_chunk).result() affiliations = { - affiliation.get('character_id'): affiliation + affiliation.get('character_id'): affiliation for affiliation in affiliations_raw } # add character names to affiliations - for character in character_names: + for character in character_names: character_id = character.get('id') if character_id in affiliations: affiliations[character_id]['name'] = character.get('name') # fetch current characters characters = EveCharacter.objects.filter(character_id__in=character_ids_chunk)\ - .values('character_id', 'corporation_id', 'alliance_id', 'character_name') - + .values('character_id', 'corporation_id', 'alliance_id', 'character_name') + for character in characters: character_id = character.get('character_id') if character_id in affiliations: affiliation = affiliations[character_id] - + corp_changed = ( character.get('corporation_id') != affiliation.get('corporation_id') ) - + alliance_id = character.get('alliance_id') if not alliance_id: alliance_id = None alliance_changed = alliance_id != affiliation.get('alliance_id') - + name_changed = False fetched_name = affiliation.get('name', False) if fetched_name: name_changed = character.get('character_name') != fetched_name - - if corp_changed or alliance_changed or name_changed: + + if corp_changed or alliance_changed or name_changed: update_character.apply_async( args=[character.get('character_id')], priority=TASK_PRIORITY ) diff --git a/allianceauth/eveonline/templatetags/evelinks.py b/allianceauth/eveonline/templatetags/evelinks.py index bf507965..e5f44440 100644 --- a/allianceauth/eveonline/templatetags/evelinks.py +++ b/allianceauth/eveonline/templatetags/evelinks.py @@ -1,14 +1,14 @@ # This module defines template tags for evelinks URLs and eve image URLs -# +# # Many tags will work both with their respective eveonline object # and their respective eve entity ID -# +# # Example: # character URL on evewho: {{ my_character|evewho_character_url}} # character URL on evewho: {{ 1456384556|evewho_character_url}} -# +# # For more examples see examples.html -# +# # To add templatetags for additional providers just add the respective # template functions and let them call the generic functions @@ -25,59 +25,59 @@ _DEFAULT_IMAGE_SIZE = 32 # generic functions def _generic_character_url( - provider: object, - obj_prop: str, + provider: object, + obj_prop: str, eve_obj: EveCharacter ) -> str: """returns character URL for given provider and object""" my_func = getattr(provider, 'character_url') - if isinstance(eve_obj, EveCharacter): + if isinstance(eve_obj, EveCharacter): return my_func(getattr(eve_obj, obj_prop)) - + elif eve_obj is None: return '' else: return my_func(eve_obj) - + def _generic_corporation_url( - provider: object, - obj_prop: str, + provider: object, + obj_prop: str, eve_obj: object ) -> str: """returns corporation URL for given provider and object""" my_func = getattr(provider, 'corporation_url') - if isinstance(eve_obj, (EveCharacter, EveCorporationInfo)): + if isinstance(eve_obj, (EveCharacter, EveCorporationInfo)): return my_func(getattr(eve_obj, obj_prop)) elif eve_obj is None: return '' - + else: return my_func(eve_obj) - + def _generic_alliance_url( - provider: object, + provider: object, obj_prop: str, eve_obj: object ) -> str: """returns alliance URL for given provider and object""" my_func = getattr(provider, 'alliance_url') - + if isinstance(eve_obj, EveCharacter): - if eve_obj.alliance_id: + if eve_obj.alliance_id: return my_func(getattr(eve_obj, obj_prop)) else: return '' - - elif isinstance(eve_obj, EveAllianceInfo): + + elif isinstance(eve_obj, EveAllianceInfo): return my_func(getattr(eve_obj, obj_prop)) elif eve_obj is None: return '' - + else: return my_func(eve_obj) @@ -91,7 +91,7 @@ def _generic_evelinks_url( my_func = getattr(provider, provider_func) if eve_obj is None: return '' - + else: return my_func(eve_obj) @@ -99,29 +99,29 @@ def _generic_evelinks_url( # evewho @register.filter -def evewho_character_url(eve_obj: EveCharacter) -> str: +def evewho_character_url(eve_obj: EveCharacter) -> str: """generates an evewho URL for the given object Works with allianceauth.eveonline objects and eve entity IDs - Returns URL or empty string - """ + Returns URL or empty string + """ return _generic_character_url(evewho, 'character_id', eve_obj) - + @register.filter def evewho_corporation_url(eve_obj: object) -> str: """generates an evewho URL for the given object Works with allianceauth.eveonline objects and eve entity IDs - Returns URL or empty string - """ + Returns URL or empty string + """ return _generic_corporation_url(evewho, 'corporation_id', eve_obj) - + @register.filter -def evewho_alliance_url(eve_obj: object) -> str: +def evewho_alliance_url(eve_obj: object) -> str: """generates an evewho URL for the given object Works with allianceauth.eveonline objects and eve entity IDs - Returns URL or empty string - """ + Returns URL or empty string + """ return _generic_alliance_url(evewho, 'alliance_id', eve_obj) @@ -131,69 +131,69 @@ def evewho_alliance_url(eve_obj: object) -> str: def dotlan_corporation_url(eve_obj: object) -> str: """generates a dotlan URL for the given object Works with allianceauth.eveonline objects and eve entity names - Returns URL or empty string - """ + Returns URL or empty string + """ return _generic_corporation_url(dotlan, 'corporation_name', eve_obj) - + @register.filter -def dotlan_alliance_url(eve_obj: object) -> str: +def dotlan_alliance_url(eve_obj: object) -> str: """generates a dotlan URL for the given object Works with allianceauth.eveonline objects and eve entity names - Returns URL or empty string - """ + Returns URL or empty string + """ return _generic_alliance_url(dotlan, 'alliance_name', eve_obj) @register.filter -def dotlan_region_url(eve_obj: object) -> str: +def dotlan_region_url(eve_obj: object) -> str: """generates a dotlan URL for the given object Works with eve entity names - Returns URL or empty string - """ + Returns URL or empty string + """ return _generic_evelinks_url(dotlan, 'region_url', eve_obj) @register.filter -def dotlan_solar_system_url(eve_obj: object) -> str: +def dotlan_solar_system_url(eve_obj: object) -> str: """generates a dotlan URL for the given object Works with eve entity names - Returns URL or empty string - """ + Returns URL or empty string + """ return _generic_evelinks_url(dotlan, 'solar_system_url', eve_obj) # zkillboard @register.filter -def zkillboard_character_url(eve_obj: EveCharacter) -> str: +def zkillboard_character_url(eve_obj: EveCharacter) -> str: """generates a zkillboard URL for the given object Works with allianceauth.eveonline objects and eve entity IDs - Returns URL or empty string - """ + Returns URL or empty string + """ return _generic_character_url(zkillboard, 'character_id', eve_obj) - + @register.filter def zkillboard_corporation_url(eve_obj: object) -> str: """generates a zkillboard URL for the given object Works with allianceauth.eveonline objects and eve entity IDs - Returns URL or empty string + Returns URL or empty string """ return _generic_corporation_url(zkillboard, 'corporation_id', eve_obj) - + @register.filter -def zkillboard_alliance_url(eve_obj: object) -> str: +def zkillboard_alliance_url(eve_obj: object) -> str: """generates a zkillboard URL for the given object Works with allianceauth.eveonline objects and eve entity IDs - Returns URL or empty string + Returns URL or empty string """ return _generic_alliance_url(zkillboard, 'alliance_id', eve_obj) @register.filter -def zkillboard_region_url(eve_obj: object) -> str: +def zkillboard_region_url(eve_obj: object) -> str: """generates a zkillboard URL for the given object Works with eve entity IDs Returns URL or empty string @@ -202,7 +202,7 @@ def zkillboard_region_url(eve_obj: object) -> str: @register.filter -def zkillboard_solar_system_url(eve_obj: object) -> str: +def zkillboard_solar_system_url(eve_obj: object) -> str: """generates zkillboard URL for the given object Works with eve entity IDs Returns URL or empty string @@ -214,20 +214,20 @@ def zkillboard_solar_system_url(eve_obj: object) -> str: @register.filter def character_portrait_url( - eve_obj: object, + eve_obj: object, size: int = _DEFAULT_IMAGE_SIZE ) -> str: """generates an image URL for the given object Works with EveCharacter objects or character IDs Returns URL or empty string """ - if isinstance(eve_obj, EveCharacter): + if isinstance(eve_obj, EveCharacter): return eve_obj.portrait_url(size) elif eve_obj is None: return '' - - else: + + else: try: return EveCharacter.generic_portrait_url(eve_obj, size) except ValueError: @@ -236,23 +236,23 @@ def character_portrait_url( @register.filter def corporation_logo_url( - eve_obj: object, + eve_obj: object, size: int = _DEFAULT_IMAGE_SIZE ) -> str: """generates image URL for the given object Works with EveCharacter, EveCorporationInfo objects or corporation IDs Returns URL or empty string """ - if isinstance(eve_obj, EveCorporationInfo): + if isinstance(eve_obj, EveCorporationInfo): return eve_obj.logo_url(size) - elif isinstance(eve_obj, EveCharacter): + elif isinstance(eve_obj, EveCharacter): return eve_obj.corporation_logo_url(size) elif eve_obj is None: return '' - - else: + + else: try: return EveCorporationInfo.generic_logo_url(eve_obj, size) except ValueError: @@ -261,23 +261,23 @@ def corporation_logo_url( @register.filter def alliance_logo_url( - eve_obj: object, + eve_obj: object, size: int = _DEFAULT_IMAGE_SIZE ) -> str: """generates image URL for the given object Works with EveCharacter, EveAllianceInfo objects or alliance IDs Returns URL or empty string """ - if isinstance(eve_obj, EveAllianceInfo): + if isinstance(eve_obj, EveAllianceInfo): return eve_obj.logo_url(size) - elif isinstance(eve_obj, EveCharacter): + elif isinstance(eve_obj, EveCharacter): return eve_obj.alliance_logo_url(size) elif eve_obj is None: return '' - - else: + + else: try: return EveAllianceInfo.generic_logo_url(eve_obj, size) except ValueError: @@ -286,10 +286,10 @@ def alliance_logo_url( @register.filter def type_icon_url( - type_id: int, + type_id: int, size: int = _DEFAULT_IMAGE_SIZE ) -> str: - """generates a icon image URL for the given type ID + """generates a icon image URL for the given type ID Returns URL or empty string """ try: @@ -300,10 +300,10 @@ def type_icon_url( @register.filter def type_render_url( - type_id: int, + type_id: int, size: int = _DEFAULT_IMAGE_SIZE ) -> str: - """generates a render image URL for the given type ID + """generates a render image URL for the given type ID Returns URL or empty string """ try: diff --git a/allianceauth/eveonline/templatetags/examples.html b/allianceauth/eveonline/templatetags/examples.html index 61e5d096..180aa3f8 100644 --- a/allianceauth/eveonline/templatetags/examples.html +++ b/allianceauth/eveonline/templatetags/examples.html @@ -1,4 +1,4 @@ - - @@ -77,25 +76,20 @@ {% if app.approved == None %} {% if app.reviewer == user %} {% if perms.hrapplications.approve_application %} - {% trans "Approve" %} + {% trans "Approve" %} {% endif %} {% if perms.hrapplications.reject_application %} - {% trans "Reject" %} + {% trans "Reject" %} {% endif %} {% if perms.hrapplications.delete_application %} - {% trans "Delete" %} + {% trans "Delete" %} {% endif %} {% elif not app.reviewer %} - {% trans "Mark in Progress" %} + {% trans "Mark in Progress" %} {% endif %} {% endif %} {% if perms.hrapplications.add_applicationcomment %} - + {% endif %} @@ -104,15 +98,12 @@
-
+
{% for comment in comments %}
@@ -136,8 +127,7 @@
{% if perms.hrapplications.add_applicationcomment %} -
@@ -73,12 +69,10 @@ diff --git a/allianceauth/notifications/templatetags/auth_notifications.py b/allianceauth/notifications/templatetags/auth_notifications.py index c2c5ee5f..6ebce070 100644 --- a/allianceauth/notifications/templatetags/auth_notifications.py +++ b/allianceauth/notifications/templatetags/auth_notifications.py @@ -20,7 +20,7 @@ register = template.Library() @register.filter def user_unread_notification_count(user: object) -> int: """returns the number of unread notifications for user - + Will return -1 on error """ if not isinstance(user, User): @@ -29,10 +29,10 @@ def user_unread_notification_count(user: object) -> int: unread_count = Notification.objects.user_unread_count(user.pk) return unread_count - + @register.simple_tag -def notifications_refresh_time() -> int: +def notifications_refresh_time() -> int: refresh_time = getattr(settings, 'NOTIFICATIONS_REFRESH_TIME', Notification.NOTIFICATIONS_REFRESH_TIME_DEFAULT) if (not isinstance(refresh_time, int) or refresh_time < 0): logger.warning('NOTIFICATIONS_REFRESH_TIME setting is invalid. Using default.') diff --git a/allianceauth/notifications/tests/test_init.py b/allianceauth/notifications/tests/test_init.py index b4e56625..de3b9f25 100644 --- a/allianceauth/notifications/tests/test_init.py +++ b/allianceauth/notifications/tests/test_init.py @@ -13,16 +13,16 @@ class TestUserNotificationCount(TestCase): def setUpTestData(cls): cls.user = AuthUtils.create_user('magic_mike') AuthUtils.add_main_character( - cls.user, - 'Magic Mike', - '1', - corp_id='2', - corp_name='Pole Riders', - corp_ticker='PRIDE', - alliance_id='3', + cls.user, + 'Magic Mike', + '1', + corp_id='2', + corp_name='Pole Riders', + corp_ticker='PRIDE', + alliance_id='3', alliance_name='RIDERS' ) - + def test_can_notify(self): notify(self.user, 'dummy') self.assertEqual(Notification.objects.filter(user=self.user).count(), 1) diff --git a/allianceauth/notifications/tests/test_managers.py b/allianceauth/notifications/tests/test_managers.py index e7feff62..2c521fec 100644 --- a/allianceauth/notifications/tests/test_managers.py +++ b/allianceauth/notifications/tests/test_managers.py @@ -18,14 +18,14 @@ class TestQuerySet(TestCase): def setUpTestData(cls): cls.user_1 = AuthUtils.create_user('Peter Parker') cls.user_2 = AuthUtils.create_user('Clark Kent') - + @patch(MODULE_PATH + '.Notification.objects.invalidate_user_notification_cache') def test_update_will_invalidate_cache( self, mock_invalidate_user_notification_cache ): Notification.objects.notify_user(self.user_1, 'dummy_1') - Notification.objects.notify_user(self.user_2, 'dummy_2') - Notification.objects.update(viewed=True) + Notification.objects.notify_user(self.user_2, 'dummy_2') + Notification.objects.update(viewed=True) self.assertEquals(mock_invalidate_user_notification_cache.call_count, 2) @@ -34,16 +34,16 @@ class TestUserNotify(TestCase): def setUpTestData(cls): cls.user = AuthUtils.create_user('magic_mike') AuthUtils.add_main_character( - cls.user, - 'Magic Mike', - '1', - corp_id='2', - corp_name='Pole Riders', - corp_ticker='PRIDE', - alliance_id='3', + cls.user, + 'Magic Mike', + '1', + corp_id='2', + corp_name='Pole Riders', + corp_ticker='PRIDE', + alliance_id='3', alliance_name='RIDERS' ) - + def test_can_notify(self): title = 'dummy_title' message = 'dummy message' @@ -57,14 +57,14 @@ class TestUserNotify(TestCase): self.assertEqual(obj.level, level) def test_use_message_as_title_if_missing(self): - title = 'dummy_title' + title = 'dummy_title' Notification.objects.notify_user(self.user, title) self.assertEqual(Notification.objects.filter(user=self.user).count(), 1) obj = Notification.objects.first() self.assertEqual(obj.user, self.user) self.assertEqual(obj.title, title) - self.assertEqual(obj.message, title) - + self.assertEqual(obj.message, title) + @override_settings(NOTIFICATIONS_MAX_PER_USER=3) def test_remove_when_too_many_notifications(self): Notification.objects.notify_user(self.user, 'dummy') @@ -116,16 +116,16 @@ class TestUnreadCount(TestCase): def setUpTestData(cls): cls.user_1 = AuthUtils.create_user('magic_mike') AuthUtils.add_main_character( - cls.user_1, - 'Magic Mike', - '1', - corp_id='2', - corp_name='Pole Riders', - corp_ticker='PRIDE', - alliance_id='3', + cls.user_1, + 'Magic Mike', + '1', + corp_id='2', + corp_name='Pole Riders', + corp_ticker='PRIDE', + alliance_id='3', alliance_name='RIDERS' ) - + # test notifications for mike Notification.objects.all().delete() Notification.objects.create( @@ -146,19 +146,19 @@ class TestUnreadCount(TestCase): level="INFO", title="Job 3 Failed", message="Because it was broken" - ) + ) cls.user_2 = AuthUtils.create_user('teh_kid') AuthUtils.add_main_character( - cls.user_2, - 'The Kid', '2', - corp_id='2', - corp_name='Pole Riders', - corp_ticker='PRIDE', - alliance_id='3', + cls.user_2, + 'The Kid', '2', + corp_id='2', + corp_name='Pole Riders', + corp_ticker='PRIDE', + alliance_id='3', alliance_name='RIDERS' ) - + # Notifications for kid Notification.objects.create( user=cls.user_2, @@ -166,7 +166,7 @@ class TestUnreadCount(TestCase): title="Job 6 Failed", message="Because it was broken" ) - + def test_update_cache_when_not_in_cache(self, mock_cache): mock_cache.get.return_value = None @@ -174,9 +174,9 @@ class TestUnreadCount(TestCase): expected = 2 self.assertEqual(result, expected) self.assertTrue(mock_cache.set.called) - args, kwargs = mock_cache.set.call_args + args, kwargs = mock_cache.set.call_args self.assertEqual( - kwargs['key'], + kwargs['key'], Notification.objects._user_notification_cache_key(self.user_1.pk) ) self.assertEqual(kwargs['value'], expected) @@ -195,12 +195,12 @@ class TestUnreadCount(TestCase): expected = -1 self.assertEqual(result, expected) self.assertFalse(mock_cache.set.called) - + def test_can_invalidate_cache(self, mock_cache): Notification.objects.invalidate_user_notification_cache(self.user_1.pk) self.assertTrue(mock_cache.delete) - args, kwargs = mock_cache.delete.call_args + args, kwargs = mock_cache.delete.call_args self.assertEqual( - kwargs['key'], + kwargs['key'], Notification.objects._user_notification_cache_key(self.user_1.pk) ) diff --git a/allianceauth/notifications/tests/test_models.py b/allianceauth/notifications/tests/test_models.py index 32866386..554ce4ec 100644 --- a/allianceauth/notifications/tests/test_models.py +++ b/allianceauth/notifications/tests/test_models.py @@ -15,16 +15,16 @@ class TestUserNotify(TestCase): def setUpTestData(cls): cls.user = AuthUtils.create_user('magic_mike') AuthUtils.add_main_character( - cls.user, - 'Magic Mike', - '1', - corp_id='2', - corp_name='Pole Riders', - corp_ticker='PRIDE', - alliance_id='3', + cls.user, + 'Magic Mike', + '1', + corp_id='2', + corp_name='Pole Riders', + corp_ticker='PRIDE', + alliance_id='3', alliance_name='RIDERS' ) - + @patch(MODULE_PATH + '.Notification.objects.invalidate_user_notification_cache') def test_save_will_invalidate_cache(self, mock_invalidate_user_notification_cache): obj = Notification.objects.notify_user(self.user, 'dummy') diff --git a/allianceauth/notifications/tests/test_templatetags.py b/allianceauth/notifications/tests/test_templatetags.py index c39cf85b..587970be 100644 --- a/allianceauth/notifications/tests/test_templatetags.py +++ b/allianceauth/notifications/tests/test_templatetags.py @@ -20,20 +20,20 @@ class TestUserNotificationCount(TestCase): def setUpTestData(cls): cls.user = AuthUtils.create_user('magic_mike') AuthUtils.add_main_character( - cls.user, - 'Magic Mike', - '1', - corp_id='2', - corp_name='Pole Riders', - corp_ticker='PRIDE', - alliance_id='3', + cls.user, + 'Magic Mike', + '1', + corp_id='2', + corp_name='Pole Riders', + corp_ticker='PRIDE', + alliance_id='3', alliance_name='RIDERS' ) - + def test_return_normal(self, mock_user_unread_count): unread_count = 42 mock_user_unread_count.return_value = unread_count - + result = user_unread_notification_count(self.user) expected = unread_count self.assertEqual(result, expected) @@ -43,7 +43,7 @@ class TestUserNotificationCount(TestCase): def test_return_error_if_non_user(self, mock_user_unread_count): unread_count = -1 mock_user_unread_count.return_value = unread_count - + result = user_unread_notification_count('invalid') expected = unread_count self.assertEqual(result, expected) @@ -60,9 +60,9 @@ class TestNotificationsRefreshTime(TestCase): result = notifications_refresh_time() expected = MY_NOTIFICATIONS_REFRESH_TIME self.assertEqual(result, expected) - + @override_settings(NOTIFICATIONS_REFRESH_TIME=0) - def test_refresh_time_can_be_zero(self): + def test_refresh_time_can_be_zero(self): result = notifications_refresh_time() expected = 0 self.assertEqual(result, expected) diff --git a/allianceauth/notifications/tests/test_views.py b/allianceauth/notifications/tests/test_views.py index 8ae87980..7fa95bc8 100644 --- a/allianceauth/notifications/tests/test_views.py +++ b/allianceauth/notifications/tests/test_views.py @@ -19,23 +19,23 @@ class TestViews(TestCase): def setUpTestData(cls): cls.user = AuthUtils.create_user('magic_mike') AuthUtils.add_main_character( - cls.user, - 'Magic Mike', - '1', - corp_id='2', - corp_name='Pole Riders', - corp_ticker='PRIDE', - alliance_id='3', + cls.user, + 'Magic Mike', + '1', + corp_id='2', + corp_name='Pole Riders', + corp_ticker='PRIDE', + alliance_id='3', alliance_name='RIDERS' ) cls.factory = RequestFactory() - + @patch(MODULE_PATH + '.Notification.objects.user_unread_count') def test_user_notifications_count(self, mock_user_unread_count): unread_count = 42 user_pk = 3 mock_user_unread_count.return_value = unread_count - + request = self.factory.get( reverse('notifications:user_notifications_count', args=[user_pk]) ) @@ -43,7 +43,7 @@ class TestViews(TestCase): response = user_notifications_count(request, user_pk) self.assertEqual(response.status_code, 200) - self.assertTrue(mock_user_unread_count.called) + self.assertTrue(mock_user_unread_count.called) expected = {'unread_count': unread_count} result = json.loads(response.content.decode(response.charset)) self.assertDictEqual(result, expected) diff --git a/allianceauth/notifications/urls.py b/allianceauth/notifications/urls.py index f7e7b948..eeeecfc9 100644 --- a/allianceauth/notifications/urls.py +++ b/allianceauth/notifications/urls.py @@ -10,8 +10,8 @@ urlpatterns = [ url(r'^notifications/$', views.notification_list, name='list'), url(r'^notifications/(\w+)/$', views.notification_view, name='view'), url( - r'^user_notifications_count/(?P\d+)/$', - views.user_notifications_count, + r'^user_notifications_count/(?P\d+)/$', + views.user_notifications_count, name='user_notifications_count' ), ] diff --git a/allianceauth/notifications/views.py b/allianceauth/notifications/views.py index 1872038d..e23bf03f 100644 --- a/allianceauth/notifications/views.py +++ b/allianceauth/notifications/views.py @@ -18,9 +18,9 @@ def notification_list(request): new_notifs = notifications_qs.filter(viewed=False) old_notifs = notifications_qs.filter(viewed=True) logger.debug( - "User %s has %s unread and %s read notifications", - request.user, - len(new_notifs), + "User %s has %s unread and %s read notifications", + request.user, + len(new_notifs), len(old_notifs) ) context = { @@ -33,8 +33,8 @@ def notification_list(request): @login_required def notification_view(request, notif_id): logger.debug( - "notification_view called by user %s for notif_id %s", - request.user, + "notification_view called by user %s for notif_id %s", + request.user, notif_id ) notif = get_object_or_404(Notification, pk=notif_id) @@ -46,7 +46,7 @@ def notification_view(request, notif_id): else: logger.warn( "User %s not authorized to view notif_id %s belonging to user %s", - request.user, + request.user, notif_id, notif.user ) messages.error(request, _('You are not authorized to view that notification.')) @@ -57,7 +57,7 @@ def notification_view(request, notif_id): def remove_notification(request, notif_id): logger.debug( "remove notification called by user %s for notif_id %s", - request.user, + request.user, notif_id ) notif = get_object_or_404(Notification, pk=notif_id) @@ -68,8 +68,8 @@ def remove_notification(request, notif_id): messages.success(request, _('Deleted notification.')) else: logger.error( - "Unable to delete notif id %s for user %s - notif matching id not found.", - notif_id, + "Unable to delete notif id %s for user %s - notif matching id not found.", + notif_id, request.user ) messages.error(request, _('Failed to locate notification.')) @@ -94,9 +94,9 @@ def delete_all_read(request): def user_notifications_count(request, user_pk: int): """returns to notifications count for the give user as JSON - + This view is public and does not require login """ - unread_count = Notification.objects.user_unread_count(user_pk) + unread_count = Notification.objects.user_unread_count(user_pk) data = {'unread_count': unread_count} return JsonResponse(data, safe=False) diff --git a/allianceauth/optimer/auth_hooks.py b/allianceauth/optimer/auth_hooks.py index f93faa98..23231e75 100644 --- a/allianceauth/optimer/auth_hooks.py +++ b/allianceauth/optimer/auth_hooks.py @@ -6,10 +6,12 @@ from . import urls class OpTimerboardMenu(MenuItemHook): def __init__(self): - MenuItemHook.__init__(self, _('Fleet Operations'), - 'fas fa-exclamation fa-fw', - 'optimer:view', - navactive=['optimer:']) + MenuItemHook.__init__( + self, _('Fleet Operations'), + 'fas fa-exclamation fa-fw', + 'optimer:view', + navactive=['optimer:'] + ) def render(self, request): if request.user.has_perm('auth.optimer_view'): diff --git a/allianceauth/optimer/migrations/0001_initial.py b/allianceauth/optimer/migrations/0001_initial.py index 3b31c2ac..2efae2a7 100644 --- a/allianceauth/optimer/migrations/0001_initial.py +++ b/allianceauth/optimer/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-05 21:40 from __future__ import unicode_literals diff --git a/allianceauth/optimer/migrations/0002_auto_20170413_0442.py b/allianceauth/optimer/migrations/0002_auto_20170413_0442.py index 1161bbe1..e9d0267e 100644 --- a/allianceauth/optimer/migrations/0002_auto_20170413_0442.py +++ b/allianceauth/optimer/migrations/0002_auto_20170413_0442.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11 on 2017-04-13 04:42 from __future__ import unicode_literals diff --git a/allianceauth/optimer/migrations/0003_make_strings_more_stringy.py b/allianceauth/optimer/migrations/0003_make_strings_more_stringy.py index b4b07427..6f67ffb4 100644 --- a/allianceauth/optimer/migrations/0003_make_strings_more_stringy.py +++ b/allianceauth/optimer/migrations/0003_make_strings_more_stringy.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-03-22 23:35 from __future__ import unicode_literals diff --git a/allianceauth/optimer/migrations/0004_on_delete.py b/allianceauth/optimer/migrations/0004_on_delete.py index 958cdff8..69dcd1cf 100644 --- a/allianceauth/optimer/migrations/0004_on_delete.py +++ b/allianceauth/optimer/migrations/0004_on_delete.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.5 on 2017-09-28 02:16 from __future__ import unicode_literals diff --git a/allianceauth/optimer/templates/optimer/fleetoptable.html b/allianceauth/optimer/templates/optimer/fleetoptable.html index a0351ef5..2ad12f59 100644 --- a/allianceauth/optimer/templates/optimer/fleetoptable.html +++ b/allianceauth/optimer/templates/optimer/fleetoptable.html @@ -2,7 +2,7 @@ {% load evelinks %} {% block content %} -
+
@@ -154,7 +154,7 @@ {{ char.character_name }}
{{ char.corporation_name }}
{{ char.alliance_name|default:"" }} -
-
+
{{ main.main }} @@ -88,8 +87,7 @@
{{ alt.corporation_name }} {{ alt.alliance_name }} - + {% trans "Killboard" %}
{{ member }}{% trans "Killboard" %} + {% trans "Killboard" %} + {{ member.character_ownership.user.profile.main_character.character_name }} {{ member.character_ownership.user.profile.main_character.corporation_name }} {{ member.character_ownership.user.profile.main_character.alliance_name }}
{{ member.character_name }}{% trans "Killboard" %} + {% trans "Killboard" %} + {{ member.character_name }} - + {% trans "Killboard" %}
- + {{ char.character_name }} {{ char.corporation_name }} {{ notif.timestamp }} {{ notif.title }} - + - + {{ notif.timestamp }} {{ notif.title }} - + - +
diff --git a/allianceauth/permissions_tool/apps.py b/allianceauth/permissions_tool/apps.py index 39c80576..2f5e82cb 100644 --- a/allianceauth/permissions_tool/apps.py +++ b/allianceauth/permissions_tool/apps.py @@ -4,4 +4,3 @@ from django.apps import AppConfig class PermissionsToolConfig(AppConfig): name = 'allianceauth.permissions_tool' label = 'permissions_tool' - diff --git a/allianceauth/permissions_tool/auth_hooks.py b/allianceauth/permissions_tool/auth_hooks.py index bc004b45..bf78f1d2 100644 --- a/allianceauth/permissions_tool/auth_hooks.py +++ b/allianceauth/permissions_tool/auth_hooks.py @@ -6,12 +6,14 @@ from allianceauth.services.hooks import MenuItemHook, UrlHook class PermissionsTool(MenuItemHook): def __init__(self): - MenuItemHook.__init__(self, - 'Permissions Audit', - 'fas fa-id-card fa-fw', - 'permissions_tool:overview', - order=400, - navactive=['permissions_tool:']) + MenuItemHook.__init__( + self, + 'Permissions Audit', + 'fas fa-id-card fa-fw', + 'permissions_tool:overview', + order=400, + navactive=['permissions_tool:'] + ) def render(self, request): if request.user.has_perm('permissions_tool.audit_permissions'): diff --git a/allianceauth/permissions_tool/migrations/0001_initial.py b/allianceauth/permissions_tool/migrations/0001_initial.py index 8f6a4cf4..33b88a53 100644 --- a/allianceauth/permissions_tool/migrations/0001_initial.py +++ b/allianceauth/permissions_tool/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-06 08:58 from __future__ import unicode_literals diff --git a/allianceauth/permissions_tool/templates/permissions_tool/audit_row.html b/allianceauth/permissions_tool/templates/permissions_tool/audit_row.html index 390e04d7..b6d25192 100644 --- a/allianceauth/permissions_tool/templates/permissions_tool/audit_row.html +++ b/allianceauth/permissions_tool/templates/permissions_tool/audit_row.html @@ -1,7 +1,7 @@ {% load evelinks %} - diff --git a/allianceauth/permissions_tool/tests.py b/allianceauth/permissions_tool/tests.py index 76573bbc..97f8e7b4 100644 --- a/allianceauth/permissions_tool/tests.py +++ b/allianceauth/permissions_tool/tests.py @@ -40,8 +40,7 @@ class PermissionsToolViewsTestCase(WebTest): response_content = response.content.decode('utf-8') - self.assertInHTML('
  • ' - ' Permissions Audit
  • ', response_content) + self.assertInHTML('
  • Permissions Audit
  • ', response_content) def test_permissions_overview(self): self.app.set_user(self.member) diff --git a/allianceauth/permissions_tool/views.py b/allianceauth/permissions_tool/views.py index 5199fb54..11c74822 100644 --- a/allianceauth/permissions_tool/views.py +++ b/allianceauth/permissions_tool/views.py @@ -47,7 +47,7 @@ def permissions_audit(request, app_label, model, codename): try: perm = Permission.objects\ .prefetch_related('group_set', 'user_set', 'state_set', - 'state_set__userprofile_set', 'group_set__user_set', 'state_set__userprofile_set__user')\ + 'state_set__userprofile_set', 'group_set__user_set', 'state_set__userprofile_set__user')\ .get(content_type__app_label=app_label, content_type__model=model, codename=codename) except Permission.DoesNotExist: raise Http404 diff --git a/allianceauth/project_template/project_name/settings/base.py b/allianceauth/project_template/project_name/settings/base.py index d15df718..96c331ff 100644 --- a/allianceauth/project_template/project_name/settings/base.py +++ b/allianceauth/project_template/project_name/settings/base.py @@ -1,4 +1,3 @@ -# -*- coding: UTF-8 -*- """ DO NOT EDIT THIS FILE @@ -104,7 +103,7 @@ TEMPLATES = [ 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', - 'django.template.context_processors.tz', + 'django.template.context_processors.tz', 'allianceauth.context_processors.auth_settings', ], }, @@ -131,8 +130,10 @@ AUTH_PASSWORD_VALIDATORS = [ }, ] -AUTHENTICATION_BACKENDS = ['allianceauth.authentication.backends.StateBackend', - 'django.contrib.auth.backends.ModelBackend'] +AUTHENTICATION_BACKENDS = [ + 'allianceauth.authentication.backends.StateBackend', + 'django.contrib.auth.backends.ModelBackend' +] # Internationalization # https://docs.djangoproject.com/en/1.10/topics/i18n/ diff --git a/allianceauth/project_template/project_name/settings/local.py b/allianceauth/project_template/project_name/settings/local.py index 7bca8736..cc900956 100644 --- a/allianceauth/project_template/project_name/settings/local.py +++ b/allianceauth/project_template/project_name/settings/local.py @@ -19,7 +19,7 @@ DEBUG = False # Add any additional apps to this list. INSTALLED_APPS += [ - + ] # To change the logging level for extensions, uncomment the following line. diff --git a/allianceauth/services/abstract.py b/allianceauth/services/abstract.py index 44ceaffc..51614c91 100644 --- a/allianceauth/services/abstract.py +++ b/allianceauth/services/abstract.py @@ -72,8 +72,7 @@ class BaseCreatePasswordServiceAccountView(BaseServiceView, ServiceCredentialsVi messages.error(request, _("That service account already exists")) return redirect(self.index_redirect) - return render(request, self.template_name, - context={'credentials': svc_obj.credentials, 'service': self.service_name, 'view': self}) + return render(request, self.template_name, context={'credentials': svc_obj.credentials, 'service': self.service_name, 'view': self}) class ServicesCRUDMixin(SingleObjectMixin): @@ -112,5 +111,4 @@ class BaseResetPasswordServiceAccountView(ServicesCRUDMixin, BaseServiceView, Se def get(self, request): svc_obj = self.get_object() svc_obj.reset_password() - return render(request, self.template_name, - context={'credentials': svc_obj.credentials, 'service': self.service_name, 'view': self}) + return render(request, self.template_name, context={'credentials': svc_obj.credentials, 'service': self.service_name, 'view': self}) diff --git a/allianceauth/services/admin.py b/allianceauth/services/admin.py index 8b14f9ed..b10c6e8a 100644 --- a/allianceauth/services/admin.py +++ b/allianceauth/services/admin.py @@ -3,9 +3,9 @@ from django.contrib import admin from allianceauth import hooks from allianceauth.authentication.admin import ( - user_profile_pic, - user_username, - user_main_organization, + user_profile_pic, + user_username, + user_main_organization, MainCorporationsFilter, MainAllianceFilter ) @@ -22,17 +22,17 @@ class ServicesUserAdmin(admin.ModelAdmin): search_fields = ('user__username',) ordering = ('user__username',) - list_select_related = True + list_select_related = True list_display = ( user_profile_pic, user_username, '_state', - user_main_organization, + user_main_organization, '_date_joined' ) - list_filter = ( + list_filter = ( 'user__profile__state', - MainCorporationsFilter, + MainCorporationsFilter, MainAllianceFilter, 'user__date_joined', ) @@ -45,7 +45,7 @@ class ServicesUserAdmin(admin.ModelAdmin): def _date_joined(self, obj): return obj.user.date_joined - + _date_joined.short_description = 'date joined' _date_joined.admin_order_field = 'user__date_joined' diff --git a/allianceauth/services/auth_hooks.py b/allianceauth/services/auth_hooks.py index 8e400337..29104705 100644 --- a/allianceauth/services/auth_hooks.py +++ b/allianceauth/services/auth_hooks.py @@ -7,10 +7,12 @@ from .hooks import ServicesHook class Services(MenuItemHook): def __init__(self): - MenuItemHook.__init__(self, - _('Services'), - 'fas fa-cogs fa-fw', - 'services:services', 100) + MenuItemHook.__init__( + self, + _('Services'), + 'fas fa-cogs fa-fw', + 'services:services', 100 + ) def render(self, request): for svc in ServicesHook.get_services(): diff --git a/allianceauth/services/forms.py b/allianceauth/services/forms.py index cde97d76..522837f4 100644 --- a/allianceauth/services/forms.py +++ b/allianceauth/services/forms.py @@ -12,10 +12,8 @@ class FleetFormatterForm(forms.Form): formup_time = forms.CharField(label=_('Formup Time:'), required=True) expected_duration = forms.CharField(label=_('Expected Duration:'), required=True) purpose = forms.CharField(label=_('Purpose:'), required=True) - reimbursable = forms.ChoiceField(label=_('Reimbursable?*'), choices=[(_('Yes'), _('Yes')), (_('No'), _('No'))], - required=True) - important = forms.ChoiceField(label=_('Important?*'), choices=[(_('Yes'), _('Yes')), (_('No'), _('No'))], - required=True) + reimbursable = forms.ChoiceField(label=_('Reimbursable?*'), choices=[(_('Yes'), _('Yes')), (_('No'), _('No'))], required=True) + important = forms.ChoiceField(label=_('Important?*'), choices=[(_('Yes'), _('Yes')), (_('No'), _('No'))], required=True) comments = forms.CharField(label=_('Comments'), widget=forms.Textarea, required=False) diff --git a/allianceauth/services/hooks.py b/allianceauth/services/hooks.py index b75f12a1..f1f5b04d 100644 --- a/allianceauth/services/hooks.py +++ b/allianceauth/services/hooks.py @@ -139,11 +139,11 @@ class MenuItemHook: self.url_name = url_name self.template = 'public/menuitem.html' self.order = order if order is not None else 9999 - + # count is an integer shown next to the menu item as badge when count != None # apps need to set the count in their child class, e.g. in render() method self.count = None - + navactive = navactive or [] navactive.append(url_name) self.navactive = navactive @@ -181,8 +181,7 @@ class NameFormatter: main_char = getattr(self.user.profile, 'main_character', None) format_data = { - 'character_name': getattr(main_char, 'character_name', - self.user.username if self._default_to_username else None), + 'character_name': getattr(main_char, 'character_name', self.user.username if self._default_to_username else None), 'character_id': getattr(main_char, 'character_id', None), 'corp_ticker': getattr(main_char, 'corporation_ticker', None), 'corp_name': getattr(main_char, 'corporation_name', None), diff --git a/allianceauth/services/migrations/0001_squashed_0003_delete_groupcache.py b/allianceauth/services/migrations/0001_squashed_0003_delete_groupcache.py index 5c12be0f..395521ba 100644 --- a/allianceauth/services/migrations/0001_squashed_0003_delete_groupcache.py +++ b/allianceauth/services/migrations/0001_squashed_0003_delete_groupcache.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.5 on 2017-10-07 03:55 from __future__ import unicode_literals diff --git a/allianceauth/services/migrations/0002_nameformatter.py b/allianceauth/services/migrations/0002_nameformatter.py index bd84c65c..e3533817 100644 --- a/allianceauth/services/migrations/0002_nameformatter.py +++ b/allianceauth/services/migrations/0002_nameformatter.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.5 on 2017-10-07 06:43 from __future__ import unicode_literals diff --git a/allianceauth/services/models.py b/allianceauth/services/models.py index 27b867f6..4a1ec7ee 100644 --- a/allianceauth/services/models.py +++ b/allianceauth/services/models.py @@ -6,7 +6,7 @@ from allianceauth.authentication.models import State class NameFormatConfig(models.Model): service_name = models.CharField(max_length=100, blank=False) default_to_username = models.BooleanField( - default=True, + default=True, help_text= 'If a user has no main_character, ' 'default to using their Auth username instead.' @@ -20,14 +20,13 @@ class NameFormatConfig(models.Model): 'topic "Services Name Formats".' ) states = models.ManyToManyField( - State, + State, help_text= "States to apply this format to. You should only have one " - "formatter for each state for each service." + "formatter for each state for each service." ) def __str__(self): return '%s: %s' % ( self.service_name, ', '.join([str(x) for x in self.states.all()]) ) - diff --git a/allianceauth/services/modules/discord/admin.py b/allianceauth/services/modules/discord/admin.py index ae9adad5..20a8d50d 100644 --- a/allianceauth/services/modules/discord/admin.py +++ b/allianceauth/services/modules/discord/admin.py @@ -12,15 +12,15 @@ logger = LoggerAddTag(logging.getLogger(__name__), __title__) @admin.register(DiscordUser) -class DiscordUserAdmin(ServicesUserAdmin): +class DiscordUserAdmin(ServicesUserAdmin): search_fields = ServicesUserAdmin.search_fields + ('uid', 'username') list_display = ServicesUserAdmin.list_display + ('activated', '_username', '_uid') list_filter = ServicesUserAdmin.list_filter + ('activated',) ordering = ('-activated',) - + def _uid(self, obj): return obj.uid - + _uid.short_description = 'Discord ID (UID)' _uid.admin_order_field = 'uid' @@ -29,6 +29,6 @@ class DiscordUserAdmin(ServicesUserAdmin): return f'{obj.username}#{obj.discriminator}' else: return '' - + _username.short_description = 'Discord Username' _username.admin_order_field = 'username' diff --git a/allianceauth/services/modules/discord/auth_hooks.py b/allianceauth/services/modules/discord/auth_hooks.py index 46c266c6..9f71033e 100644 --- a/allianceauth/services/modules/discord/auth_hooks.py +++ b/allianceauth/services/modules/discord/auth_hooks.py @@ -1,6 +1,6 @@ import logging -from django.contrib.auth.models import User +from django.contrib.auth.models import User from django.template.loader import render_to_string from allianceauth import hooks @@ -33,11 +33,11 @@ class DiscordService(ServicesHook): if self.user_has_account(user): logger.debug('Deleting user %s %s account', user, self.name) tasks.delete_user.apply_async( - kwargs={'user_pk': user.pk, 'notify_user': notify_user}, + kwargs={'user_pk': user.pk, 'notify_user': notify_user}, priority=SINGLE_TASK_PRIORITY - ) - - def render_services_ctrl(self, request): + ) + + def render_services_ctrl(self, request): if self.user_has_account(request.user): user_has_account = True username = request.user.discord.username @@ -51,12 +51,12 @@ class DiscordService(ServicesHook): user_has_account = False return render_to_string( - self.service_ctrl_template, + self.service_ctrl_template, { 'server_name': DiscordUser.objects.server_name(), 'user_has_account': user_has_account, 'discord_username': discord_username - }, + }, request=request ) @@ -71,15 +71,15 @@ class DiscordService(ServicesHook): tasks.update_nickname.apply_async( kwargs={ 'user_pk': user.pk, - # since the new nickname is not yet in the DB we need to + # since the new nickname is not yet in the DB we need to # provide it manually to the task 'nickname': DiscordUser.objects.user_formatted_nick(user) - }, + }, priority=SINGLE_TASK_PRIORITY ) def sync_nicknames_bulk(self, users: list): - """Sync nickname for a list of users in bulk. + """Sync nickname for a list of users in bulk. Preferred over sync_nickname(), because it will not break the rate limit """ logger.debug( @@ -92,21 +92,21 @@ class DiscordService(ServicesHook): logger.debug('Update all %s groups called', self.name) tasks.update_all_groups.delay() - def update_groups(self, user): - logger.debug('Processing %s groups for %s', self.name, user) + def update_groups(self, user): + logger.debug('Processing %s groups for %s', self.name, user) if self.user_has_account(user): tasks.update_groups.apply_async( kwargs={ 'user_pk': user.pk, - # since state changes may not yet be in the DB we need to + # since state changes may not yet be in the DB we need to # provide the new state name manually to the task 'state_name': user.profile.state.name - }, + }, priority=SINGLE_TASK_PRIORITY ) def update_groups_bulk(self, users: list): - """Updates groups for a list of users in bulk. + """Updates groups for a list of users in bulk. Preferred over update_groups(), because it will not break the rate limit """ logger.debug( @@ -114,7 +114,7 @@ class DiscordService(ServicesHook): ) user_pks = [user.pk for user in users] tasks.update_groups_bulk.delay(user_pks) - + @staticmethod def user_has_account(user: User) -> bool: result = DiscordUser.objects.user_has_account(user) diff --git a/allianceauth/services/modules/discord/discord_client/app_settings.py b/allianceauth/services/modules/discord/discord_client/app_settings.py index 2b1fe5b8..7a04d77f 100644 --- a/allianceauth/services/modules/discord/discord_client/app_settings.py +++ b/allianceauth/services/modules/discord/discord_client/app_settings.py @@ -26,7 +26,7 @@ DISCORD_OAUTH_TOKEN_URL = clean_setting( 'DISCORD_OAUTH_TOKEN_URL', 'https://discord.com/api/oauth2/token' ) -# How long the Discord guild names retrieved from the server are +# How long the Discord guild names retrieved from the server are # caches locally in seconds. DISCORD_GUILD_NAME_CACHE_MAX_AGE = clean_setting( 'DISCORD_GUILD_NAME_CACHE_MAX_AGE', 3600 * 24 @@ -38,7 +38,7 @@ DISCORD_ROLES_CACHE_MAX_AGE = clean_setting( ) # Turns off creation of new roles. In case the rate limit for creating roles is -# exhausted, this setting allows the Discord service to continue to function +# exhausted, this setting allows the Discord service to continue to function # and wait out the reset. Rate limit is about 250 per 48 hrs. DISCORD_DISABLE_ROLE_CREATION = clean_setting( 'DISCORD_DISABLE_ROLE_CREATION', False diff --git a/allianceauth/services/modules/discord/discord_client/client.py b/allianceauth/services/modules/discord/discord_client/client.py index afd739e7..bbe62720 100644 --- a/allianceauth/services/modules/discord/discord_client/client.py +++ b/allianceauth/services/modules/discord/discord_client/client.py @@ -19,9 +19,9 @@ from .app_settings import ( DISCORD_API_TIMEOUT_READ, DISCORD_DISABLE_ROLE_CREATION, DISCORD_GUILD_NAME_CACHE_MAX_AGE, - DISCORD_OAUTH_BASE_URL, - DISCORD_OAUTH_TOKEN_URL, - DISCORD_ROLES_CACHE_MAX_AGE, + DISCORD_OAUTH_BASE_URL, + DISCORD_OAUTH_TOKEN_URL, + DISCORD_ROLES_CACHE_MAX_AGE, ) from .exceptions import DiscordRateLimitExhausted, DiscordTooManyRequestsError from .helpers import DiscordRoles @@ -31,7 +31,7 @@ from ..utils import LoggerAddTag logger = LoggerAddTag(logging.getLogger(__name__), __title__) # max requests that can be executed until reset -RATE_LIMIT_MAX_REQUESTS = 5 +RATE_LIMIT_MAX_REQUESTS = 5 # Time until remaining requests are reset RATE_LIMIT_RESETS_AFTER = 5000 @@ -39,7 +39,7 @@ RATE_LIMIT_RESETS_AFTER = 5000 # Delay used for API backoff in case no info returned from API on 429s DEFAULT_BACKOFF_DELAY = 5000 -# additional duration to compensate for potential clock discrepancies +# additional duration to compensate for potential clock discrepancies # with the Discord server DURATION_CONTINGENCY = 500 @@ -51,23 +51,23 @@ WAIT_THRESHOLD = 250 MINIMUM_BLOCKING_WAIT = 50 # If the rate limit resets soon we will wait it out and then retry to -# either get a remaining request from our cached counter +# either get a remaining request from our cached counter # or again wait out a short reset time and retry again. -# This could happen several times within a high concurrency situation, +# This could happen several times within a high concurrency situation, # but must fail after x tries to avoid an infinite loop RATE_LIMIT_RETRIES = 1000 class DiscordClient: """This class provides a web client for interacting with the Discord API - + The client has rate limiting that supports concurrency. - This means it is able to ensure the API rate limit is not violated, + This means it is able to ensure the API rate limit is not violated, even when used concurrently, e.g. with multiple parallel celery tasks. In addition the client support proper API backoff. - Synchronization of rate limit infos accross multiple processes + Synchronization of rate limit infos accross multiple processes is implemented with Redis and thus requires Redis as Django cache backend. All durations are in milliseconds. @@ -79,25 +79,25 @@ class DiscordClient: _KEY_GLOBAL_RATE_LIMIT_REMAINING = 'DISCORD_GLOBAL_RATE_LIMIT_REMAINING' _KEYPREFIX_GUILD_NAME = 'DISCORD_GUILD_NAME' _KEYPREFIX_GUILD_ROLES = 'DISCORD_GUILD_ROLES' - _KEYPREFIX_ROLE_NAME = 'DISCORD_ROLE_NAME' + _KEYPREFIX_ROLE_NAME = 'DISCORD_ROLE_NAME' _NICK_MAX_CHARS = 32 - + _HTTP_STATUS_CODE_NOT_FOUND = 404 _HTTP_STATUS_CODE_RATE_LIMITED = 429 _DISCORD_STATUS_CODE_UNKNOWN_MEMBER = 10007 def __init__( - self, - access_token: str, - redis: Redis = None, + self, + access_token: str, + redis: Redis = None, is_rate_limited: bool = True ) -> None: - """ + """ Params: - access_token: Discord access token used to authenticate all calls to the API - - redis: Redis instance to be used. + - redis: Redis instance to be used. - is_rate_limited: Set to False to run of rate limiting (use with care) - If not specified will try to use the Redis instance + If not specified will try to use the Redis instance from the default Django cache backend. """ self._access_token = str(access_token) @@ -116,7 +116,7 @@ class DiscordClient: lua_1 = """ if redis.call("exists", KEYS[1]) == 0 then redis.call("set", KEYS[1], ARGV[1], 'px', ARGV[2]) - end + end return redis.call("decr", KEYS[1]) """ self.__redis_script_decr_or_set = self._redis.register_script(lua_1) @@ -138,24 +138,24 @@ class DiscordClient: @property def is_rate_limited(self): return self._is_rate_limited - + def __repr__(self): return f'{type(self).__name__}(access_token=...{self.access_token[-5:]})' def _redis_decr_or_set(self, name: str, value: str, px: int) -> bool: """decreases the key value if it exists and returns the result else sets the key - + Implemented as Lua script to ensure atomicity. """ return self.__redis_script_decr_or_set( keys=[str(name)], args=[str(value), int(px)] ) - + def _redis_set_if_longer(self, name: str, value: str, px: int) -> bool: - """like set, but only goes through if either key doesn't exist - or px would be extended. - + """like set, but only goes through if either key doesn't exist + or px would be extended. + Implemented as Lua script to ensure atomicity. """ return self.__redis_script_set_longer( @@ -163,7 +163,7 @@ class DiscordClient: ) # users - + def current_user(self) -> dict: """returns the user belonging to the current access_token""" authorization = f'Bearer {self.access_token}' @@ -171,7 +171,7 @@ class DiscordClient: method='get', route='users/@me', authorization=authorization ) return r.json() - + # guild def guild_infos(self, guild_id: int) -> dict: @@ -181,7 +181,7 @@ class DiscordClient: return r.json() def guild_name(self, guild_id: int, use_cache: bool = True) -> str: - """returns the name of this guild (cached) + """returns the name of this guild (cached) or an empty string if something went wrong Params: @@ -198,8 +198,8 @@ class DiscordClient: if 'name' in guild_infos: guild_name = guild_infos['name'] self._redis.set( - name=key_name, - value=guild_name, + name=key_name, + value=guild_name, ex=DISCORD_GUILD_NAME_CACHE_MAX_AGE ) else: @@ -208,7 +208,7 @@ class DiscordClient: return guild_name @classmethod - def _guild_name_cache_key(cls, guild_id: int) -> str: + def _guild_name_cache_key(cls, guild_id: int) -> str: """Returns key for accessing role given by name in the role cache""" gen_key = DiscordClient._generate_hash(f'{guild_id}') return f'{cls._KEYPREFIX_GUILD_NAME}__{gen_key}' @@ -217,38 +217,38 @@ class DiscordClient: def guild_roles(self, guild_id: int, use_cache: bool = True) -> list: """Returns the list of all roles for this guild - + If use_cache is set to False it will always hit the API to retrieve fresh data and update the cache """ cache_key = self._guild_roles_cache_key(guild_id) - if use_cache: + if use_cache: roles_raw = self._redis.get(name=cache_key) if roles_raw: logger.debug('Returning roles for guild %s from cache', guild_id) return json.loads(self._redis_decode(roles_raw)) else: logger.debug('No roles for guild %s in cache', guild_id) - + route = f"guilds/{guild_id}/roles" - r = self._api_request(method='get', route=route) + r = self._api_request(method='get', route=route) roles = r.json() if roles and isinstance(roles, list): self._redis.set( - name=cache_key, - value=json.dumps(roles), + name=cache_key, + value=json.dumps(roles), ex=DISCORD_ROLES_CACHE_MAX_AGE ) return roles def create_guild_role(self, guild_id: int, role_name: str, **kwargs) -> dict: - """Create a new guild role with the given name. + """Create a new guild role with the given name. See official documentation for additional optional parameters. Note that Discord allows the creation of multiple roles with the same name, - so to avoid duplicates it's important to check existing roles + so to avoid duplicates it's important to check existing roles before creating new one - + returns a new role dict on success """ route = f"guilds/{guild_id}/roles" @@ -269,9 +269,9 @@ class DiscordClient: return True else: return False - - def _invalidate_guild_roles_cache(self, guild_id: int) -> None: - cache_key = self._guild_roles_cache_key(guild_id) + + def _invalidate_guild_roles_cache(self, guild_id: int) -> None: + cache_key = self._guild_roles_cache_key(guild_id) self._redis.delete(cache_key) logger.debug('Guild roles cache invalidated') @@ -280,7 +280,7 @@ class DiscordClient: """Returns key for accessing cached roles for a guild""" gen_key = cls._generate_hash(f'{guild_id}') return f'{cls._KEYPREFIX_GUILD_ROLES}__{gen_key}' - + def match_role_from_name(self, guild_id: int, role_name: str) -> dict: """returns Discord role matching the given name or an empty dict""" guild_roles = DiscordRoles(self.guild_roles(guild_id)) @@ -288,12 +288,12 @@ class DiscordClient: def match_or_create_roles_from_names(self, guild_id: int, role_names: list) -> list: """returns Discord roles matching the given names - + Returns as list of tuple of role and created flag Will try to match with existing roles names Non-existing roles will be created, then created flag will be True - + Params: - guild_id: ID of guild - role_names: list of name strings each defining a role @@ -305,7 +305,7 @@ class DiscordClient: } for role_name in role_names_cleaned: role, created = self.match_or_create_role_from_name( - guild_id=guild_id, + guild_id=guild_id, role_name=DiscordRoles.sanitize_role_name(role_name), guild_roles=guild_roles ) @@ -321,46 +321,46 @@ class DiscordClient: """returns Discord role matching the given name Returns as tuple of role and created flag - + Will try to match with existing roles names Non-existing roles will be created, then created flag will be True - + Params: - guild_id: ID of guild - role_name: strings defining name of a role - - guild_roles: All known guild roles as DiscordRoles object. - Helps to void redundant lookups of guild roles + - guild_roles: All known guild roles as DiscordRoles object. + Helps to void redundant lookups of guild roles when this method is used multiple times. """ if not isinstance(role_name, str): raise TypeError('role_name must be of type string') - created = False + created = False if guild_roles is None: guild_roles = DiscordRoles(self.guild_roles(guild_id)) role = guild_roles.role_by_name(role_name) if not role: if not DISCORD_DISABLE_ROLE_CREATION: logger.debug('Need to create missing role: %s', role_name) - role = self.create_guild_role(guild_id, role_name) + role = self.create_guild_role(guild_id, role_name) created = True else: role = None - + return role, created # guild members def add_guild_member( - self, - guild_id: int, - user_id: int, - access_token: str, - role_ids: list = None, + self, + guild_id: int, + user_id: int, + access_token: str, + role_ids: list = None, nick: str = None - ) -> bool: + ) -> bool: """Adds a user to the guilds. - + Returns: - True when a new user was added - None if the user already existed @@ -370,13 +370,13 @@ class DiscordClient: data = { 'access_token': str(access_token) } - if role_ids: + if role_ids: data['roles'] = self._sanitize_role_ids(role_ids) if nick: data['nick'] = str(nick)[:self._NICK_MAX_CHARS] - r = self._api_request(method='put', route=route, data=data) + r = self._api_request(method='put', route=route, data=data) r.raise_for_status() if r.status_code == 201: return True @@ -384,10 +384,10 @@ class DiscordClient: return None else: return False - + def guild_member(self, guild_id: int, user_id: int) -> dict: """returns the user info for a guild member - + or None if the user is not a member of the guild """ route = f'guilds/{guild_id}/members/{user_id}' @@ -411,14 +411,14 @@ class DiscordClient: """ if not role_ids and not nick: raise ValueError('Must specify role_ids or nick') - + if role_ids and not isinstance(role_ids, list): raise TypeError('role_ids must be a list type') data = dict() - if role_ids: + if role_ids: data['roles'] = self._sanitize_role_ids(role_ids) - + if nick: data['nick'] = self._sanitize_nick(nick) @@ -431,7 +431,7 @@ class DiscordClient: return None else: r.raise_for_status() - + if r.status_code == 204: return True else: @@ -439,7 +439,7 @@ class DiscordClient: def remove_guild_member(self, guild_id: int, user_id: int) -> bool: """Remove a member from a guild - + Returns: - True when successful - None if member does not exist @@ -448,7 +448,7 @@ class DiscordClient: route = f"guilds/{guild_id}/members/{user_id}" r = self._api_request( method='delete', route=route, raise_for_status=False - ) + ) if self._is_member_unknown_error(r): logger.warning('User ID %s is not a member of this guild', user_id) return None @@ -461,12 +461,12 @@ class DiscordClient: return False # Guild member roles - + def add_guild_member_role( self, guild_id: int, user_id: int, role_id: int - ) -> bool: + ) -> bool: """Adds a role to a guild member - + Returns: - True when successful - None if member does not exist @@ -479,7 +479,7 @@ class DiscordClient: return None else: r.raise_for_status() - + if r.status_code == 204: return True else: @@ -489,7 +489,7 @@ class DiscordClient: self, guild_id: int, user_id: int, role_id: int ) -> bool: """Removes a role to a guild member - + Returns: - True when successful - None if member does not exist @@ -517,31 +517,31 @@ class DiscordClient: ) except (ValueError, KeyError): result = False - + return result # Internal methods def _api_request( - self, - method: str, - route: str, - data: dict = None, + self, + method: str, + route: str, + data: dict = None, authorization: str = None, raise_for_status: bool = True ) -> requests.Response: """Core method for performing all API calls""" uid = uuid1().hex - + if not hasattr(requests, method): raise ValueError('Invalid method: %s' % method) if not authorization: authorization = f'Bot {self.access_token}' - - self._handle_ongoing_api_backoff(uid) + + self._handle_ongoing_api_backoff(uid) if self.is_rate_limited: - self._ensure_rate_limed_not_exhausted(uid) + self._ensure_rate_limed_not_exhausted(uid) headers = { 'User-Agent': f'{AUTH_TITLE} ({__url__}, {__version__})', 'accept': 'application/json', @@ -559,21 +559,21 @@ class DiscordClient: } if data: args['json'] = data - + logger.info('%s: sending %s request to url \'%s\'', uid, method.upper(), url) logger.debug('%s: request headers: %s', uid, headers) r = getattr(requests, method)(**args) logger.debug( - '%s: returned status code %d with headers: %s', - uid, - r.status_code, + '%s: returned status code %d with headers: %s', + uid, + r.status_code, r.headers ) logger.debug('%s: response:\n%s', uid, r.text) if not r.ok: logger.warning( '%s: Discord API returned error code %d and this response: %s', - uid, + uid, r.status_code, r.text ) @@ -582,15 +582,15 @@ class DiscordClient: self._handle_new_api_backoff(r, uid) self._report_rate_limit_from_api(r, uid) - + if raise_for_status: r.raise_for_status() - + return r - def _handle_ongoing_api_backoff(self, uid: str) -> None: + def _handle_ongoing_api_backoff(self, uid: str) -> None: """checks if api is currently on backoff - if on backoff: will do a blocking wait if it expires soon, + if on backoff: will do a blocking wait if it expires soon, else raises exception """ global_backoff_duration = self._redis.pttl(self._KEY_GLOBAL_BACKOFF_UNTIL) @@ -611,52 +611,52 @@ class DiscordClient: raise DiscordTooManyRequestsError(retry_after=global_backoff_duration) def _ensure_rate_limed_not_exhausted(self, uid: str) -> int: - """ensures that the rate limit is not exhausted - if exhausted: will do a blocking wait if rate limit resets soon, + """ensures that the rate limit is not exhausted + if exhausted: will do a blocking wait if rate limit resets soon, else raises exception returns requests remaining on success """ for _ in range(RATE_LIMIT_RETRIES): requests_remaining = self._redis_decr_or_set( - name=self._KEY_GLOBAL_RATE_LIMIT_REMAINING, - value=RATE_LIMIT_MAX_REQUESTS, + name=self._KEY_GLOBAL_RATE_LIMIT_REMAINING, + value=RATE_LIMIT_MAX_REQUESTS, px=RATE_LIMIT_RESETS_AFTER + DURATION_CONTINGENCY - ) + ) resets_in = max( - MINIMUM_BLOCKING_WAIT, + MINIMUM_BLOCKING_WAIT, self._redis.pttl(self._KEY_GLOBAL_RATE_LIMIT_REMAINING) ) if requests_remaining >= 0: logger.debug( '%s: Got one of %d remaining requests until reset in %s ms', - uid, + uid, requests_remaining + 1, resets_in ) return requests_remaining - elif resets_in < WAIT_THRESHOLD: + elif resets_in < WAIT_THRESHOLD: sleep(resets_in / 1000) logger.debug( '%s: No requests remaining until reset in %d ms. ' 'Waiting for reset.', - uid, + uid, resets_in ) continue - else: + else: logger.debug( '%s: No requests remaining until reset in %d ms. ' 'Raising exception.', - uid, + uid, resets_in ) raise DiscordRateLimitExhausted(resets_in) raise RuntimeError('Failed to handle rate limit after after too tries.') - + def _handle_new_api_backoff(self, r: requests.Response, uid: str) -> None: """raises exception for new API backoff error""" response = r.json() @@ -669,7 +669,7 @@ class DiscordClient: else: retry_after = DEFAULT_BACKOFF_DELAY self._redis_set_if_longer( - name=self._KEY_GLOBAL_BACKOFF_UNTIL, + name=self._KEY_GLOBAL_BACKOFF_UNTIL, value='GLOBAL_API_BACKOFF', px=retry_after ) @@ -684,8 +684,8 @@ class DiscordClient: """Tries to log the current rate limit reported from API""" if ( logger.getEffectiveLevel() <= logging.DEBUG - and 'x-ratelimit-limit' in r.headers - and 'x-ratelimit-remaining' in r.headers + and 'x-ratelimit-limit' in r.headers + and 'x-ratelimit-remaining' in r.headers and 'x-ratelimit-reset-after' in r.headers ): try: @@ -701,7 +701,7 @@ class DiscordClient: ) except ValueError: pass - + @staticmethod def _redis_decode(value: str) -> str: """Decodes a string from Redis and passes through None and Booleans""" diff --git a/allianceauth/services/modules/discord/discord_client/exceptions.py b/allianceauth/services/modules/discord/discord_client/exceptions.py index 7a8697f7..24e01e4b 100644 --- a/allianceauth/services/modules/discord/discord_client/exceptions.py +++ b/allianceauth/services/modules/discord/discord_client/exceptions.py @@ -3,18 +3,18 @@ import math class DiscordClientException(Exception): """Base Exception for the Discord client""" - + class DiscordApiBackoff(DiscordClientException): """Exception signaling we need to backoff from sending requests to the API for now """ - + def __init__(self, retry_after: int): """ :param retry_after: int time to retry after in milliseconds """ super().__init__() - self.retry_after = int(retry_after) + self.retry_after = int(retry_after) @property def retry_after_seconds(self): @@ -22,12 +22,12 @@ class DiscordApiBackoff(DiscordClientException): class DiscordRateLimitExhausted(DiscordApiBackoff): - """Exception signaling that the total number of requests allowed under the + """Exception signaling that the total number of requests allowed under the current rate limit have been exhausted and weed to wait until next reset. """ - + class DiscordTooManyRequestsError(DiscordApiBackoff): - """API has responded with a 429 Too Many Requests Error. + """API has responded with a 429 Too Many Requests Error. Need to backoff for now. - """ + """ diff --git a/allianceauth/services/modules/discord/discord_client/helpers.py b/allianceauth/services/modules/discord/discord_client/helpers.py index ec890b7b..02cce05d 100644 --- a/allianceauth/services/modules/discord/discord_client/helpers.py +++ b/allianceauth/services/modules/discord/discord_client/helpers.py @@ -3,10 +3,10 @@ from copy import copy class DiscordRoles: """Container class that helps dealing with Discord roles. - + Objects of this class are immutable and work in many ways like sets. - - Ideally objects are initialized from raw API responses, + + Ideally objects are initialized from raw API responses, e.g. from DiscordClient.guild.roles() """ _ROLE_NAME_MAX_CHARS = 100 @@ -21,7 +21,7 @@ class DiscordRoles: self._assert_valid_role(role) self._roles[int(role['id'])] = role self._roles_by_name[self.sanitize_role_name(role['name'])] = role - + def __eq__(self, other): if isinstance(other, type(self)): return self.ids() == other.ids() @@ -29,31 +29,31 @@ class DiscordRoles: def __hash__(self): return hash(tuple(sorted(self._roles.keys()))) - + def __iter__(self): for role in self._roles.values(): yield role - def __contains__(self, item) -> bool: + def __contains__(self, item) -> bool: return int(item) in self._roles - def __len__(self): + def __len__(self): return len(self._roles.keys()) - + def has_roles(self, role_ids: set) -> bool: """returns true if this objects contains all roles defined by given role_ids incl. managed roles """ role_ids = {int(id) for id in role_ids} - all_role_ids = self._roles.keys() + all_role_ids = self._roles.keys() return role_ids.issubset(all_role_ids) - + def ids(self) -> set: """return a set of all role IDs""" return set(self._roles.keys()) def subset(self, role_ids: set = None, managed_only: bool = False) -> object: - """returns a new object containing the subset of roles as defined + """returns a new object containing the subset of roles as defined by given role IDs and/or including managed roles only """ if role_ids is not None: @@ -68,23 +68,23 @@ class DiscordRoles: return type(self)([ role for _, role in self._roles.items() if role['managed'] ]) - + elif role_ids is not None and managed_only: return type(self)([ - role for role_id, role in self._roles.items() + role for role_id, role in self._roles.items() if role_id in role_ids and role['managed'] ]) - + else: return copy(self) def union(self, other: object) -> object: - """returns a new roles object that is the union of this roles object + """returns a new roles object that is the union of this roles object with other""" return type(self)(list(self) + list(other)) def difference(self, other: object) -> object: - """returns a new roles object that only contains the roles + """returns a new roles object that only contains the roles that exist in the current objects, but not in other """ new_ids = self.ids().difference(other.ids()) @@ -97,11 +97,11 @@ class DiscordRoles: return self._roles_by_name[role_name] else: return dict() - + @classmethod def create_from_matched_roles(cls, matched_roles: list) -> None: """returns a new object created from the given list of matches roles - + matches_roles must be a list of tuples in the form: (role, created) """ raw_roles = [x[0] for x in matched_roles] @@ -111,10 +111,10 @@ class DiscordRoles: def _assert_valid_role(role: dict): if not isinstance(role, dict): raise TypeError('Roles must be of type dict: %s' % role) - + if 'id' not in role or 'name' not in role or 'managed' not in role: raise ValueError('This role is not valid: %s' % role) - + @classmethod def sanitize_role_name(cls, role_name: str) -> str: """shortens too long strings if necessary""" diff --git a/allianceauth/services/modules/discord/discord_client/tests/__init__.py b/allianceauth/services/modules/discord/discord_client/tests/__init__.py index bd354b57..7ba14d17 100644 --- a/allianceauth/services/modules/discord/discord_client/tests/__init__.py +++ b/allianceauth/services/modules/discord/discord_client/tests/__init__.py @@ -27,8 +27,8 @@ ALL_ROLES = [ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE] def create_user_info( - id: int = TEST_USER_ID, - username: str = TEST_USER_NAME, + id: int = TEST_USER_ID, + username: str = TEST_USER_NAME, discriminator: str = TEST_USER_DISCRIMINATOR ): return { diff --git a/allianceauth/services/modules/discord/discord_client/tests/piloting_concurrency.py b/allianceauth/services/modules/discord/discord_client/tests/piloting_concurrency.py index 36c068c7..b3202d66 100644 --- a/allianceauth/services/modules/discord/discord_client/tests/piloting_concurrency.py +++ b/allianceauth/services/modules/discord/discord_client/tests/piloting_concurrency.py @@ -5,11 +5,11 @@ The results can be analysed in a special log file. This script is design to be run manually as unit test, e.g. by running the following: -python manage.py test +python manage.py test allianceauth.services.modules.discord.discord_client.tests.piloting_concurrency To make it work please set the below mentioned environment variables for your server. -Since this may cause lots of 429s we'd recommend NOT to use your +Since this may cause lots of 429s we'd recommend NOT to use your alliance Discord server for this. """ @@ -49,7 +49,7 @@ def worker(num: int): client = DiscordClient(DISCORD_BOT_TOKEN) try: runs = 0 - while runs < NUMBER_OF_RUNS: + while runs < NUMBER_OF_RUNS: run_info = '%s: run %d' % (worker_info, runs + 1) my_jitter_secs = random() * MAX_JITTER_PER_RUN_SECS logger.info('%s - waiting %s secs', run_info, f'{my_jitter_secs:.3f}') @@ -67,18 +67,18 @@ def worker(num: int): logger.info(message) print() print(message) - sleep(bo.retry_after / 1000) - + sleep(bo.retry_after / 1000) + except Exception as ex: logger.exception('%s: Processing aborted: %s', worker_info, ex) - + logger.info('%s: finished', worker_info) return class TestMulti(TestCase): - - def test_multi(self): + + def test_multi(self): logger.info('Starting multi test') for num in range(NUMBER_OF_WORKERS): x = threading.Thread(target=worker, args=(num + 1,)) diff --git a/allianceauth/services/modules/discord/discord_client/tests/piloting_functionality.py b/allianceauth/services/modules/discord/discord_client/tests/piloting_functionality.py index b20907c2..ad729b8b 100644 --- a/allianceauth/services/modules/discord/discord_client/tests/piloting_functionality.py +++ b/allianceauth/services/modules/discord/discord_client/tests/piloting_functionality.py @@ -1,7 +1,7 @@ """This script is for functional testing of the Discord client with a Discord server -It will run single requests of the various functions to validate -that they actually work - excluding those that require Oauth, or does not work +It will run single requests of the various functions to validate +that they actually work - excluding those that require Oauth, or does not work with a bot token. The results can be also seen in a special log file. This script is design to be run manually as unit test, e.g. by running the following: @@ -10,7 +10,7 @@ python manage.py test allianceauth.services.modules.discord.discord_self.client.tests.piloting_functionality To make it work please set the below mentioned environment variables for your server. -Since this may cause lots of 429s we'd recommend NOT to use your +Since this may cause lots of 429s we'd recommend NOT to use your alliance Discord server for this. """ @@ -46,7 +46,7 @@ class TestDiscordApiLive(TestCase): """runs features that have not been run in any of the other tests""" self.client.guild_infos(DISCORD_GUILD_ID) sleep(RATE_LIMIT_DELAY_SECS) - + self.client.guild_name(DISCORD_GUILD_ID) sleep(RATE_LIMIT_DELAY_SECS) @@ -57,9 +57,9 @@ class TestDiscordApiLive(TestCase): DISCORD_GUILD_ID, ['Testrole A', 'Testrole B'] ) sleep(RATE_LIMIT_DELAY_SECS) - - def test_create_and_remove_roles(self): - # get base + + def test_create_and_remove_roles(self): + # get base logger.info('guild_roles') expected = {role['id'] for role in self.client.guild_roles(DISCORD_GUILD_ID)} @@ -70,8 +70,8 @@ class TestDiscordApiLive(TestCase): guild_id=DISCORD_GUILD_ID, role_name=role_name ) sleep(RATE_LIMIT_DELAY_SECS) - self.assertEqual(new_role['name'], role_name) - + self.assertEqual(new_role['name'], role_name) + # remove role again logger.info('delete_guild_role') self.client.delete_guild_role( @@ -102,7 +102,7 @@ class TestDiscordApiLive(TestCase): sleep(RATE_LIMIT_DELAY_SECS) self.assertEqual(user['nick'], new_nick) - def test_member_add_remove_roles(self): + def test_member_add_remove_roles(self): # create new guild role logger.info('create_guild_role') new_role = self.client.create_guild_role( @@ -110,7 +110,7 @@ class TestDiscordApiLive(TestCase): ) sleep(RATE_LIMIT_DELAY_SECS) new_role_id = new_role['id'] - + # add to member logger.info('add_guild_member_role') self.assertTrue( @@ -119,7 +119,7 @@ class TestDiscordApiLive(TestCase): ) ) sleep(RATE_LIMIT_DELAY_SECS) - + # remove again logger.info('remove_guild_member_role') self.assertTrue( diff --git a/allianceauth/services/modules/discord/discord_client/tests/test_client.py b/allianceauth/services/modules/discord/discord_client/tests/test_client.py index da4e6f65..4f540723 100644 --- a/allianceauth/services/modules/discord/discord_client/tests/test_client.py +++ b/allianceauth/services/modules/discord/discord_client/tests/test_client.py @@ -14,11 +14,11 @@ from . import ( TEST_USER_ID, TEST_USER_NAME, TEST_BOT_TOKEN, - TEST_ROLE_ID, - ROLE_ALPHA, - ROLE_BRAVO, - ALL_ROLES, - create_role, + TEST_ROLE_ID, + ROLE_ALPHA, + ROLE_BRAVO, + ALL_ROLES, + create_role, create_matched_role, create_user_info ) @@ -91,7 +91,7 @@ class TestBasicsAndHelpers(TestCase): mock_default_cache = MagicMock(**{'get_master_client.return_value': my_redis}) my_dict = {'default': mock_default_cache} mock_caches.__getitem__.side_effect = my_dict.__getitem__ - + client = DiscordClient(TEST_BOT_TOKEN) self.assertTrue(mock_default_cache.get_master_client.called) self.assertEqual(client._redis, my_redis) @@ -102,24 +102,24 @@ class TestBasicsAndHelpers(TestCase): mock_default_cache = MagicMock(**{'get_master_client.return_value': my_redis}) my_dict = {'default': mock_default_cache} mock_caches.__getitem__.side_effect = my_dict.__getitem__ - + with self.assertRaises(RuntimeError): DiscordClient(TEST_BOT_TOKEN) - - self.assertTrue(mock_default_cache.get_master_client.called) - + + self.assertTrue(mock_default_cache.get_master_client.called) + @requests_mock.Mocker() class TestOtherMethods(TestCase): - + def setUp(self): self.client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) self.headers = DEFAULT_REQUEST_HEADERS - def test_user_get_current(self, requests_mocker): + def test_user_get_current(self, requests_mocker): expected = create_user_info() headers = { - 'accept': 'application/json', + 'accept': 'application/json', 'authorization': 'Bearer accesstoken' } requests_mocker.register_uri( @@ -132,33 +132,33 @@ class TestOtherMethods(TestCase): result = client.current_user() self.assertDictEqual(result, expected) - def test_get_infos(self, requests_mocker): + def test_get_infos(self, requests_mocker): expected = { - 'id': TEST_GUILD_ID, + 'id': TEST_GUILD_ID, 'name': 'alpha' - } - requests_mocker.get( + } + requests_mocker.get( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}', request_headers=self.headers, json=expected - ) + ) result = self.client.guild_infos(TEST_GUILD_ID) self.assertDictEqual(result, expected) - + @requests_mock.Mocker() -class TestGuildRoles(TestCase): +class TestGuildRoles(TestCase): def setUp(self): self.url = f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles' - def test_without_cache(self, requests_mocker): + def test_without_cache(self, requests_mocker): expected = [ROLE_ALPHA, ROLE_BRAVO] my_mock_redis = MagicMock(**{ 'get.return_value': None, 'pttl.return_value': -1, }) - requests_mocker.get( + requests_mocker.get( url=self.url, request_headers=DEFAULT_REQUEST_HEADERS, json=expected @@ -168,12 +168,12 @@ class TestGuildRoles(TestCase): self.assertListEqual(result, expected) self.assertTrue(my_mock_redis.set.called) - def test_return_from_cache_if_in_cache(self, requests_mocker): + def test_return_from_cache_if_in_cache(self, requests_mocker): expected = [ROLE_ALPHA, ROLE_BRAVO] my_mock_redis = MagicMock(**{ 'get.return_value': json.dumps(expected).encode('utf8') }) - client = DiscordClient2(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient2(TEST_BOT_TOKEN, my_mock_redis) result = client.guild_roles(TEST_GUILD_ID) self.assertEqual(result, expected) self.assertFalse(my_mock_redis.set.called) @@ -186,12 +186,12 @@ class TestGuildRoles(TestCase): 'get.return_value': None, 'pttl.return_value': -1, }) - requests_mocker.get( + requests_mocker.get( url=self.url, request_headers=DEFAULT_REQUEST_HEADERS, json=expected ) - client = DiscordClient2(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient2(TEST_BOT_TOKEN, my_mock_redis) result = client.guild_roles(TEST_GUILD_ID) self.assertEqual(result, expected) self.assertTrue(my_mock_redis.set.called) @@ -204,12 +204,12 @@ class TestGuildRoles(TestCase): 'get.return_value': None, 'pttl.return_value': -1, }) - requests_mocker.get( + requests_mocker.get( url=self.url, request_headers=DEFAULT_REQUEST_HEADERS, json=expected ) - client = DiscordClient2(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient2(TEST_BOT_TOKEN, my_mock_redis) result = client.guild_roles(TEST_GUILD_ID) self.assertEqual(result, expected) self.assertFalse(my_mock_redis.set.called) @@ -222,57 +222,57 @@ class TestGuildRoles(TestCase): 'get.return_value': None, 'pttl.return_value': -1, }) - requests_mocker.get( + requests_mocker.get( url=self.url, request_headers=DEFAULT_REQUEST_HEADERS, json=expected ) - client = DiscordClient2(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient2(TEST_BOT_TOKEN, my_mock_redis) result = client.guild_roles(TEST_GUILD_ID) self.assertEqual(result, expected) self.assertFalse(my_mock_redis.set.called) - + @requests_mock.Mocker() class TestGuildMember(TestCase): - + def setUp(self): self.client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) self.headers = DEFAULT_REQUEST_HEADERS def test_return_guild_member_when_ok(self, requests_mocker): expected = create_user_info() - requests_mocker.get( + requests_mocker.get( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}', request_headers=self.headers, json=expected - ) + ) result = self.client.guild_member(TEST_GUILD_ID, TEST_USER_ID) self.assertDictEqual(result, expected) - def test_return_none_if_member_not_known(self, requests_mocker): - requests_mocker.get( + def test_return_none_if_member_not_known(self, requests_mocker): + requests_mocker.get( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}', request_headers=self.headers, - status_code=404, + status_code=404, json={'code': 10007} - ) - result = self.client.guild_member(TEST_GUILD_ID, TEST_USER_ID) + ) + result = self.client.guild_member(TEST_GUILD_ID, TEST_USER_ID) self.assertIsNone(result) - def test_raise_exception_on_error(self, requests_mocker): - requests_mocker.get( + def test_raise_exception_on_error(self, requests_mocker): + requests_mocker.get( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}', request_headers=self.headers, status_code=500 - ) + ) with self.assertRaises(HTTPError): - self.client.guild_member(TEST_GUILD_ID, TEST_USER_ID) - + self.client.guild_member(TEST_GUILD_ID, TEST_USER_ID) + class TestGuildGetName(TestCase): - @patch(MODULE_PATH + '.DiscordClient.guild_infos') + @patch(MODULE_PATH + '.DiscordClient.guild_infos') def test_returns_from_cache_if_found(self, mock_guild_get_infos): guild_name = 'Omega' my_mock_redis = MagicMock(**{'get.return_value': guild_name.encode('utf8')}) @@ -283,7 +283,7 @@ class TestGuildGetName(TestCase): self.assertTrue(my_mock_redis.get.called) self.assertFalse(my_mock_redis.set.called) - @patch(MODULE_PATH + '.DiscordClient.guild_infos') + @patch(MODULE_PATH + '.DiscordClient.guild_infos') def test_fetches_from_server_if_not_found_in_cache_and_stores_in_cache( self, mock_guild_get_infos ): @@ -296,7 +296,7 @@ class TestGuildGetName(TestCase): self.assertTrue(my_mock_redis.get.called) self.assertTrue(my_mock_redis.set.called) - @patch(MODULE_PATH + '.DiscordClient.guild_infos') + @patch(MODULE_PATH + '.DiscordClient.guild_infos') def test_fetches_from_server_if_asked_to_ignore_cache_and_stores_in_cache( self, mock_guild_get_infos ): @@ -309,7 +309,7 @@ class TestGuildGetName(TestCase): self.assertEqual(result, guild_name) self.assertTrue(my_mock_redis.set.called) - @patch(MODULE_PATH + '.DiscordClient.guild_infos') + @patch(MODULE_PATH + '.DiscordClient.guild_infos') def test_return_empty_if_not_found_in_cache_and_not_returned_from_server( self, mock_guild_get_infos ): @@ -325,7 +325,7 @@ class TestGuildGetName(TestCase): @requests_mock.Mocker() class TestCreateGuildRole(TestCase): - def setUp(self): + def setUp(self): self.request_url = f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles' self.my_mock_redis = MagicMock(**{ 'get.return_value': None, @@ -340,39 +340,39 @@ class TestCreateGuildRole(TestCase): def data_matcher(request): return (json.loads(request.text) == expected) - - requests_mocker.post( + + requests_mocker.post( self.request_url, request_headers=DEFAULT_REQUEST_HEADERS, additional_matcher=data_matcher, text=json.dumps(expected), - ) + ) result = self.client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=role_name_input ) self.assertDictEqual(result, expected) self.assertTrue(self.my_mock_redis.delete.called) - def test_guild_create_role_empty_response(self, requests_mocker): + def test_guild_create_role_empty_response(self, requests_mocker): expected = {} requests_mocker.post( self.request_url, - request_headers=DEFAULT_REQUEST_HEADERS, + request_headers=DEFAULT_REQUEST_HEADERS, text=json.dumps(expected), - ) + ) result = self.client.create_guild_role( guild_id=TEST_GUILD_ID, role_name='dummy' ) self.assertDictEqual(result, expected) self.assertFalse(self.my_mock_redis.delete.called) - + @requests_mock.Mocker() class TestGuildDeleteRole(TestCase): - def setUp(self): + def setUp(self): self.request_url = \ - f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles/{TEST_ROLE_ID}' + f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles/{TEST_ROLE_ID}' self.my_mock_redis = MagicMock(**{ 'get.return_value': None, 'pttl.return_value': -1, @@ -380,7 +380,7 @@ class TestGuildDeleteRole(TestCase): self.client = DiscordClient2(TEST_BOT_TOKEN, self.my_mock_redis) def test_guild_delete_role_success(self, requests_mocker): - requests_mocker.delete( + requests_mocker.delete( self.request_url, request_headers=DEFAULT_REQUEST_HEADERS, status_code=204 @@ -392,7 +392,7 @@ class TestGuildDeleteRole(TestCase): self.assertTrue(self.my_mock_redis.delete.called) def test_guild_delete_role_failed(self, requests_mocker): - requests_mocker.delete( + requests_mocker.delete( self.request_url, request_headers=DEFAULT_REQUEST_HEADERS, status_code=200 @@ -406,9 +406,9 @@ class TestGuildDeleteRole(TestCase): @requests_mock.Mocker() class TestGuildAddMember(TestCase): - + def setUp(self): - self.access_token = 'accesstoken' + self.access_token = 'accesstoken' self.headers = DEFAULT_REQUEST_HEADERS self.request_url = \ f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}' @@ -416,59 +416,59 @@ class TestGuildAddMember(TestCase): def test_create_new_without_params(self, requests_mocker): - def data_matcher(request): + def data_matcher(request): expected = {'access_token': self.access_token} return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'PUT', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=201, - ) + status_code=201, + ) result = self.client.add_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, access_token=self.access_token ) self.assertTrue(result) def test_create_existing_without_params(self, requests_mocker): - - def data_matcher(request): + + def data_matcher(request): expected = {'access_token': self.access_token} return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'PUT', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=204, - ) + status_code=204, + ) result = self.client.add_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, access_token=self.access_token ) self.assertIsNone(result) def test_create_failed_without_params(self, requests_mocker): - - def data_matcher(request): + + def data_matcher(request): expected = {'access_token': self.access_token} return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'PUT', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=200, - ) + status_code=200, + ) result = self.client.add_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, access_token=self.access_token ) @@ -484,16 +484,16 @@ class TestGuildAddMember(TestCase): 'roles': role_ids } return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'PUT', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=201, - ) + status_code=201, + ) result = self.client.add_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, access_token=self.access_token, role_ids=role_ids @@ -503,7 +503,7 @@ class TestGuildAddMember(TestCase): def test_raise_exception_on_invalid_roles(self, requests_mocker): with self.assertRaises(ValueError): self.client.add_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, access_token=self.access_token, role_ids=['abc', 'def'] @@ -520,16 +520,16 @@ class TestGuildAddMember(TestCase): 'nick': nick_used } return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'PUT', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=201, - ) + status_code=201, + ) result = self.client.add_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, access_token=self.access_token, nick=nick_input @@ -539,9 +539,9 @@ class TestGuildAddMember(TestCase): @requests_mock.Mocker() class TestGuildModifyMember(TestCase): - + def setUp(self): - self.access_token = 'accesstoken' + self.access_token = 'accesstoken' self.headers = DEFAULT_REQUEST_HEADERS.copy() self.headers['content-type'] = 'application/json' self.request_url = \ @@ -550,20 +550,20 @@ class TestGuildModifyMember(TestCase): def test_can_update_roles(self, requests_mocker): role_ids = [1, 2] - - def data_matcher(request): + + def data_matcher(request): expected = {'roles': role_ids} return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'patch', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=204, - ) + status_code=204, + ) result = self.client.modify_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_ids=role_ids ) @@ -572,20 +572,20 @@ class TestGuildModifyMember(TestCase): def test_can_update_nick(self, requests_mocker): nick_input = 'x' * 50 nick_used = 'x' * 32 - - def data_matcher(request): + + def data_matcher(request): expected = {'nick': nick_used} return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'patch', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=204, - ) + status_code=204, + ) result = self.client.modify_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, nick=nick_input ) @@ -593,23 +593,23 @@ class TestGuildModifyMember(TestCase): def test_can_update_roles_and_nick(self, requests_mocker): role_ids = [1, 2] - - def data_matcher(request): + + def data_matcher(request): expected = { 'roles': role_ids, 'nick': TEST_USER_NAME } return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'patch', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=204, - ) + status_code=204, + ) result = self.client.modify_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_ids=role_ids, nick=TEST_USER_NAME, @@ -618,20 +618,20 @@ class TestGuildModifyMember(TestCase): def test_returns_none_if_member_is_unknown(self, requests_mocker): - def data_matcher(request): + def data_matcher(request): expected = {'nick': TEST_USER_NAME} return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'patch', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=404, + status_code=404, json={'code': 10007} - ) + ) result = self.client.modify_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, nick=TEST_USER_NAME ) @@ -639,19 +639,19 @@ class TestGuildModifyMember(TestCase): def test_returns_false_if_unsuccessful(self, requests_mocker): - def data_matcher(request): + def data_matcher(request): expected = {'nick': TEST_USER_NAME} return (json.loads(request.text) == expected) - + requests_mocker.register_uri( 'patch', self.request_url, request_headers=self.headers, additional_matcher=data_matcher, - status_code=200, - ) + status_code=200, + ) result = self.client.modify_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, nick=TEST_USER_NAME ) @@ -660,16 +660,16 @@ class TestGuildModifyMember(TestCase): def test_raise_exception_on_invalid_roles(self, requests_mocker): with self.assertRaises(ValueError): self.client.modify_guild_member( - guild_id=TEST_GUILD_ID, - user_id=TEST_USER_ID, + guild_id=TEST_GUILD_ID, + user_id=TEST_USER_ID, role_ids=['abc', 'def'] ) def test_raise_exception_if_role_ids_not_list_like(self, requests_mocker): with self.assertRaises(TypeError): self.client.modify_guild_member( - guild_id=TEST_GUILD_ID, - user_id=TEST_USER_ID, + guild_id=TEST_GUILD_ID, + user_id=TEST_USER_ID, role_ids='I am not a list' ) @@ -678,19 +678,19 @@ class TestGuildModifyMember(TestCase): ): with self.assertRaises(ValueError): self.client.modify_guild_member( - guild_id=TEST_GUILD_ID, + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID ) class TestGuildRemoveMember(TestCase): - def setUp(self): + def setUp(self): self.headers = DEFAULT_REQUEST_HEADERS self.request_url = \ f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}' self.client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) - + @requests_mock.Mocker() def test_returns_true_on_success(self, requests_mocker): requests_mocker.register_uri( @@ -698,12 +698,12 @@ class TestGuildRemoveMember(TestCase): self.request_url, request_headers=self.headers, status_code=204 - ) + ) result = self.client.remove_guild_member( guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID ) self.assertTrue(result) - + @requests_mock.Mocker() def test_returns_none_if_member_unknown(self, requests_mocker): requests_mocker.register_uri( @@ -712,7 +712,7 @@ class TestGuildRemoveMember(TestCase): request_headers=self.headers, status_code=404, json={'code': 10007} - ) + ) result = self.client.remove_guild_member( guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID ) @@ -726,7 +726,7 @@ class TestGuildRemoveMember(TestCase): request_headers=self.headers, status_code=404, json={} - ) + ) with self.assertRaises(HTTPError): self.client.remove_guild_member( guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID @@ -739,7 +739,7 @@ class TestGuildRemoveMember(TestCase): self.request_url, request_headers=self.headers, status_code=404 - ) + ) with self.assertRaises(HTTPError): self.client.remove_guild_member( guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID @@ -752,7 +752,7 @@ class TestGuildRemoveMember(TestCase): self.request_url, request_headers=self.headers, status_code=200 - ) + ) result = self.client.remove_guild_member( guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID ) @@ -760,58 +760,7 @@ class TestGuildRemoveMember(TestCase): class TestGuildMemberAddRole(TestCase): - - def setUp(self): - self.headers = DEFAULT_REQUEST_HEADERS - self.request_url = ( - f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}' - f'/roles/{TEST_ROLE_ID}' - ) - self.client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) - - @requests_mock.Mocker() - def test_returns_true_on_success(self, requests_mocker): - requests_mocker.register_uri( - 'PUT', - self.request_url, - request_headers=self.headers, - status_code=204 - ) - result = self.client.add_guild_member_role( - guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID - ) - self.assertTrue(result) - @requests_mock.Mocker() - def test_return_none_if_member_not_known(self, requests_mocker): - requests_mocker.register_uri( - 'PUT', - self.request_url, - request_headers=self.headers, - status_code=404, - json={'code': 10007} - ) - result = self.client.add_guild_member_role( - guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID - ) - self.assertIsNone(result) - - @requests_mock.Mocker() - def test_returns_false_when_not_successful(self, requests_mocker): - requests_mocker.register_uri( - 'PUT', - self.request_url, - request_headers=self.headers, - status_code=200 - ) - result = self.client.add_guild_member_role( - guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID - ) - self.assertFalse(result) - - -class TestGuildMemberRemoveRole(TestCase): - def setUp(self): self.headers = DEFAULT_REQUEST_HEADERS self.request_url = ( @@ -819,7 +768,58 @@ class TestGuildMemberRemoveRole(TestCase): f'/roles/{TEST_ROLE_ID}' ) self.client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) - + + @requests_mock.Mocker() + def test_returns_true_on_success(self, requests_mocker): + requests_mocker.register_uri( + 'PUT', + self.request_url, + request_headers=self.headers, + status_code=204 + ) + result = self.client.add_guild_member_role( + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID + ) + self.assertTrue(result) + + @requests_mock.Mocker() + def test_return_none_if_member_not_known(self, requests_mocker): + requests_mocker.register_uri( + 'PUT', + self.request_url, + request_headers=self.headers, + status_code=404, + json={'code': 10007} + ) + result = self.client.add_guild_member_role( + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID + ) + self.assertIsNone(result) + + @requests_mock.Mocker() + def test_returns_false_when_not_successful(self, requests_mocker): + requests_mocker.register_uri( + 'PUT', + self.request_url, + request_headers=self.headers, + status_code=200 + ) + result = self.client.add_guild_member_role( + guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID + ) + self.assertFalse(result) + + +class TestGuildMemberRemoveRole(TestCase): + + def setUp(self): + self.headers = DEFAULT_REQUEST_HEADERS + self.request_url = ( + f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}' + f'/roles/{TEST_ROLE_ID}' + ) + self.client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) + @requests_mock.Mocker() def test_returns_true_on_success(self, requests_mocker): requests_mocker.register_uri( @@ -827,7 +827,7 @@ class TestGuildMemberRemoveRole(TestCase): self.request_url, request_headers=self.headers, status_code=204 - ) + ) result = self.client.remove_guild_member_role( guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID ) @@ -839,9 +839,9 @@ class TestGuildMemberRemoveRole(TestCase): 'DELETE', self.request_url, request_headers=self.headers, - status_code=404, + status_code=404, json={'code': 10007} - ) + ) result = self.client.remove_guild_member_role( guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID ) @@ -854,7 +854,7 @@ class TestGuildMemberRemoveRole(TestCase): self.request_url, request_headers=self.headers, status_code=200 - ) + ) result = self.client.remove_guild_member_role( guild_id=TEST_GUILD_ID, user_id=TEST_USER_ID, role_id=TEST_ROLE_ID ) @@ -865,14 +865,14 @@ class TestMatchGuildRolesToName(TestCase): def setUp(self): self.url = f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles' - + @requests_mock.Mocker() def test_return_role_if_known(self, requests_mocker): my_mock_redis = MagicMock(**{ 'get.return_value': None, 'pttl.return_value': -1, }) - requests_mocker.get( + requests_mocker.get( url=self.url, request_headers=DEFAULT_REQUEST_HEADERS, json=ALL_ROLES @@ -887,7 +887,7 @@ class TestMatchGuildRolesToName(TestCase): 'get.return_value': None, 'pttl.return_value': -1, }) - requests_mocker.get( + requests_mocker.get( url=self.url, request_headers=DEFAULT_REQUEST_HEADERS, json=ALL_ROLES @@ -900,11 +900,11 @@ class TestMatchGuildRolesToName(TestCase): @patch(MODULE_PATH + '.DiscordClient.create_guild_role') @patch(MODULE_PATH + '.DiscordClient.guild_roles') class TestMatchOrCreateGuildRolesToName(TestCase): - + def test_return_role_if_known( self, mock_guild_get_roles, mock_guild_create_role, ): - role_name = 'alpha' + role_name = 'alpha' mock_guild_get_roles.return_value = ALL_ROLES client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) result = client.match_or_create_role_from_name(TEST_GUILD_ID, role_name) @@ -929,23 +929,23 @@ class TestMatchOrCreateGuildRolesToName(TestCase): def test_return_none_if_role_creation_is_disabled( self, mock_guild_get_roles, mock_guild_create_role, ): - role_name = 'echo' - mock_guild_get_roles.return_value = ALL_ROLES + role_name = 'echo' + mock_guild_get_roles.return_value = ALL_ROLES client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) result = client.match_or_create_role_from_name(TEST_GUILD_ID, role_name) expected = (None, False) self.assertEqual(result, expected) self.assertFalse(mock_guild_create_role.called) - + def test_raise_exception_if_name_has_invalid_type( self, mock_guild_get_roles, mock_guild_create_role, ): role_name = ['echo'] - mock_guild_get_roles.return_value = ALL_ROLES + mock_guild_get_roles.return_value = ALL_ROLES client = DiscordClient2(TEST_BOT_TOKEN, mock_redis) with self.assertRaises(TypeError): - client.match_or_create_role_from_name(TEST_GUILD_ID, role_name) - + client.match_or_create_role_from_name(TEST_GUILD_ID, role_name) + @patch(MODULE_PATH + '.DiscordClient.create_guild_role') @patch(MODULE_PATH + '.DiscordClient.guild_roles') @@ -960,7 +960,7 @@ class TestMatchOrCreateGuildRolesToNames(TestCase): result = client.match_or_create_roles_from_names(TEST_GUILD_ID, role_names) expected = [create_matched_role(ROLE_ALPHA), create_matched_role(ROLE_BRAVO)] self.assertEqual( - DiscordRoles.create_from_matched_roles(result), + DiscordRoles.create_from_matched_roles(result), DiscordRoles.create_from_matched_roles(expected) ) self.assertFalse(mock_guild_create_role.called) @@ -977,7 +977,7 @@ class TestMatchOrCreateGuildRolesToNames(TestCase): expected = \ [create_matched_role(ROLE_ALPHA), create_matched_role(new_role, True)] self.assertEqual( - DiscordRoles.create_from_matched_roles(result), + DiscordRoles.create_from_matched_roles(result), DiscordRoles.create_from_matched_roles(expected) ) self.assertTrue(mock_guild_create_role.called) @@ -994,7 +994,7 @@ class TestMatchOrCreateGuildRolesToNames(TestCase): result = client.match_or_create_roles_from_names(TEST_GUILD_ID, role_names) expected = [create_matched_role(ROLE_ALPHA)] self.assertEqual( - DiscordRoles.create_from_matched_roles(result), + DiscordRoles.create_from_matched_roles(result), DiscordRoles.create_from_matched_roles(expected) ) self.assertFalse(mock_guild_create_role.called) @@ -1008,7 +1008,7 @@ class TestMatchOrCreateGuildRolesToNames(TestCase): result = client.match_or_create_roles_from_names(TEST_GUILD_ID, role_names) expected = [create_matched_role(ROLE_ALPHA), create_matched_role(ROLE_BRAVO)] self.assertEqual( - DiscordRoles.create_from_matched_roles(result), + DiscordRoles.create_from_matched_roles(result), DiscordRoles.create_from_matched_roles(expected) ) self.assertFalse(mock_guild_create_role.called) @@ -1025,7 +1025,7 @@ class TestMatchOrCreateGuildRolesToNames(TestCase): result = client.match_or_create_roles_from_names(TEST_GUILD_ID, role_names) expected = [create_matched_role(new_role)] self.assertEqual( - DiscordRoles.create_from_matched_roles(result), + DiscordRoles.create_from_matched_roles(result), DiscordRoles.create_from_matched_roles(expected) ) self.assertFalse(mock_guild_create_role.called) @@ -1035,7 +1035,7 @@ class TestApiRequestBasics(TestCase): def setUp(self): self.client = DiscordClient(TEST_BOT_TOKEN, mock_redis) - + @patch(MODULE_PATH + '.requests', spec=requests) def test_raises_exception_on_invalid_method(self, mock_requests): with self.assertRaises(ValueError): @@ -1045,25 +1045,25 @@ class TestApiRequestBasics(TestCase): @patch(MODULE_PATH + '.DiscordClient._redis_decr_or_set') @requests_mock.Mocker() class TestRateLimitMechanic(TestCase): - + my_role = ROLE_ALPHA - + @staticmethod def my_redis_pttl(name: str): if name == DiscordClient._KEY_GLOBAL_BACKOFF_UNTIL: return -1 else: return TEST_RETRY_AFTER - + def test_proceed_if_requests_remaining( self, mock_redis_decr_or_set, requests_mocker - ): + ): requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role - ) + ) my_mock_redis = MagicMock(**{'pttl.side_effect': self.my_redis_pttl}) mock_redis_decr_or_set.return_value = 5 - client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) result = client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=self.my_role['name'] ) @@ -1072,15 +1072,15 @@ class TestRateLimitMechanic(TestCase): @patch(MODULE_PATH + '.sleep') def test_wait_if_reset_happens_soon( self, requests_mocker, mock_sleep, mock_redis_decr_or_set - ): + ): counter = 0 - + def my_redis_pttl_2(name: str): if name == DiscordClient._KEY_GLOBAL_BACKOFF_UNTIL: return -1 else: return 100 - + def my_redis_decr_or_set(**kwargs): nonlocal counter counter += 1 @@ -1092,12 +1092,12 @@ class TestRateLimitMechanic(TestCase): requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role - ) + ) mock_sleep.side_effect = my_sleep my_mock_redis = MagicMock(**{'pttl.side_effect': my_redis_pttl_2}) - mock_redis_decr_or_set.side_effect = my_redis_decr_or_set + mock_redis_decr_or_set.side_effect = my_redis_decr_or_set client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) - + result = client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=self.my_role['name'] ) @@ -1107,15 +1107,15 @@ class TestRateLimitMechanic(TestCase): @patch(MODULE_PATH + '.sleep') def test_wait_if_reset_happens_soon_and_sleep_must_not_be_negative( self, requests_mocker, mock_sleep, mock_redis_decr_or_set - ): + ): counter = 0 - + def my_redis_pttl_2(name: str): if name == DiscordClient._KEY_GLOBAL_BACKOFF_UNTIL: return -1 else: return -1 - + def my_redis_decr_or_set(**kwargs): nonlocal counter counter += 1 @@ -1127,24 +1127,24 @@ class TestRateLimitMechanic(TestCase): requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role - ) + ) mock_sleep.side_effect = my_sleep my_mock_redis = MagicMock(**{'pttl.side_effect': my_redis_pttl_2}) mock_redis_decr_or_set.side_effect = my_redis_decr_or_set client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) - + result = client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=self.my_role['name'] ) self.assertDictEqual(result, self.my_role) self.assertTrue(mock_sleep.called) - + def test_throw_exception_if_rate_limit_reached( self, mock_redis_decr_or_set, requests_mocker - ): + ): requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role - ) + ) my_mock_redis = MagicMock(**{'pttl.side_effect': self.my_redis_pttl}) mock_redis_decr_or_set.return_value = -1 client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) @@ -1160,42 +1160,42 @@ class TestRateLimitMechanic(TestCase): @patch(MODULE_PATH + '.sleep') def test_throw_exception_if_retries_are_exhausted( self, requests_mocker, mock_sleep, mock_redis_decr_or_set - ): + ): def my_redis_pttl_2(name: str): if name == DiscordClient._KEY_GLOBAL_BACKOFF_UNTIL: return -1 else: return 100 - + requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role - ) + ) mock_sleep.side_effect = my_sleep my_mock_redis = MagicMock(**{'pttl.side_effect': my_redis_pttl_2}) mock_redis_decr_or_set.return_value = -1 client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) - + with self.assertRaises(RuntimeError): client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=self.my_role['name'] ) - + def test_report_api_rate_limits( self, mock_redis_decr_or_set, requests_mocker - ): + ): headers = { 'x-ratelimit-limit': '10', 'x-ratelimit-remaining': '9', 'x-ratelimit-reset-after': '10.000', } requests_mocker.post( - f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', + f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role, headers=headers - ) + ) my_mock_redis = MagicMock(**{'pttl.side_effect': self.my_redis_pttl}) mock_redis_decr_or_set.return_value = 5 - client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) result = client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=self.my_role['name'] ) @@ -1203,20 +1203,20 @@ class TestRateLimitMechanic(TestCase): def test_dont_report_api_rate_limits( self, mock_redis_decr_or_set, requests_mocker - ): + ): headers = { 'x-ratelimit-limit': '10', 'x-ratelimit-remaining': '5', 'x-ratelimit-reset-after': '10.000', } requests_mocker.post( - f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', + f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role, headers=headers - ) + ) my_mock_redis = MagicMock(**{'pttl.side_effect': self.my_redis_pttl}) mock_redis_decr_or_set.return_value = 5 - client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) result = client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=self.my_role['name'] ) @@ -1224,20 +1224,20 @@ class TestRateLimitMechanic(TestCase): def test_ignore_errors_in_api_rate_limits( self, mock_redis_decr_or_set, requests_mocker - ): + ): headers = { 'x-ratelimit-limit': '10', 'x-ratelimit-remaining': '0', 'x-ratelimit-reset-after': 'invalid', } requests_mocker.post( - f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', + f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role, headers=headers - ) + ) my_mock_redis = MagicMock(**{'pttl.side_effect': self.my_redis_pttl}) mock_redis_decr_or_set.return_value = 5 - client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) result = client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=self.my_role['name'] ) @@ -1245,14 +1245,14 @@ class TestRateLimitMechanic(TestCase): @patch(MODULE_PATH + '.DiscordClient._ensure_rate_limed_not_exhausted') def test_can_turn_off_rate_limiting( - self, - requests_mocker, - mock_ensure_rate_limed_not_exhausted, + self, + requests_mocker, + mock_ensure_rate_limed_not_exhausted, mock_redis_decr_or_set - ): + ): requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role - ) + ) client = DiscordClient(TEST_BOT_TOKEN, mock_redis, is_rate_limited=False) result = client.create_guild_role( guild_id=TEST_GUILD_ID, role_name=self.my_role['name'] @@ -1264,7 +1264,7 @@ class TestRateLimitMechanic(TestCase): @patch(MODULE_PATH + '.DiscordClient._redis_decr_or_set') @requests_mock.Mocker() class TestBackoffHandling(TestCase): - + my_role = ROLE_ALPHA def test_dont_raise_exception_when_no_global_backoff( @@ -1275,17 +1275,17 @@ class TestBackoffHandling(TestCase): ) my_mock_redis = MagicMock(**{'pttl.return_value': -1}) mock_redis_decr_or_set.return_value = 5 - client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) + client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) result = client.create_guild_role(guild_id=TEST_GUILD_ID, role_name='dummy') self.assertDictEqual(result, self.my_role) - + def test_raise_exception_when_global_backoff_in_effect( self, mock_redis_decr_or_set, requests_mocker ): requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role ) - retry_after = 1000 + retry_after = 1000 my_mock_redis = MagicMock(**{'pttl.return_value': retry_after}) mock_redis_decr_or_set.return_value = 5 client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) @@ -1299,7 +1299,7 @@ class TestBackoffHandling(TestCase): @patch(MODULE_PATH + '.sleep') def test_just_wait_if_global_backoff_ends_soon( - self, requests_mocker, mock_sleep, mock_redis_decr_or_set, + self, requests_mocker, mock_sleep, mock_redis_decr_or_set, ): requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', json=self.my_role @@ -1315,22 +1315,22 @@ class TestBackoffHandling(TestCase): result = client.create_guild_role(guild_id=TEST_GUILD_ID, role_name='dummy') self.assertDictEqual(result, self.my_role) self.assertTrue(mock_sleep.called) - + @patch(MODULE_PATH + '.DiscordClient._redis_set_if_longer') def test_raise_exception_if_api_returns_429( self, requests_mocker, mock_redis_set_if_longer, mock_redis_decr_or_set, ): retry_after = 5000 - requests_mocker.post( + requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', status_code=429, json={'retry_after': retry_after} - ) + ) my_mock_redis = MagicMock( **{'pttl.side_effect': TestRateLimitMechanic.my_redis_pttl} ) mock_redis_decr_or_set.return_value = 5 - + client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) try: client.create_guild_role( @@ -1347,16 +1347,16 @@ class TestBackoffHandling(TestCase): def test_raise_exception_if_api_returns_429_no_retry_info( self, requests_mocker, mock_redis_set_if_longer, mock_redis_decr_or_set, ): - requests_mocker.post( + requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', status_code=429, json={} - ) + ) my_mock_redis = MagicMock( **{'pttl.side_effect': TestRateLimitMechanic.my_redis_pttl} ) mock_redis_decr_or_set.return_value = 5 - + client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) try: client.create_guild_role( @@ -1373,16 +1373,16 @@ class TestBackoffHandling(TestCase): def test_raise_exception_if_api_returns_429_ignore_value_error( self, requests_mocker, mock_redis_set_if_longer, mock_redis_decr_or_set, ): - requests_mocker.post( + requests_mocker.post( f'{API_BASE_URL}guilds/{TEST_GUILD_ID}/roles', status_code=429, json={'retry_after': "invalid"} - ) + ) my_mock_redis = MagicMock( **{'pttl.side_effect': TestRateLimitMechanic.my_redis_pttl} ) mock_redis_decr_or_set.return_value = 5 - + client = DiscordClient(TEST_BOT_TOKEN, my_mock_redis) try: client.create_guild_role( @@ -1412,7 +1412,7 @@ class TestRedisDecode(TestCase): class TestTouchLuaScripts(TestCase): - + def test__redis_script_decr_or_set(self): client = DiscordClient(TEST_BOT_TOKEN, mock_redis) client._redis_decr_or_set(name='dummy', value=5, px=1000) diff --git a/allianceauth/services/modules/discord/discord_client/tests/test_exceptions.py b/allianceauth/services/modules/discord/discord_client/tests/test_exceptions.py index e52be58a..25f412f3 100644 --- a/allianceauth/services/modules/discord/discord_client/tests/test_exceptions.py +++ b/allianceauth/services/modules/discord/discord_client/tests/test_exceptions.py @@ -1,8 +1,8 @@ from unittest import TestCase from ..exceptions import ( - DiscordApiBackoff, - DiscordClientException, + DiscordApiBackoff, + DiscordClientException, DiscordRateLimitExhausted, DiscordTooManyRequestsError ) diff --git a/allianceauth/services/modules/discord/discord_client/tests/test_helpers.py b/allianceauth/services/modules/discord/discord_client/tests/test_helpers.py index 9edf0e1a..e19140cf 100644 --- a/allianceauth/services/modules/discord/discord_client/tests/test_helpers.py +++ b/allianceauth/services/modules/discord/discord_client/tests/test_helpers.py @@ -25,7 +25,7 @@ class TestDiscordRoles(TestCase): def test_raises_exception_if_roles_raw_of_wrong_type(self): with self.assertRaises(TypeError): DiscordRoles({'id': 1}) - + def test_raises_exception_if_list_contains_non_dict(self): roles_raw = [ROLE_ALPHA, 'not_valid'] with self.assertRaises(TypeError): @@ -45,7 +45,7 @@ class TestDiscordRoles(TestCase): roles_raw = [{'id': 1, 'name': 'alpha'}] with self.assertRaises(ValueError): DiscordRoles(roles_raw) - + def test_roles_are_equal(self): roles_a = DiscordRoles([ROLE_ALPHA, ROLE_BRAVO]) roles_b = DiscordRoles([ROLE_ALPHA, ROLE_BRAVO]) @@ -57,19 +57,19 @@ class TestDiscordRoles(TestCase): self.assertNotEqual(roles_a, roles_b) def test_different_objects_are_not_equal(self): - roles_a = DiscordRoles([ROLE_ALPHA, ROLE_BRAVO]) + roles_a = DiscordRoles([ROLE_ALPHA, ROLE_BRAVO]) self.assertFalse(roles_a == "invalid") - def test_len(self): + def test_len(self): self.assertEqual(len(self.all_roles), 4) def test_contains(self): self.assertTrue(1 in self.all_roles) self.assertFalse(99 in self.all_roles) - def test_sanitize_role_name(self): + def test_sanitize_role_name(self): role_name_input = 'x' * 110 - role_name_expected = 'x' * 100 + role_name_expected = 'x' * 100 result = DiscordRoles.sanitize_role_name(role_name_input) self.assertEqual(result, role_name_expected) @@ -94,8 +94,8 @@ class TestIds(TestCase): def setUp(self): self.all_roles = DiscordRoles(ALL_ROLES) - - def test_return_role_ids_default(self): + + def test_return_role_ids_default(self): result = self.all_roles.ids() expected = {1, 2, 3, 13} self.assertSetEqual(result, expected) @@ -154,7 +154,7 @@ class TestHasRoles(TestCase): def test_true_if_all_roles_exit_str(self): self.assertTrue(self.all_roles.has_roles(['1', '2'])) - + def test_false_if_role_does_not_exit(self): self.assertFalse(self.all_roles.has_roles([99])) @@ -163,7 +163,7 @@ class TestHasRoles(TestCase): def test_true_for_empty_roles(self): self.assertTrue(self.all_roles.has_roles([])) - + class TestGetMatchingRolesByName(TestCase): diff --git a/allianceauth/services/modules/discord/managers.py b/allianceauth/services/modules/discord/managers.py index d54599de..e8953586 100644 --- a/allianceauth/services/modules/discord/managers.py +++ b/allianceauth/services/modules/discord/managers.py @@ -16,7 +16,7 @@ from .app_settings import ( DISCORD_APP_SECRET, DISCORD_BOT_TOKEN, DISCORD_CALLBACK_URL, - DISCORD_GUILD_ID, + DISCORD_GUILD_ID, DISCORD_SYNC_NAMES ) from .discord_client import DiscordClient @@ -41,9 +41,9 @@ class DiscordUserManager(models.Manager): ] def add_user( - self, - user: User, - authorization_code: str, + self, + user: User, + authorization_code: str, is_rate_limited: bool = True ) -> bool: """adds a new Discord user @@ -52,10 +52,10 @@ class DiscordUserManager(models.Manager): - user: Auth user to join - authorization_code: authorization code returns from oauth - is_rate_limited: When False will disable default rate limiting (use with care) - + Returns: True on success, else False or raises exception """ - try: + try: nickname = self.user_formatted_nick(user) if DISCORD_SYNC_NAMES else None group_names = self.user_group_names(user) access_token = self._exchange_auth_code_for_token(authorization_code) @@ -63,18 +63,18 @@ class DiscordUserManager(models.Manager): discord_user = user_client.current_user() user_id = discord_user['id'] bot_client = self._bot_client(is_rate_limited=is_rate_limited) - - if group_names: + + if group_names: role_ids = match_or_create_roles_from_names( - client=bot_client, - guild_id=DISCORD_GUILD_ID, + client=bot_client, + guild_id=DISCORD_GUILD_ID, role_names=group_names ).ids() else: role_ids = None - + created = bot_client.add_guild_member( - guild_id=DISCORD_GUILD_ID, + guild_id=DISCORD_GUILD_ID, user_id=user_id, access_token=access_token, role_ids=role_ids, @@ -88,10 +88,10 @@ class DiscordUserManager(models.Manager): user_id, ) self.update_or_create( - user=user, + user=user, defaults={ - 'uid': user_id, - 'username': discord_user['username'][:32], + 'uid': user_id, + 'username': discord_user['username'][:32], 'discriminator': discord_user['discriminator'][:4], 'activated': now() } @@ -121,7 +121,7 @@ class DiscordUserManager(models.Manager): or None if user has no main """ from .auth_hooks import DiscordService - + if user.profile.main_character: return NameFormatter(DiscordService(), user).format_name() else: @@ -139,10 +139,10 @@ class DiscordUserManager(models.Manager): "Group names for roles updates of user %s are: %s", user, group_names ) return group_names - + def user_has_account(self, user: User) -> bool: """Returns True if the user has an Discord account, else False - + only checks locally, does not hit the API """ if not isinstance(user, User): @@ -157,7 +157,7 @@ class DiscordUserManager(models.Manager): 'permissions': str(cls.BOT_PERMISSIONS) }) - return f'{DiscordClient.OAUTH_BASE_URL}?{params}' + return f'{DiscordClient.OAUTH_BASE_URL}?{params}' @classmethod def generate_oauth_redirect_url(cls) -> str: @@ -171,16 +171,16 @@ class DiscordUserManager(models.Manager): def _exchange_auth_code_for_token(authorization_code: str) -> str: oauth = OAuth2Session(DISCORD_APP_ID, redirect_uri=DISCORD_CALLBACK_URL) token = oauth.fetch_token( - DiscordClient.OAUTH_TOKEN_URL, - client_secret=DISCORD_APP_SECRET, + DiscordClient.OAUTH_TOKEN_URL, + client_secret=DISCORD_APP_SECRET, code=authorization_code ) logger.debug("Received token from OAuth") return token['access_token'] - + @classmethod def server_name(cls, use_cache: bool = True) -> str: - """returns the name of the current Discord server + """returns the name of the current Discord server or an empty string if the name could not be retrieved Params: @@ -194,7 +194,7 @@ class DiscordUserManager(models.Manager): server_name = "" except Exception: logger.warning( - "Unexpected error when trying to retrieve the server name from Discord", + "Unexpected error when trying to retrieve the server name from Discord", exc_info=True ) server_name = "" diff --git a/allianceauth/services/modules/discord/migrations/0001_initial.py b/allianceauth/services/modules/discord/migrations/0001_initial.py index b9865117..ca627630 100644 --- a/allianceauth/services/modules/discord/migrations/0001_initial.py +++ b/allianceauth/services/modules/discord/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:14 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/discord/migrations/0002_service_permissions.py b/allianceauth/services/modules/discord/migrations/0002_service_permissions.py index 7f1fd92e..8779615d 100644 --- a/allianceauth/services/modules/discord/migrations/0002_service_permissions.py +++ b/allianceauth/services/modules/discord/migrations/0002_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/discord/models.py b/allianceauth/services/modules/discord/models.py index db14f2c8..d74aecc8 100644 --- a/allianceauth/services/modules/discord/models.py +++ b/allianceauth/services/modules/discord/models.py @@ -22,11 +22,11 @@ logger = LoggerAddTag(logging.getLogger(__name__), __title__) class DiscordUser(models.Model): USER_RELATED_NAME = 'discord' - + user = models.OneToOneField( - User, - primary_key=True, - on_delete=models.CASCADE, + User, + primary_key=True, + on_delete=models.CASCADE, related_name=USER_RELATED_NAME, help_text='Auth user owning this Discord account' ) @@ -35,21 +35,21 @@ class DiscordUser(models.Model): help_text='user\'s ID on Discord' ) username = models.CharField( - max_length=32, - default='', + max_length=32, + default='', blank=True, db_index=True, help_text='user\'s username on Discord' ) discriminator = models.CharField( - max_length=4, - default='', - blank=True, + max_length=4, + default='', + blank=True, help_text='user\'s discriminator on Discord' ) activated = models.DateTimeField( - default=None, - null=True, + default=None, + null=True, blank=True, help_text='Date & time this service account was activated' ) @@ -77,11 +77,11 @@ class DiscordUser(models.Model): - True on success - None if user is no longer a member of the Discord server - False on error or raises exception - """ + """ if not nickname: nickname = DiscordUser.objects.user_formatted_nick(self.user) - if nickname: - client = DiscordUser.objects._bot_client() + if nickname: + client = DiscordUser.objects._bot_client() success = client.modify_guild_member( guild_id=DISCORD_GUILD_ID, user_id=self.uid, @@ -92,14 +92,14 @@ class DiscordUser(models.Model): else: logger.warning('Failed to update nickname for %s', self.user) return success - + else: return False def update_groups(self, state_name: str = None) -> bool: - """update groups for a user based on his current group memberships. + """update groups for a user based on his current group memberships. Will add or remove roles of a user as needed. - + Params: - state_name: optional state name to be used @@ -107,13 +107,13 @@ class DiscordUser(models.Model): - True on success - None if user is no longer a member of the Discord server - False on error or raises exception - """ - client = DiscordUser.objects._bot_client() + """ + client = DiscordUser.objects._bot_client() member_info = client.guild_member(guild_id=DISCORD_GUILD_ID, user_id=self.uid) - if member_info is None: + if member_info is None: # User is no longer a member return None - + guild_roles = DiscordRoles(client.guild_roles(guild_id=DISCORD_GUILD_ID)) logger.debug('Current guild roles: %s', guild_roles.ids()) if 'roles' in member_info: @@ -124,17 +124,17 @@ class DiscordUser(models.Model): if not guild_roles.has_roles(member_info['roles']): raise RuntimeError( 'Member %s has unknown roles: %s' % ( - self.user, + self.user, set(member_info['roles']).difference(guild_roles.ids()) ) ) member_roles = guild_roles.subset(member_info['roles']) else: raise RuntimeError('member_info from %s is not valid' % self.user) - + requested_roles = match_or_create_roles_from_names( - client=client, - guild_id=DISCORD_GUILD_ID, + client=client, + guild_id=DISCORD_GUILD_ID, role_names=DiscordUser.objects.user_group_names( user=self.user, state_name=state_name ) @@ -142,7 +142,7 @@ class DiscordUser(models.Model): logger.debug( 'Requested roles for user %s: %s', self.user, requested_roles.ids() ) - logger.debug('Current roles user %s: %s', self.user, member_roles.ids()) + logger.debug('Current roles user %s: %s', self.user, member_roles.ids()) member_roles_managed = member_roles.subset(managed_only=True) if requested_roles != member_roles.difference(member_roles_managed): logger.debug('Need to update roles for user %s', self.user) @@ -163,25 +163,25 @@ class DiscordUser(models.Model): return True def update_username(self) -> bool: - """Updates the username incl. the discriminator + """Updates the username incl. the discriminator from the Discord server and saves it - + Returns: - True on success - None if user is no longer a member of the Discord server - False on error or raises exception - """ - - client = DiscordUser.objects._bot_client() + """ + + client = DiscordUser.objects._bot_client() user_info = client.guild_member(guild_id=DISCORD_GUILD_ID, user_id=self.uid) if user_info is None: success = None elif ( - user_info - and 'user' in user_info - and 'username' in user_info['user'] + user_info + and 'user' in user_info + and 'username' in user_info['user'] and 'discriminator' in user_info['user'] - ): + ): self.username = user_info['user']['username'] self.discriminator = user_info['user']['discriminator'] self.save() @@ -191,22 +191,22 @@ class DiscordUser(models.Model): logger.warning('Failed to update username for %s', self.user) success = False return success - + def delete_user( - self, - notify_user: bool = False, + self, + notify_user: bool = False, is_rate_limited: bool = True, handle_api_exceptions: bool = False ) -> bool: """Deletes the Discount user both on the server and locally Params: - - notify_user: When True will sent a notification to the user + - notify_user: When True will sent a notification to the user informing him about the deleting of his account - is_rate_limited: When False will disable default rate limiting (use with care) - - handle_api_exceptions: When True method will return False + - handle_api_exceptions: When True method will return False when an API exception occurs - + Returns True when successful, otherwise False or raises exceptions Return None if user does no longer exist """ @@ -221,8 +221,8 @@ class DiscordUser(models.Model): if deleted_count > 0: if notify_user: notify( - user=_user, - title=gettext_lazy('Discord Account Disabled'), + user=_user, + title=gettext_lazy('Discord Account Disabled'), message=gettext_lazy( 'Your Discord account was disabled automatically ' 'by Auth. If you think this was a mistake, ' @@ -235,18 +235,18 @@ class DiscordUser(models.Model): else: logger.debug('Account for user %s was already deleted.', _user) return None - + else: logger.warning( 'Failed to remove user %s from the Discord server', _user ) return False - + except (HTTPError, ConnectionError, DiscordApiBackoff) as ex: if handle_api_exceptions: logger.exception( 'Failed to remove user %s from Discord server: %s',self.user, ex ) - return False + return False else: raise ex diff --git a/allianceauth/services/modules/discord/tasks.py b/allianceauth/services/modules/discord/tasks.py index 373abbe4..1dcc087e 100644 --- a/allianceauth/services/modules/discord/tasks.py +++ b/allianceauth/services/modules/discord/tasks.py @@ -29,11 +29,11 @@ BULK_TASK_PRIORITY = 6 ) def update_groups(self, user_pk: int, state_name: str = None) -> None: """Update roles on Discord for given user according to his current groups - + Params: - user_pk: PK of given user - state_name: optional state name to be used - """ + """ _task_perform_user_action(self, user_pk, 'update_groups', state_name=state_name) @@ -42,7 +42,7 @@ def update_groups(self, user_pk: int, state_name: str = None) -> None: ) def update_nickname(self, user_pk: int, nickname: str = None) -> None: """Set nickname on Discord for given user to his main character name - + Params: - user_pk: PK of given user - nickname: optional nickname to be used instead of user's main @@ -55,7 +55,7 @@ def update_nickname(self, user_pk: int, nickname: str = None) -> None: ) def update_username(self, user_pk: int) -> None: """Update locally stored Discord username from Discord server for given user - + Params: - user_pk: PK of given user """ @@ -67,7 +67,7 @@ def update_username(self, user_pk: int) -> None: ) def delete_user(self, user_pk: int, notify_user: bool = False) -> None: """Delete Discord user - + Params: - user_pk: PK of given user """ @@ -77,13 +77,13 @@ def delete_user(self, user_pk: int, notify_user: bool = False) -> None: def _task_perform_user_action(self, user_pk: int, method: str, **kwargs) -> None: """perform a user related action incl. managing all exceptions""" logger.debug("Starting %s for user with pk %s", method, user_pk) - user = User.objects.get(pk=user_pk) + user = User.objects.get(pk=user_pk) # logger.debug("user %s has state %s", user, user.profile.state) if DiscordUser.objects.user_has_account(user): logger.info("Running %s for user %s", method, user) try: success = getattr(user.discord, method)(**kwargs) - + except DiscordApiBackoff as bo: logger.info( "API back off for %s wth user %s due to %r, retrying in %s seconds", @@ -92,26 +92,26 @@ def _task_perform_user_action(self, user_pk: int, method: str, **kwargs) -> None bo, bo.retry_after_seconds ) - raise self.retry(countdown=bo.retry_after_seconds) - + raise self.retry(countdown=bo.retry_after_seconds) + except AttributeError: raise ValueError(f'{method} not a valid method for DiscordUser') - except (HTTPError, ConnectionError): + except (HTTPError, ConnectionError): logger.warning( - '%s failed for user %s, retrying in %d secs', + '%s failed for user %s, retrying in %d secs', method, - user, + user, DISCORD_TASKS_RETRY_PAUSE, exc_info=True ) if self.request.retries < DISCORD_TASKS_MAX_RETRIES: raise self.retry(countdown=DISCORD_TASKS_RETRY_PAUSE) - else: + else: logger.error( '%s failed for user %s after max retries', method, - user, + user, exc_info=True ) except Exception: @@ -120,8 +120,8 @@ def _task_perform_user_action(self, user_pk: int, method: str, **kwargs) -> None method, user, exc_info=True - ) - + ) + else: if success is None and method != 'delete_user': delete_user.delay(user.pk, notify_user=True) @@ -134,14 +134,14 @@ def _task_perform_user_action(self, user_pk: int, method: str, **kwargs) -> None @shared_task(name='discord.update_all_groups') def update_all_groups() -> None: - """Update roles for all known users with a Discord account.""" + """Update roles for all known users with a Discord account.""" discord_users_qs = DiscordUser.objects.all() _bulk_update_groups_for_users(discord_users_qs) @shared_task(name='discord.update_groups_bulk') def update_groups_bulk(user_pks: list) -> None: - """Update roles for list of users with a Discord account in bulk.""" + """Update roles for list of users with a Discord account in bulk.""" discord_users_qs = DiscordUser.objects\ .filter(user__pk__in=user_pks)\ .select_related() @@ -155,7 +155,7 @@ def _bulk_update_groups_for_users(discord_users_qs: QuerySet) -> None: update_groups_chain = list() for discord_user in discord_users_qs: update_groups_chain.append(update_groups.si(discord_user.user.pk)) - + chain(update_groups_chain).apply_async(priority=BULK_TASK_PRIORITY) @@ -164,11 +164,11 @@ def update_all_nicknames() -> None: """Update nicknames for all known users with a Discord account.""" discord_users_qs = DiscordUser.objects.all() _bulk_update_nicknames_for_users(discord_users_qs) - + @shared_task(name='discord.update_nicknames_bulk') def update_nicknames_bulk(user_pks: list) -> None: - """Update nicknames for list of users with a Discord account in bulk.""" + """Update nicknames for list of users with a Discord account in bulk.""" discord_users_qs = DiscordUser.objects\ .filter(user__pk__in=user_pks)\ .select_related() @@ -177,27 +177,27 @@ def update_nicknames_bulk(user_pks: list) -> None: def _bulk_update_nicknames_for_users(discord_users_qs: QuerySet) -> None: logger.info( - "Starting to bulk update discord nicknames for %d users", + "Starting to bulk update discord nicknames for %d users", discord_users_qs.count() ) update_nicknames_chain = list() for discord_user in discord_users_qs: update_nicknames_chain.append(update_nickname.si(discord_user.user.pk)) - + chain(update_nicknames_chain).apply_async(priority=BULK_TASK_PRIORITY) -def _task_perform_users_action(self, method: str, **kwargs) -> Any: - """Perform an action that concerns a group of users or the whole server +def _task_perform_users_action(self, method: str, **kwargs) -> Any: + """Perform an action that concerns a group of users or the whole server and that hits the API - """ + """ result = None try: result = getattr(DiscordUser.objects, method)(**kwargs) - + except AttributeError: raise ValueError(f'{method} not a valid method for DiscordUser.objects') - + except DiscordApiBackoff as bo: logger.info( "API back off for %s due to %r, retrying in %s seconds", @@ -205,23 +205,23 @@ def _task_perform_users_action(self, method: str, **kwargs) -> Any: bo, bo.retry_after_seconds ) - raise self.retry(countdown=bo.retry_after_seconds) - - except (HTTPError, ConnectionError): + raise self.retry(countdown=bo.retry_after_seconds) + + except (HTTPError, ConnectionError): logger.warning( - '%s failed, retrying in %d secs', + '%s failed, retrying in %d secs', method, DISCORD_TASKS_RETRY_PAUSE, exc_info=True ) if self.request.retries < DISCORD_TASKS_MAX_RETRIES: raise self.retry(countdown=DISCORD_TASKS_RETRY_PAUSE) - else: + else: logger.error('%s failed after max retries', method, exc_info=True) - + except Exception: logger.error('%s failed due to unexpected exception', method, exc_info=True) - + return result @@ -235,17 +235,17 @@ def update_servername(self) -> None: @shared_task(name='discord.update_all_usernames') def update_all_usernames() -> None: - """Update all usernames for all known users with a Discord account. + """Update all usernames for all known users with a Discord account. Also updates the server name """ update_servername.delay() discord_users_qs = DiscordUser.objects.all() _bulk_update_usernames_for_users(discord_users_qs) - + @shared_task(name='discord.update_usernames_bulk') def update_usernames_bulk(user_pks: list) -> None: - """Update usernames for list of users with a Discord account in bulk.""" + """Update usernames for list of users with a Discord account in bulk.""" discord_users_qs = DiscordUser.objects\ .filter(user__pk__in=user_pks)\ .select_related() @@ -254,13 +254,13 @@ def update_usernames_bulk(user_pks: list) -> None: def _bulk_update_usernames_for_users(discord_users_qs: QuerySet) -> None: logger.info( - "Starting to bulk update discord usernames for %d users", + "Starting to bulk update discord usernames for %d users", discord_users_qs.count() ) update_usernames_chain = list() for discord_user in discord_users_qs: update_usernames_chain.append(update_username.si(discord_user.user.pk)) - + chain(update_usernames_chain).apply_async(priority=BULK_TASK_PRIORITY) @@ -277,5 +277,5 @@ def update_all() -> None: update_all_chain.append(update_username.si(discord_user.user.pk)) if DISCORD_SYNC_NAMES: update_all_chain.append(update_nickname.si(discord_user.user.pk)) - + chain(update_all_chain).apply_async(priority=BULK_TASK_PRIORITY) diff --git a/allianceauth/services/modules/discord/tests/__init__.py b/allianceauth/services/modules/discord/tests/__init__.py index c323d4f4..aae30b3f 100644 --- a/allianceauth/services/modules/discord/tests/__init__.py +++ b/allianceauth/services/modules/discord/tests/__init__.py @@ -5,14 +5,14 @@ from ..discord_client.tests import ( # noqa TEST_USER_ID, TEST_USER_NAME, TEST_USER_DISCRIMINATOR, - create_role, - ROLE_ALPHA, - ROLE_BRAVO, - ROLE_CHARLIE, - ROLE_MIKE, + create_role, + ROLE_ALPHA, + ROLE_BRAVO, + ROLE_CHARLIE, + ROLE_MIKE, ALL_ROLES, create_user_info -) +) DEFAULT_AUTH_GROUP = 'Member' MODULE_PATH = 'allianceauth.services.modules.discord' diff --git a/allianceauth/services/modules/discord/tests/piloting_tasks.py b/allianceauth/services/modules/discord/tests/piloting_tasks.py index 60494c8b..15ee6d0e 100755 --- a/allianceauth/services/modules/discord/tests/piloting_tasks.py +++ b/allianceauth/services/modules/discord/tests/piloting_tasks.py @@ -53,21 +53,21 @@ def run_many_updates(runs): logger.info('Starting piloting_tasks for %d runs', runs) users = list() all_groups = Group.objects.all() - for i in range(runs): + for i in range(runs): if not users: users = list(User.objects.filter(discord__isnull=False)) user = users.pop() logger.info('%d/%d: Starting run with user %s', i + 1, runs, user) - # force change of nick + # force change of nick new_nick = f'Testnick {uuid1().hex}'[:32] logger.info( '%d/%d: Changing nickname of %s to "%s"', i + 1, runs, user, new_nick ) user.profile.main_character.character_name = new_nick - user.profile.main_character.save() - + user.profile.main_character.save() + # force change of groups - user_groups = user.groups.all() + user_groups = user.groups.all() user.groups.remove(random.choice(user_groups)) while True: new_group = random.choice(all_groups) diff --git a/allianceauth/services/modules/discord/tests/test_admin.py b/allianceauth/services/modules/discord/tests/test_admin.py index ab7899f8..552c4176 100644 --- a/allianceauth/services/modules/discord/tests/test_admin.py +++ b/allianceauth/services/modules/discord/tests/test_admin.py @@ -9,9 +9,9 @@ from allianceauth.eveonline.models import ( ) from ....admin import ( - user_profile_pic, - user_username, - user_main_organization, + user_profile_pic, + user_username, + user_main_organization, ServicesUserAdmin, MainCorporationsFilter, MainAllianceFilter @@ -31,7 +31,7 @@ class TestDataMixin(TestCase): EveAllianceInfo.objects.all().delete() User.objects.all().delete() DiscordUser.objects.all().delete() - + # user 1 - corp and alliance, normal user cls.character_1 = EveCharacter.objects.create( character_id=1001, @@ -56,16 +56,16 @@ class TestDataMixin(TestCase): alliance = EveAllianceInfo.objects.create( alliance_id=3001, alliance_name='Wayne Enterprises', - alliance_ticker='WE', + alliance_ticker='WE', executor_corp_id=2001 ) EveCorporationInfo.objects.create( corporation_id=2001, corporation_name='Wayne Technologies', - corporation_ticker='WT', + corporation_ticker='WT', member_count=42, alliance=alliance - ) + ) cls.user_1 = User.objects.create_user( cls.character_1.character_name.replace(' ', '_'), 'abc@example.com', @@ -103,7 +103,7 @@ class TestDataMixin(TestCase): EveCorporationInfo.objects.create( corporation_id=2002, corporation_name='Daily Plane', - corporation_ticker='DP', + corporation_ticker='DP', member_count=99, alliance=None ) @@ -123,7 +123,7 @@ class TestDataMixin(TestCase): user=cls.user_2, uid=1002 ) - + # user 3 - no main, no group, superuser cls.character_3 = EveCharacter.objects.create( character_id=1101, @@ -136,7 +136,7 @@ class TestDataMixin(TestCase): EveCorporationInfo.objects.create( corporation_id=2101, corporation_name='Lex Corp', - corporation_ticker='LC', + corporation_ticker='LC', member_count=666, alliance=None ) @@ -160,13 +160,13 @@ class TestDataMixin(TestCase): user=cls.user_3, uid=1003 ) - + def setUp(self): self.factory = RequestFactory() self.modeladmin = DiscordUserAdmin( model=DiscordUser, admin_site=AdminSite() - ) - + ) + class TestColumnRendering(TestDataMixin, TestCase): @@ -230,12 +230,12 @@ class TestColumnRendering(TestDataMixin, TestCase): class TestFilters(TestDataMixin, TestCase): - + def test_filter_main_corporations(self): - - class DiscordUserAdminTest(ServicesUserAdmin): + + class DiscordUserAdminTest(ServicesUserAdmin): list_filter = (MainCorporationsFilter,) - + my_modeladmin = DiscordUserAdminTest(DiscordUser, AdminSite()) # Make sure the lookups are correct @@ -244,7 +244,7 @@ class TestFilters(TestDataMixin, TestCase): changelist = my_modeladmin.get_changelist_instance(request) filters = changelist.get_filters(request) filterspec = filters[0][0] - expected = [ + expected = [ (2002, 'Daily Planet'), (2001, 'Wayne Technologies'), ] @@ -254,19 +254,19 @@ class TestFilters(TestDataMixin, TestCase): request = self.factory.get( '/', {'main_corporation_id__exact': self.character_1.corporation_id} ) - request.user = self.user_1 + request.user = self.user_1 changelist = my_modeladmin.get_changelist_instance(request) queryset = changelist.get_queryset(request) expected = [self.user_1.discord] self.assertSetEqual(set(queryset), set(expected)) - + def test_filter_main_alliances(self): - - class DiscordUserAdminTest(ServicesUserAdmin): + + class DiscordUserAdminTest(ServicesUserAdmin): list_filter = (MainAllianceFilter,) - + my_modeladmin = DiscordUserAdminTest(DiscordUser, AdminSite()) - + # Make sure the lookups are correct request = self.factory.get('/') request.user = self.user_1 @@ -282,7 +282,7 @@ class TestFilters(TestDataMixin, TestCase): request = self.factory.get( '/', {'main_alliance_id__exact': self.character_1.alliance_id} ) - request.user = self.user_1 + request.user = self.user_1 changelist = my_modeladmin.get_changelist_instance(request) queryset = changelist.get_queryset(request) expected = [self.user_1.discord] diff --git a/allianceauth/services/modules/discord/tests/test_auth_hooks.py b/allianceauth/services/modules/discord/tests/test_auth_hooks.py index 4aeeae8e..ccee3c8f 100644 --- a/allianceauth/services/modules/discord/tests/test_auth_hooks.py +++ b/allianceauth/services/modules/discord/tests/test_auth_hooks.py @@ -19,11 +19,11 @@ logger = set_logger_to_file(MODULE_PATH + '.auth_hooks', __file__) @override_settings(CELERY_ALWAYS_EAGER=True) class TestDiscordService(TestCase): - def setUp(self): + def setUp(self): self.member = AuthUtils.create_member(TEST_USER_NAME) DiscordUser.objects.create( - user=self.member, - uid=TEST_USER_ID, + user=self.member, + uid=TEST_USER_ID, username=TEST_USER_NAME, discriminator='1234' ) @@ -34,33 +34,33 @@ class TestDiscordService(TestCase): Notification.objects.all().delete() def test_service_enabled(self): - service = self.service() + service = self.service() self.assertTrue(service.service_active_for_user(self.member)) self.assertFalse(service.service_active_for_user(self.none_member)) @patch(MODULE_PATH + '.tasks.update_all_groups') def test_update_all_groups(self, mock_update_all_groups): service = self.service() - service.update_all_groups() + service.update_all_groups() self.assertTrue(mock_update_all_groups.delay.called) - + @patch(MODULE_PATH + '.tasks.update_groups_bulk') def test_update_groups_bulk(self, mock_update_groups_bulk): - service = self.service() + service = self.service() service.update_groups_bulk([self.member]) - self.assertTrue(mock_update_groups_bulk.delay.called) + self.assertTrue(mock_update_groups_bulk.delay.called) @patch(MODULE_PATH + '.tasks.update_groups') - def test_update_groups_for_member(self, mock_update_groups): - service = self.service() + def test_update_groups_for_member(self, mock_update_groups): + service = self.service() service.update_groups(self.member) - self.assertTrue(mock_update_groups.apply_async.called) + self.assertTrue(mock_update_groups.apply_async.called) @patch(MODULE_PATH + '.tasks.update_groups') - def test_update_groups_for_none_member(self, mock_update_groups): + def test_update_groups_for_none_member(self, mock_update_groups): service = self.service() service.update_groups(self.none_member) - self.assertFalse(mock_update_groups.apply_async.called) + self.assertFalse(mock_update_groups.apply_async.called) @patch(MODULE_PATH + '.models.notify') @patch(MODULE_PATH + '.tasks.DiscordUser') @@ -69,52 +69,52 @@ class TestDiscordService(TestCase): self, mock_DiscordClient, mock_DiscordUser, mock_notify ): mock_DiscordClient.return_value.remove_guild_member.return_value = True - + # Test member is not deleted service = self.service() service.validate_user(self.member) self.assertTrue(DiscordUser.objects.filter(user=self.member).exists()) - # Test none member is deleted + # Test none member is deleted DiscordUser.objects.create(user=self.none_member, uid=TEST_USER_ID) - service.validate_user(self.none_member) + service.validate_user(self.none_member) self.assertFalse(DiscordUser.objects.filter(user=self.none_member).exists()) @patch(MODULE_PATH + '.tasks.update_nickname') def test_sync_nickname(self, mock_update_nickname): - service = self.service() + service = self.service() service.sync_nickname(self.member) self.assertTrue(mock_update_nickname.apply_async.called) - + @patch(MODULE_PATH + '.tasks.update_nicknames_bulk') def test_sync_nicknames_bulk(self, mock_update_nicknames_bulk): - service = self.service() - service.sync_nicknames_bulk([self.member]) + service = self.service() + service.sync_nicknames_bulk([self.member]) self.assertTrue(mock_update_nicknames_bulk.delay.called) - + @patch(MODULE_PATH + '.managers.DiscordClient', spec=DiscordClient) - def test_delete_user_is_member(self, mock_DiscordClient): + def test_delete_user_is_member(self, mock_DiscordClient): mock_DiscordClient.return_value.remove_guild_member.return_value = True service = self.service() service.delete_user(self.member, notify_user=True) - + self.assertTrue(mock_DiscordClient.return_value.remove_guild_member.called) - self.assertFalse(DiscordUser.objects.filter(user=self.member).exists()) + self.assertFalse(DiscordUser.objects.filter(user=self.member).exists()) self.assertTrue(Notification.objects.filter(user=self.member).exists()) @patch(MODULE_PATH + '.managers.DiscordClient', spec=DiscordClient) def test_delete_user_is_not_member(self, mock_DiscordClient): mock_DiscordClient.return_value.remove_guild_member.return_value = True - service = self.service() + service = self.service() service.delete_user(self.none_member) self.assertFalse(mock_DiscordClient.return_value.remove_guild_member.called) - + @patch(MODULE_PATH + '.managers.DiscordClient', spec=DiscordClient) def test_render_services_ctrl_with_username(self, mock_DiscordClient): - service = self.service() + service = self.service() request = self.factory.get('/services/') request.user = self.member diff --git a/allianceauth/services/modules/discord/tests/test_integration.py b/allianceauth/services/modules/discord/tests/test_integration.py index 2a6c65c2..2fc4d408 100644 --- a/allianceauth/services/modules/discord/tests/test_integration.py +++ b/allianceauth/services/modules/discord/tests/test_integration.py @@ -26,11 +26,11 @@ from allianceauth.tests.auth_utils import AuthUtils from . import ( TEST_GUILD_ID, - TEST_USER_NAME, + TEST_USER_NAME, TEST_USER_ID, - TEST_USER_DISCRIMINATOR, - TEST_MAIN_NAME, - TEST_MAIN_ID, + TEST_USER_DISCRIMINATOR, + TEST_MAIN_NAME, + TEST_MAIN_ID, MODULE_PATH, add_permissions_to_members, ROLE_ALPHA, @@ -75,11 +75,11 @@ guild_member_request = DiscordRequest( add_guild_member_request = DiscordRequest( method='PUT', url=f'{DISCORD_API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}' -) +) modify_guild_member_request = DiscordRequest( method='PATCH', url=f'{DISCORD_API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}' -) +) remove_guild_member_request = DiscordRequest( method='DELETE', url=f'{DISCORD_API_BASE_URL}guilds/{TEST_GUILD_ID}/members/{TEST_USER_ID}' @@ -93,7 +93,7 @@ def clear_cache(): logger.info('Cache flushed') -def reset_testdata(): +def reset_testdata(): AuthUtils.disconnect_signals() Group.objects.all().delete() User.objects.all().delete() @@ -112,15 +112,15 @@ class TestServiceFeatures(TransactionTestCase): def setUpClass(cls): super().setUpClass() cls.maxDiff = None - + def setUp(self): - """All tests: Given a user with member state, + """All tests: Given a user with member state, service permission and active Discord account """ clear_cache() reset_testdata() - self.group_charlie = Group.objects.create(name='charlie') - + self.group_charlie = Group.objects.create(name='charlie') + # States self.member_state = AuthUtils.get_member_state() self.guest_state = AuthUtils.get_guest_state() @@ -132,64 +132,64 @@ class TestServiceFeatures(TransactionTestCase): # Test user self.user = AuthUtils.create_user(TEST_USER_NAME) self.main = AuthUtils.add_main_character_2( - self.user, - TEST_MAIN_NAME, - TEST_MAIN_ID, - corp_id='2', - corp_name='test_corp', + self.user, + TEST_MAIN_NAME, + TEST_MAIN_ID, + corp_id='2', + corp_name='test_corp', corp_ticker='TEST', disconnect_signals=True - ) + ) self.member_state.member_characters.add(self.main) - + # verify user is a member and has an account self.user = User.objects.get(pk=self.user.pk) self.assertEqual(self.user.profile.state, self.member_state) - + self.discord_user = DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) self.assertTrue(DiscordUser.objects.user_has_account(self.user)) - + def test_when_name_of_main_changes_then_discord_nick_is_updated( self, requests_mocker - ): + ): requests_mocker.patch(modify_guild_member_request.url, status_code=204) - + # changing nick to trigger signals new_nick = f'Testnick {uuid1().hex}'[:32] self.user.profile.main_character.character_name = new_nick self.user.profile.main_character.save() - + # verify Discord nick was updates nick_updated = False - for r in requests_mocker.request_history: - my_request = DiscordRequest(r.method, r.url) + for r in requests_mocker.request_history: + my_request = DiscordRequest(r.method, r.url) if my_request == modify_guild_member_request and "nick" in r.json(): nick_updated = True self.assertEqual(r.json()["nick"], new_nick) - + self.assertTrue(nick_updated) self.assertTrue(DiscordUser.objects.user_has_account(self.user)) def test_when_name_of_main_changes_and_user_deleted_then_account_is_deleted( self, requests_mocker - ): + ): requests_mocker.patch( modify_guild_member_request.url, status_code=404, json={'code': 10007} - ) + ) requests_mocker.delete(remove_guild_member_request.url, status_code=204) - + # changing nick to trigger signals new_nick = f'Testnick {uuid1().hex}'[:32] self.user.profile.main_character.character_name = new_nick self.user.profile.main_character.save() - + self.assertFalse(DiscordUser.objects.user_has_account(self.user)) def test_when_name_of_main_changes_and_and_rate_limited_then_dont_call_api( self, requests_mocker - ): + ): requests_mocker.patch(modify_guild_member_request.url, status_code=204) - + # exhausting rate limit client = DiscordUser.objects._bot_client() client._redis.set( @@ -197,7 +197,7 @@ class TestServiceFeatures(TransactionTestCase): value=0, px=2000 ) - + # changing nick to trigger signals new_nick = f'Testnick {uuid1().hex}'[:32] self.user.profile.main_character.character_name = new_nick @@ -207,55 +207,55 @@ class TestServiceFeatures(TransactionTestCase): requests_made = [ DiscordRequest(r.method, r.url) for r in requests_mocker.request_history ] - + self.assertListEqual(requests_made, list()) - + def test_when_member_is_demoted_to_guest_then_his_account_is_deleted( self, requests_mocker - ): + ): requests_mocker.patch(modify_guild_member_request.url, status_code=204) requests_mocker.delete(remove_guild_member_request.url, status_code=204) - - # our user is a member and has an account + + # our user is a member and has an account self.assertTrue(self.user.has_perm('discord.access_discord')) - - # now we demote him to guest + + # now we demote him to guest self.member_state.member_characters.remove(self.main) - + # verify user is now guest - self.user = User.objects.get(pk=self.user.pk) + self.user = User.objects.get(pk=self.user.pk) self.assertEqual(self.user.profile.state, AuthUtils.get_guest_state()) - + # verify user has no longer access to Discord and no account self.assertFalse(self.user.has_perm('discord.access_discord')) - self.assertFalse(DiscordUser.objects.user_has_account(self.user)) - + self.assertFalse(DiscordUser.objects.user_has_account(self.user)) + # verify account was actually deleted from Discord server requests_made = [ DiscordRequest(r.method, r.url) for r in requests_mocker.request_history - ] + ] self.assertIn(remove_guild_member_request, requests_made) - + # verify user has been notified self.assertTrue(Notification.objects.filter(user=self.user).exists()) - + def test_when_member_changes_to_blue_state_then_roles_are_updated_accordingly( self, requests_mocker - ): + ): # request mocks requests_mocker.get( guild_member_request.url, json={'user': create_user_info(), 'roles': ['3', '13', '99']} - ) + ) requests_mocker.get( guild_roles_request.url, json=[ ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE, ROLE_MEMBER, ROLE_BLUE ] - ) - requests_mocker.post(create_guild_role_request.url, json=ROLE_CHARLIE) + ) + requests_mocker.post(create_guild_role_request.url, json=ROLE_CHARLIE) requests_mocker.patch(modify_guild_member_request.url, status_code=204) - + AuthUtils.disconnect_signals() self.user.groups.add(self.group_charlie) AuthUtils.connect_signals() @@ -264,101 +264,101 @@ class TestServiceFeatures(TransactionTestCase): self.blue_state.member_characters.add(self.main) self.member_state.member_characters.remove(self.main) - # verify roles for user where updated + # verify roles for user where updated roles_updated = False - for r in requests_mocker.request_history: - my_request = DiscordRequest(r.method, r.url) + for r in requests_mocker.request_history: + my_request = DiscordRequest(r.method, r.url) if my_request == modify_guild_member_request and "roles" in r.json(): roles_updated = True self.assertSetEqual(set(r.json()["roles"]), {3, 13, 98}) break - + self.assertTrue(roles_updated) self.assertTrue(DiscordUser.objects.user_has_account(self.user)) def test_when_group_added_to_member_and_role_known_then_his_roles_are_updated( self, requests_mocker - ): + ): requests_mocker.get( guild_member_request.url, json={ 'user': create_user_info(), 'roles': ['13', '99'] } - ) + ) requests_mocker.get( - guild_roles_request.url, + guild_roles_request.url, json=[ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE, ROLE_MEMBER] - ) - requests_mocker.post(create_guild_role_request.url, json=ROLE_CHARLIE) + ) + requests_mocker.post(create_guild_role_request.url, json=ROLE_CHARLIE) requests_mocker.patch(modify_guild_member_request.url, status_code=204) - + # adding new group to trigger signals self.user.groups.add(self.group_charlie) - + # verify roles for user where updated roles_updated = False - for r in requests_mocker.request_history: - my_request = DiscordRequest(r.method, r.url) + for r in requests_mocker.request_history: + my_request = DiscordRequest(r.method, r.url) if my_request == modify_guild_member_request and "roles" in r.json(): roles_updated = True self.assertSetEqual(set(r.json()["roles"]), {3, 13, 99}) break - + self.assertTrue(roles_updated) self.assertTrue(DiscordUser.objects.user_has_account(self.user)) def test_when_group_added_to_member_and_role_unknown_then_his_roles_are_updated( self, requests_mocker - ): + ): requests_mocker.get( guild_member_request.url, json={ 'user': {'id': str(TEST_USER_ID), 'username': TEST_MAIN_NAME}, 'roles': ['13', '99'] } - ) + ) requests_mocker.get( - guild_roles_request.url, + guild_roles_request.url, json=[ROLE_ALPHA, ROLE_BRAVO, ROLE_MIKE, ROLE_MEMBER] - ) - requests_mocker.post(create_guild_role_request.url, json=ROLE_CHARLIE) + ) + requests_mocker.post(create_guild_role_request.url, json=ROLE_CHARLIE) requests_mocker.patch(modify_guild_member_request.url, status_code=204) - + # adding new group to trigger signals self.user.groups.add(self.group_charlie) self.user.refresh_from_db() - + # verify roles for user where updated roles_updated = False - for r in requests_mocker.request_history: - my_request = DiscordRequest(r.method, r.url) + for r in requests_mocker.request_history: + my_request = DiscordRequest(r.method, r.url) if my_request == modify_guild_member_request and "roles" in r.json(): roles_updated = True self.assertSetEqual(set(r.json()["roles"]), {3, 13, 99}) break - + self.assertTrue(roles_updated) self.assertTrue(DiscordUser.objects.user_has_account(self.user)) - + @override_settings(CELERY_ALWAYS_EAGER=True) @patch(MODULE_PATH + '.managers.DISCORD_GUILD_ID', TEST_GUILD_ID) @patch(MODULE_PATH + '.models.DISCORD_GUILD_ID', TEST_GUILD_ID) @requests_mock.Mocker() class StateTestCase(TestCase): - - def setUp(self): + + def setUp(self): clear_cache() reset_testdata() - + self.user = AuthUtils.create_user('test_user', disconnect_signals=True) AuthUtils.add_main_character( - self.user, - 'Perm Test Character', '99', - corp_id='100', + self.user, + 'Perm Test Character', '99', + corp_id='100', alliance_id='200', - corp_name='Perm Test Corp', + corp_name='Perm Test Corp', alliance_name='Perm Test Alliance' ) self.test_character = EveCharacter.objects.get(character_id='99') @@ -369,7 +369,7 @@ class StateTestCase(TestCase): self.access_discord = AuthUtils.get_permission_by_name('discord.access_discord') self.member_state.permissions.add(self.access_discord) self.member_state.member_characters.add(self.test_character) - + def _add_discord_user(self): self.discord_user = DiscordUser.objects.create( user=self.user, uid="12345678910" @@ -434,57 +434,57 @@ class StateTestCase(TestCase): @patch(MODULE_PATH + '.models.DISCORD_GUILD_ID', TEST_GUILD_ID) @requests_mock.Mocker() class TestUserFeatures(WebTest): - + def setUp(self): clear_cache() reset_testdata() self.member = AuthUtils.create_member(TEST_USER_NAME) AuthUtils.add_main_character_2( - self.member, - TEST_MAIN_NAME, + self.member, + TEST_MAIN_NAME, TEST_MAIN_ID, disconnect_signals=True ) add_permissions_to_members() - @patch(MODULE_PATH + '.views.messages') + @patch(MODULE_PATH + '.views.messages') @patch(MODULE_PATH + '.managers.OAuth2Session') def test_user_activation_normal( self, requests_mocker, mock_OAuth2Session, mock_messages - ): + ): # setup requests_mocker.get( guild_infos_request.url, json={'id': TEST_GUILD_ID, 'name': 'Test Guild'} - ) + ) requests_mocker.get( - user_get_current_request.url, + user_get_current_request.url, json=create_user_info( TEST_USER_ID, TEST_USER_NAME, TEST_USER_DISCRIMINATOR ) - ) + ) requests_mocker.get( - guild_roles_request.url, + guild_roles_request.url, json=[ROLE_ALPHA, ROLE_BRAVO, ROLE_MIKE, ROLE_MEMBER] - ) + ) requests_mocker.put(add_guild_member_request.url, status_code=201) - - authentication_code = 'auth_code' + + authentication_code = 'auth_code' oauth_url = 'https://www.example.com/oauth' state = '' mock_OAuth2Session.return_value.authorization_url.return_value = \ oauth_url, state - + # login self.app.set_user(self.member) - + # user opens services page services_page = self.app.get(reverse('services:services')) self.assertEqual(services_page.status_code, 200) - # user clicks Discord service activation link on page + # user clicks Discord service activation link on page response = services_page.click(href=reverse('discord:activate')) - - # check we got a redirect to Discord OAuth + + # check we got a redirect to Discord OAuth self.assertRedirects( response, expected_url=oauth_url, fetch_redirect_response=False ) @@ -493,66 +493,66 @@ class TestUserFeatures(WebTest): response = self.app.get( reverse('discord:callback'), params={'code': authentication_code} ) - + # user got a success message self.assertTrue(mock_messages.success.called) self.assertFalse(mock_messages.error.called) - + requests_made = list() - for r in requests_mocker.request_history: - obj = DiscordRequest(r.method, r.url) + for r in requests_mocker.request_history: + obj = DiscordRequest(r.method, r.url) requests_made.append(obj) - + expected = [ - guild_infos_request, - user_get_current_request, - guild_roles_request, + guild_infos_request, + user_get_current_request, + guild_roles_request, add_guild_member_request ] self.assertListEqual(requests_made, expected) - @patch(MODULE_PATH + '.views.messages') + @patch(MODULE_PATH + '.views.messages') @patch(MODULE_PATH + '.managers.OAuth2Session') def test_user_activation_failed( self, requests_mocker, mock_OAuth2Session, mock_messages - ): + ): # setup requests_mocker.get( guild_infos_request.url, json={'id': TEST_GUILD_ID, 'name': 'Test Guild'} ) requests_mocker.get( - user_get_current_request.url, + user_get_current_request.url, json=create_user_info( TEST_USER_ID, TEST_USER_NAME, TEST_USER_DISCRIMINATOR ) - ) + ) requests_mocker.get( - guild_roles_request.url, + guild_roles_request.url, json=[ROLE_ALPHA, ROLE_BRAVO, ROLE_MIKE, ROLE_MEMBER] - ) - + ) + mock_exception = HTTPError('error') mock_exception.response = Mock() mock_exception.response.status_code = 503 requests_mocker.put(add_guild_member_request.url, exc=mock_exception) - - authentication_code = 'auth_code' + + authentication_code = 'auth_code' oauth_url = 'https://www.example.com/oauth' state = '' mock_OAuth2Session.return_value.authorization_url.return_value = \ oauth_url, state - + # login self.app.set_user(self.member) # user opens services page services_page = self.app.get(reverse('services:services')) self.assertEqual(services_page.status_code, 200) - + # click activate on the service page response = services_page.click(href=reverse('discord:activate')) - - # check we got a redirect to Discord OAuth + + # check we got a redirect to Discord OAuth self.assertRedirects( response, expected_url=oauth_url, fetch_redirect_response=False ) @@ -561,124 +561,124 @@ class TestUserFeatures(WebTest): response = self.app.get( reverse('discord:callback'), params={'code': authentication_code} ) - + # user got a success message self.assertFalse(mock_messages.success.called) self.assertTrue(mock_messages.error.called) - + requests_made = list() - for r in requests_mocker.request_history: - obj = DiscordRequest(r.method, r.url) + for r in requests_mocker.request_history: + obj = DiscordRequest(r.method, r.url) requests_made.append(obj) - + expected = [ guild_infos_request, - user_get_current_request, - guild_roles_request, + user_get_current_request, + guild_roles_request, add_guild_member_request ] self.assertListEqual(requests_made, expected) @patch(MODULE_PATH + '.views.messages') - def test_user_deactivation_normal(self, requests_mocker, mock_messages): + def test_user_deactivation_normal(self, requests_mocker, mock_messages): # setup requests_mocker.get( guild_infos_request.url, json={'id': TEST_GUILD_ID, 'name': 'Test Guild'} - ) + ) requests_mocker.delete(remove_guild_member_request.url, status_code=204) DiscordUser.objects.create(user=self.member, uid=TEST_USER_ID) - + # login self.app.set_user(self.member) - + # user opens services page services_page = self.app.get(reverse('services:services')) self.assertEqual(services_page.status_code, 200) - # click deactivate on the service page + # click deactivate on the service page response = services_page.click(href=reverse('discord:deactivate')) - + # check we got a redirect to service page self.assertRedirects(response, expected_url=reverse('services:services')) # user got a success message self.assertTrue(mock_messages.success.called) self.assertFalse(mock_messages.error.called) - + requests_made = list() - for r in requests_mocker.request_history: - obj = DiscordRequest(r.method, r.url) + for r in requests_mocker.request_history: + obj = DiscordRequest(r.method, r.url) requests_made.append(obj) - + expected = [guild_infos_request, remove_guild_member_request] self.assertListEqual(requests_made, expected) @patch(MODULE_PATH + '.views.messages') - def test_user_deactivation_fails(self, requests_mocker, mock_messages): + def test_user_deactivation_fails(self, requests_mocker, mock_messages): # setup requests_mocker.get( guild_infos_request.url, json={'id': TEST_GUILD_ID, 'name': 'Test Guild'} - ) + ) mock_exception = HTTPError('error') mock_exception.response = Mock() mock_exception.response.status_code = 503 requests_mocker.delete(remove_guild_member_request.url, exc=mock_exception) - + DiscordUser.objects.create(user=self.member, uid=TEST_USER_ID) - + # login self.app.set_user(self.member) - + # user opens services page services_page = self.app.get(reverse('services:services')) self.assertEqual(services_page.status_code, 200) - # click deactivate on the service page + # click deactivate on the service page response = services_page.click(href=reverse('discord:deactivate')) - + # check we got a redirect to service page self.assertRedirects(response, expected_url=reverse('services:services')) # user got a success message self.assertFalse(mock_messages.success.called) self.assertTrue(mock_messages.error.called) - + requests_made = list() - for r in requests_mocker.request_history: - obj = DiscordRequest(r.method, r.url) + for r in requests_mocker.request_history: + obj = DiscordRequest(r.method, r.url) requests_made.append(obj) - + expected = [guild_infos_request, remove_guild_member_request] self.assertListEqual(requests_made, expected) @patch(MODULE_PATH + '.views.messages') - def test_user_add_new_server(self, requests_mocker, mock_messages): - # setup + def test_user_add_new_server(self, requests_mocker, mock_messages): + # setup mock_exception = HTTPError(Mock(**{"response.status_code": 400})) requests_mocker.get(guild_infos_request.url, exc=mock_exception) - - # login + + # login self.member.is_superuser = True self.member.is_staff = True self.member.save() self.app.set_user(self.member) - + # click deactivate on the service page response = self.app.get(reverse('services:services')) - + # check we got can see the page and the "link server" button self.assertEqual(response.status_int, 200) self.assertIsNotNone(response.html.find(id='btnLinkDiscordServer')) - + def test_when_server_name_fails_user_can_still_see_service_page( self, requests_mocker - ): + ): # setup requests_mocker.get(guild_infos_request.url, exc=DiscordApiBackoff(1000)) - + # login self.app.set_user(self.member) - + # user opens services page services_page = self.app.get(reverse('services:services')) self.assertEqual(services_page.status_code, 200) @@ -686,7 +686,7 @@ class TestUserFeatures(WebTest): @override_settings(CELERY_ALWAYS_EAGER=True) def test_server_name_is_updated_by_task( self, requests_mocker - ): + ): # setup requests_mocker.get( guild_infos_request.url, json={'id': TEST_GUILD_ID, 'name': 'Test Guild'} @@ -696,11 +696,11 @@ class TestUserFeatures(WebTest): # login self.app.set_user(self.member) - + # disable API call to make sure server name is not retrieved from API mock_exception = HTTPError(Mock(**{"response.status_code": 400})) requests_mocker.get(guild_infos_request.url, exc=mock_exception) - + # user opens services page services_page = self.app.get(reverse('services:services')) self.assertEqual(services_page.status_code, 200) diff --git a/allianceauth/services/modules/discord/tests/test_managers.py b/allianceauth/services/modules/discord/tests/test_managers.py index 79eb2249..62f110e0 100644 --- a/allianceauth/services/modules/discord/tests/test_managers.py +++ b/allianceauth/services/modules/discord/tests/test_managers.py @@ -9,21 +9,21 @@ from django.test import TestCase from allianceauth.tests.auth_utils import AuthUtils from . import ( - TEST_GUILD_ID, - TEST_USER_NAME, - TEST_USER_ID, - TEST_MAIN_NAME, - TEST_MAIN_ID, + TEST_GUILD_ID, + TEST_USER_NAME, + TEST_USER_ID, + TEST_MAIN_NAME, + TEST_MAIN_ID, MODULE_PATH, ROLE_ALPHA, ROLE_BRAVO, - ROLE_CHARLIE, + ROLE_CHARLIE, ) from ..discord_client.tests import create_matched_role from ..app_settings import ( - DISCORD_APP_ID, - DISCORD_APP_SECRET, - DISCORD_CALLBACK_URL, + DISCORD_APP_ID, + DISCORD_APP_SECRET, + DISCORD_CALLBACK_URL, ) from ..discord_client import DiscordClient, DiscordApiBackoff from ..models import DiscordUser @@ -39,32 +39,32 @@ logger = set_logger_to_file(MODULE_PATH + '.managers', __file__) @patch(MODULE_PATH + '.models.DiscordUser.objects.user_group_names') @patch(MODULE_PATH + '.models.DiscordUser.objects.user_formatted_nick') class TestAddUser(TestCase): - + def setUp(self): self.user = AuthUtils.create_user(TEST_USER_NAME) self.user_info = { - 'id': TEST_USER_ID, + 'id': TEST_USER_ID, 'name': TEST_USER_NAME, 'username': TEST_USER_NAME, 'discriminator': '1234', } self.access_token = 'accesstoken' - + def test_can_create_user_no_roles_no_nick( - self, + self, mock_user_formatted_nick, - mock_user_group_names, - mock_exchange_auth_code_for_token, + mock_user_group_names, + mock_exchange_auth_code_for_token, mock_DiscordClient ): mock_user_formatted_nick.return_value = None - mock_user_group_names.return_value = [] + mock_user_group_names.return_value = [] mock_exchange_auth_code_for_token.return_value = self.access_token mock_DiscordClient.return_value.current_user.return_value = self.user_info mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = [] mock_DiscordClient.return_value.add_guild_member.return_value = True - + result = DiscordUser.objects.add_user(self.user, authorization_code='abcdef') self.assertTrue(result) self.assertTrue( @@ -79,25 +79,25 @@ class TestAddUser(TestCase): self.assertIsNone(kwargs['nick']) def test_can_create_user_with_roles_no_nick( - self, + self, mock_user_formatted_nick, - mock_user_group_names, - mock_exchange_auth_code_for_token, + mock_user_group_names, + mock_exchange_auth_code_for_token, mock_DiscordClient ): roles = [ - create_matched_role(ROLE_ALPHA), - create_matched_role(ROLE_BRAVO), + create_matched_role(ROLE_ALPHA), + create_matched_role(ROLE_BRAVO), create_matched_role(ROLE_CHARLIE) ] mock_user_formatted_nick.return_value = None - mock_user_group_names.return_value = ['a', 'b', 'c'] - mock_exchange_auth_code_for_token.return_value = self.access_token + mock_user_group_names.return_value = ['a', 'b', 'c'] + mock_exchange_auth_code_for_token.return_value = self.access_token mock_DiscordClient.return_value.current_user.return_value = self.user_info mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = roles mock_DiscordClient.return_value.add_guild_member.return_value = True - + result = DiscordUser.objects.add_user(self.user, authorization_code='abcdef') self.assertTrue(result) self.assertTrue( @@ -113,20 +113,20 @@ class TestAddUser(TestCase): @patch(MODULE_PATH + '.managers.DISCORD_SYNC_NAMES', True) def test_can_create_user_no_roles_with_nick( - self, + self, mock_user_formatted_nick, - mock_user_group_names, - mock_exchange_auth_code_for_token, + mock_user_group_names, + mock_exchange_auth_code_for_token, mock_DiscordClient - ): + ): mock_user_formatted_nick.return_value = TEST_MAIN_NAME - mock_user_group_names.return_value = [] + mock_user_group_names.return_value = [] mock_exchange_auth_code_for_token.return_value = self.access_token mock_DiscordClient.return_value.current_user.return_value = self.user_info mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = [] mock_DiscordClient.return_value.add_guild_member.return_value = True - + result = DiscordUser.objects.add_user(self.user, authorization_code='abcdef') self.assertTrue(result) self.assertTrue( @@ -142,20 +142,20 @@ class TestAddUser(TestCase): @patch(MODULE_PATH + '.managers.DISCORD_SYNC_NAMES', False) def test_can_create_user_no_roles_and_without_nick_if_turned_off( - self, + self, mock_user_formatted_nick, - mock_user_group_names, - mock_exchange_auth_code_for_token, + mock_user_group_names, + mock_exchange_auth_code_for_token, mock_DiscordClient - ): + ): mock_user_formatted_nick.return_value = TEST_MAIN_NAME - mock_user_group_names.return_value = [] + mock_user_group_names.return_value = [] mock_exchange_auth_code_for_token.return_value = self.access_token mock_DiscordClient.return_value.current_user.return_value = self.user_info mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = [] mock_DiscordClient.return_value.add_guild_member.return_value = True - + result = DiscordUser.objects.add_user(self.user, authorization_code='abcdef') self.assertTrue(result) self.assertTrue( @@ -168,44 +168,44 @@ class TestAddUser(TestCase): self.assertEqual(kwargs['access_token'], self.access_token) self.assertIsNone(kwargs['role_ids']) self.assertIsNone(kwargs['nick']) - + def test_can_activate_existing_guild_member( - self, + self, mock_user_formatted_nick, - mock_user_group_names, - mock_exchange_auth_code_for_token, + mock_user_group_names, + mock_exchange_auth_code_for_token, mock_DiscordClient ): mock_user_formatted_nick.return_value = None - mock_user_group_names.return_value = [] + mock_user_group_names.return_value = [] mock_exchange_auth_code_for_token.return_value = self.access_token mock_DiscordClient.return_value.current_user.return_value = self.user_info mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = [] mock_DiscordClient.return_value.add_guild_member.return_value = None - + result = DiscordUser.objects.add_user(self.user, authorization_code='abcdef') self.assertTrue(result) self.assertTrue( DiscordUser.objects.filter(user=self.user, uid=TEST_USER_ID).exists() ) self.assertTrue(mock_DiscordClient.return_value.add_guild_member.called) - + def test_return_false_when_user_creation_fails( - self, + self, mock_user_formatted_nick, - mock_user_group_names, - mock_exchange_auth_code_for_token, + mock_user_group_names, + mock_exchange_auth_code_for_token, mock_DiscordClient - ): + ): mock_user_formatted_nick.return_value = None - mock_user_group_names.return_value = [] + mock_user_group_names.return_value = [] mock_exchange_auth_code_for_token.return_value = self.access_token mock_DiscordClient.return_value.current_user.return_value = self.user_info mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = [] mock_DiscordClient.return_value.add_guild_member.return_value = False - + result = DiscordUser.objects.add_user(self.user, authorization_code='abcdef') self.assertFalse(result) self.assertFalse( @@ -214,21 +214,21 @@ class TestAddUser(TestCase): self.assertTrue(mock_DiscordClient.return_value.add_guild_member.called) def test_return_false_when_on_api_backoff( - self, + self, mock_user_formatted_nick, - mock_user_group_names, - mock_exchange_auth_code_for_token, + mock_user_group_names, + mock_exchange_auth_code_for_token, mock_DiscordClient - ): + ): mock_user_formatted_nick.return_value = None - mock_user_group_names.return_value = [] + mock_user_group_names.return_value = [] mock_exchange_auth_code_for_token.return_value = self.access_token mock_DiscordClient.return_value.current_user.return_value = self.user_info mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = [] mock_DiscordClient.return_value.add_guild_member.side_effect = \ DiscordApiBackoff(999) - + result = DiscordUser.objects.add_user(self.user, authorization_code='abcdef') self.assertFalse(result) self.assertFalse( @@ -237,14 +237,14 @@ class TestAddUser(TestCase): self.assertTrue(mock_DiscordClient.return_value.add_guild_member.called) def test_return_false_on_http_error( - self, + self, mock_user_formatted_nick, - mock_user_group_names, - mock_exchange_auth_code_for_token, + mock_user_group_names, + mock_exchange_auth_code_for_token, mock_DiscordClient - ): + ): mock_user_formatted_nick.return_value = None - mock_user_group_names.return_value = [] + mock_user_group_names.return_value = [] mock_exchange_auth_code_for_token.return_value = self.access_token mock_DiscordClient.return_value.current_user.return_value = self.user_info mock_DiscordClient.return_value.match_or_create_roles_from_names\ @@ -253,18 +253,18 @@ class TestAddUser(TestCase): mock_exception.response = Mock() mock_exception.response.status_code = 500 mock_DiscordClient.return_value.add_guild_member.side_effect = mock_exception - + result = DiscordUser.objects.add_user(self.user, authorization_code='abcdef') self.assertFalse(result) self.assertFalse( DiscordUser.objects.filter(user=self.user, uid=TEST_USER_ID).exists() ) self.assertTrue(mock_DiscordClient.return_value.add_guild_member.called) - + class TestOauthHelpers(TestCase): - - @patch(MODULE_PATH + '.managers.DISCORD_APP_ID', '123456') + + @patch(MODULE_PATH + '.managers.DISCORD_APP_ID', '123456') def test_generate_bot_add_url(self): bot_add_url = DiscordUser.objects.generate_bot_add_url() @@ -303,18 +303,18 @@ class TestOauthHelpers(TestCase): class TestUserFormattedNick(TestCase): - - def setUp(self): + + def setUp(self): self.user = AuthUtils.create_user(TEST_USER_NAME) - + def test_return_nick_when_user_has_main(self): AuthUtils.add_main_character_2(self.user, TEST_MAIN_NAME, TEST_MAIN_ID) result = DiscordUser.objects.user_formatted_nick(self.user) expected = TEST_MAIN_NAME self.assertEqual(result, expected) - def test_return_none_if_user_has_no_main(self): - result = DiscordUser.objects.user_formatted_nick(self.user) + def test_return_none_if_user_has_no_main(self): + result = DiscordUser.objects.user_formatted_nick(self.user) self.assertIsNone(result) @@ -325,16 +325,16 @@ class TestUserGroupNames(TestCase): super().setUpClass() cls.group_1 = Group.objects.create(name='Group 1') cls.group_2 = Group.objects.create(name='Group 2') - + def setUp(self): - self.user = AuthUtils.create_member(TEST_USER_NAME) + self.user = AuthUtils.create_member(TEST_USER_NAME) def test_return_groups_and_state_names_for_user(self): self.user.groups.add(self.group_1) result = DiscordUser.objects.user_group_names(self.user) expected = ['Group 1', 'Member'] self.assertSetEqual(set(result), set(expected)) - + def test_return_state_only_if_user_has_no_groups(self): result = DiscordUser.objects.user_group_names(self.user) expected = ['Member'] @@ -355,11 +355,11 @@ class TestUserHasAccount(TestCase): def test_return_false_if_user_has_no_account(self): self.assertFalse(DiscordUser.objects.user_has_account(self.user)) - def test_return_false_if_user_does_not_exist(self): + def test_return_false_if_user_does_not_exist(self): my_user = User(username='Dummy') self.assertFalse(DiscordUser.objects.user_has_account(my_user)) - def test_return_false_if_not_called_with_user_object(self): + def test_return_false_if_not_called_with_user_object(self): self.assertFalse(DiscordUser.objects.user_has_account('abc')) @@ -371,7 +371,7 @@ class TestServerName(TestCase): def setUpClass(cls): super().setUpClass() cls.user = AuthUtils.create_user(TEST_USER_NAME) - + def test_returns_name_when_api_returns_it(self, mock_logger, mock_DiscordClient): server_name = "El Dorado" mock_DiscordClient.return_value.guild_name.return_value = server_name @@ -383,7 +383,7 @@ class TestServerName(TestCase): self, mock_logger, mock_DiscordClient ): mock_exception = HTTPError('Test exception') - mock_exception.response = Mock(**{"status_code": 440}) + mock_exception.response = Mock(**{"status_code": 440}) mock_DiscordClient.return_value.guild_name.side_effect = mock_exception self.assertEqual(DiscordUser.objects.server_name(), "") @@ -407,7 +407,7 @@ class TestServerName(TestCase): @patch(MODULE_PATH + '.managers.DiscordClient', spec=DiscordClient) -class TestRoleForGroup(TestCase): +class TestRoleForGroup(TestCase): def test_return_role_if_found(self, mock_DiscordClient): mock_DiscordClient.return_value.match_role_from_name.return_value = ROLE_ALPHA diff --git a/allianceauth/services/modules/discord/tests/test_models.py b/allianceauth/services/modules/discord/tests/test_models.py index 1ef85322..332b8cb3 100644 --- a/allianceauth/services/modules/discord/tests/test_models.py +++ b/allianceauth/services/modules/discord/tests/test_models.py @@ -7,15 +7,15 @@ from django.test import TestCase from allianceauth.tests.auth_utils import AuthUtils from . import ( - TEST_USER_NAME, - TEST_USER_ID, - TEST_MAIN_NAME, - TEST_MAIN_ID, + TEST_USER_NAME, + TEST_USER_ID, + TEST_MAIN_NAME, + TEST_MAIN_ID, MODULE_PATH, - ROLE_ALPHA, - ROLE_BRAVO, - ROLE_CHARLIE, - ROLE_MIKE + ROLE_ALPHA, + ROLE_BRAVO, + ROLE_CHARLIE, + ROLE_MIKE ) from ..discord_client import DiscordClient, DiscordApiBackoff from ..discord_client.tests import create_matched_role @@ -44,39 +44,39 @@ class TestBasicsAndHelpers(TestCase): @patch(MODULE_PATH + '.managers.DiscordClient', spec=DiscordClient) class TestUpdateNick(TestCase): - def setUp(self): + def setUp(self): self.user = AuthUtils.create_user(TEST_USER_NAME) self.discord_user = DiscordUser.objects.create( user=self.user, uid=TEST_USER_ID ) - + def test_can_update(self, mock_DiscordClient): - AuthUtils.add_main_character_2(self.user, TEST_MAIN_NAME, TEST_MAIN_ID) + AuthUtils.add_main_character_2(self.user, TEST_MAIN_NAME, TEST_MAIN_ID) mock_DiscordClient.return_value.modify_guild_member.return_value = True - + result = self.discord_user.update_nickname() self.assertTrue(result) self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called) - def test_dont_update_if_user_has_no_main(self, mock_DiscordClient): + def test_dont_update_if_user_has_no_main(self, mock_DiscordClient): mock_DiscordClient.return_value.modify_guild_member.return_value = False - + result = self.discord_user.update_nickname() self.assertFalse(result) self.assertFalse(mock_DiscordClient.return_value.modify_guild_member.called) - + def test_return_none_if_user_no_longer_a_member(self, mock_DiscordClient): AuthUtils.add_main_character_2(self.user, TEST_MAIN_NAME, TEST_MAIN_ID) mock_DiscordClient.return_value.modify_guild_member.return_value = None - + result = self.discord_user.update_nickname() self.assertIsNone(result) - self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called) + self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called) def test_return_false_if_api_returns_false(self, mock_DiscordClient): - AuthUtils.add_main_character_2(self.user, TEST_MAIN_NAME, TEST_MAIN_ID) + AuthUtils.add_main_character_2(self.user, TEST_MAIN_NAME, TEST_MAIN_ID) mock_DiscordClient.return_value.modify_guild_member.return_value = False - + result = self.discord_user.update_nickname() self.assertFalse(result) self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called) @@ -89,16 +89,16 @@ class TestUpdateUsername(TestCase): def setUpClass(cls): super().setUpClass() cls.user = AuthUtils.create_user(TEST_USER_NAME) - - def setUp(self): + + def setUp(self): self.discord_user = DiscordUser.objects.create( - user=self.user, - uid=TEST_USER_ID, - username=TEST_MAIN_NAME, + user=self.user, + uid=TEST_USER_ID, + username=TEST_MAIN_NAME, discriminator='1234' ) - - def test_can_update(self, mock_DiscordClient): + + def test_can_update(self, mock_DiscordClient): new_username = 'New name' new_discriminator = '9876' user_info = { @@ -109,7 +109,7 @@ class TestUpdateUsername(TestCase): } } mock_DiscordClient.return_value.guild_member.return_value = user_info - + result = self.discord_user.update_username() self.assertTrue(result) self.assertTrue(mock_DiscordClient.return_value.guild_member.called) @@ -138,7 +138,7 @@ class TestUpdateUsername(TestCase): def test_return_false_if_api_returns_corrput_data_2(self, mock_DiscordClient): user_info = { 'user': { - 'id': str(TEST_USER_ID), + 'id': str(TEST_USER_ID), 'discriminator': '1234', } } @@ -150,7 +150,7 @@ class TestUpdateUsername(TestCase): def test_return_false_if_api_returns_corrput_data_3(self, mock_DiscordClient): user_info = { 'user': { - 'id': str(TEST_USER_ID), + 'id': str(TEST_USER_ID), 'username': TEST_USER_NAME, } } @@ -169,12 +169,12 @@ class TestDeleteUser(TestCase): super().setUpClass() cls.user = AuthUtils.create_user(TEST_USER_NAME) - def setUp(self): + def setUp(self): self.discord_user = DiscordUser.objects.create( user=self.user, uid=TEST_USER_ID ) - def test_can_delete_user(self, mock_DiscordClient, mock_notify): + def test_can_delete_user(self, mock_DiscordClient, mock_notify): mock_DiscordClient.return_value.remove_guild_member.return_value = True result = self.discord_user.delete_user() self.assertTrue(result) @@ -192,7 +192,7 @@ class TestDeleteUser(TestCase): def test_can_delete_user_when_member_is_unknown( self, mock_DiscordClient, mock_notify - ): + ): mock_DiscordClient.return_value.remove_guild_member.return_value = None result = self.discord_user.delete_user() self.assertTrue(result) @@ -219,7 +219,7 @@ class TestDeleteUser(TestCase): ) self.assertTrue(mock_DiscordClient.return_value.remove_guild_member.called) self.assertFalse(mock_notify.called) - + def test_raise_exception_on_api_backoff( self, mock_DiscordClient, mock_notify ): @@ -227,7 +227,7 @@ class TestDeleteUser(TestCase): DiscordApiBackoff(999) with self.assertRaises(DiscordApiBackoff): self.discord_user.delete_user() - + def test_return_false_on_api_backoff_and_exception_handling_on( self, mock_DiscordClient, mock_notify ): @@ -244,9 +244,9 @@ class TestDeleteUser(TestCase): mock_exception.response.status_code = 500 mock_DiscordClient.return_value.remove_guild_member.side_effect = \ mock_exception - + with self.assertRaises(HTTPError): - self.discord_user.delete_user() + self.discord_user.delete_user() def test_return_false_on_http_error_and_exception_handling_on( self, mock_DiscordClient, mock_notify @@ -264,7 +264,7 @@ class TestDeleteUser(TestCase): @patch(MODULE_PATH + '.models.DiscordUser.objects.user_group_names') class TestUpdateGroups(TestCase): - def setUp(self): + def setUp(self): self.user = AuthUtils.create_user(TEST_USER_NAME) self.discord_user = DiscordUser.objects.create( user=self.user, uid=TEST_USER_ID @@ -272,14 +272,14 @@ class TestUpdateGroups(TestCase): self.guild_roles = [ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE] self.roles_requested = [ create_matched_role(ROLE_ALPHA), create_matched_role(ROLE_BRAVO) - ] - + ] + def test_update_if_needed( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient ): - roles_current = [1] + roles_current = [1] mock_user_group_names.return_value = [] mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = self.roles_requested @@ -287,7 +287,7 @@ class TestUpdateGroups(TestCase): mock_DiscordClient.return_value.guild_member.return_value = \ {'roles': roles_current} mock_DiscordClient.return_value.modify_guild_member.return_value = True - + result = self.discord_user.update_groups() self.assertTrue(result) self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called) @@ -295,11 +295,11 @@ class TestUpdateGroups(TestCase): self.assertEqual(set(kwargs['role_ids']), {1, 2}) def test_update_if_needed_and_preserve_managed_roles( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient ): - roles_current = [1, 13] + roles_current = [1, 13] mock_user_group_names.return_value = [] mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = self.roles_requested @@ -307,7 +307,7 @@ class TestUpdateGroups(TestCase): mock_DiscordClient.return_value.guild_member.return_value = \ {'roles': roles_current} mock_DiscordClient.return_value.modify_guild_member.return_value = True - + result = self.discord_user.update_groups() self.assertTrue(result) self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called) @@ -315,28 +315,28 @@ class TestUpdateGroups(TestCase): self.assertEqual(set(kwargs['role_ids']), {1, 2, 13}) def test_dont_update_if_not_needed( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient ): - roles_current = [1, 2, 13] + roles_current = [1, 2, 13] mock_user_group_names.return_value = [] mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = self.roles_requested mock_DiscordClient.return_value.guild_roles.return_value = self.guild_roles mock_DiscordClient.return_value.guild_member.return_value = \ {'roles': roles_current} - + result = self.discord_user.update_groups() self.assertTrue(result) self.assertFalse(mock_DiscordClient.return_value.modify_guild_member.called) def test_update_if_user_has_no_roles_on_discord( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient ): - roles_current = [] + roles_current = [] mock_user_group_names.return_value = [] mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = self.roles_requested @@ -344,30 +344,30 @@ class TestUpdateGroups(TestCase): mock_DiscordClient.return_value.guild_member.return_value = \ {'roles': roles_current} mock_DiscordClient.return_value.modify_guild_member.return_value = True - + result = self.discord_user.update_groups() self.assertTrue(result) self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called) args, kwargs = mock_DiscordClient.return_value.modify_guild_member.call_args self.assertEqual(set(kwargs['role_ids']), {1, 2}) - + def test_return_none_if_user_no_longer_a_member( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient - ): + ): mock_DiscordClient.return_value.guild_member.return_value = None - + result = self.discord_user.update_groups() self.assertIsNone(result) self.assertFalse(mock_DiscordClient.return_value.modify_guild_member.called) def test_return_false_if_api_returns_false( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient ): - roles_current = [1] + roles_current = [1] mock_user_group_names.return_value = [] mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = self.roles_requested @@ -375,17 +375,17 @@ class TestUpdateGroups(TestCase): mock_DiscordClient.return_value.guild_member.return_value = \ {'roles': roles_current} mock_DiscordClient.return_value.modify_guild_member.return_value = False - + result = self.discord_user.update_groups() self.assertFalse(result) self.assertTrue(mock_DiscordClient.return_value.modify_guild_member.called) def test_raise_exception_if_member_has_unknown_roles( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient ): - roles_current = [99] + roles_current = [99] mock_user_group_names.return_value = [] mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = self.roles_requested @@ -393,21 +393,21 @@ class TestUpdateGroups(TestCase): mock_DiscordClient.return_value.guild_member.return_value = \ {'roles': roles_current} mock_DiscordClient.return_value.modify_guild_member.return_value = True - + with self.assertRaises(RuntimeError): self.discord_user.update_groups() def test_refresh_guild_roles_user_roles_dont_not_match( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient - ): + ): def my_guild_roles(guild_id, use_cache=True): if use_cache: return [ROLE_ALPHA, ROLE_BRAVO, ROLE_MIKE] else: return [ROLE_ALPHA, ROLE_BRAVO, ROLE_CHARLIE, ROLE_MIKE] - + roles_current = [3] mock_user_group_names.return_value = [] mock_DiscordClient.return_value.match_or_create_roles_from_names\ @@ -421,10 +421,10 @@ class TestUpdateGroups(TestCase): self.assertEqual(mock_DiscordClient.return_value.guild_roles.call_count, 2) def test_raise_exception_if_member_info_is_invalid( - self, - mock_user_group_names, + self, + mock_user_group_names, mock_DiscordClient - ): + ): mock_user_group_names.return_value = [] mock_DiscordClient.return_value.match_or_create_roles_from_names\ .return_value = self.roles_requested @@ -432,6 +432,6 @@ class TestUpdateGroups(TestCase): mock_DiscordClient.return_value.guild_member.return_value = \ {'user': 'dummy'} mock_DiscordClient.return_value.modify_guild_member.return_value = True - + with self.assertRaises(RuntimeError): self.discord_user.update_groups() diff --git a/allianceauth/services/modules/discord/tests/test_tasks.py b/allianceauth/services/modules/discord/tests/test_tasks.py index 4c33b012..1c773d7c 100644 --- a/allianceauth/services/modules/discord/tests/test_tasks.py +++ b/allianceauth/services/modules/discord/tests/test_tasks.py @@ -23,7 +23,7 @@ logger = set_logger_to_file(MODULE_PATH, __file__) @patch(MODULE_PATH + '.DiscordUser.update_groups') @patch(MODULE_PATH + ".logger") class TestUpdateGroups(TestCase): - + @classmethod def setUpClass(cls): super().setUpClass() @@ -32,7 +32,7 @@ class TestUpdateGroups(TestCase): cls.group_2 = Group.objects.create(name='Group 2') cls.group_1.user_set.add(cls.user) cls.group_2.user_set.add(cls.user) - + def test_can_update_groups(self, mock_logger, mock_update_groups): DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) tasks.update_groups(self.user.pk) @@ -43,7 +43,7 @@ class TestUpdateGroups(TestCase): ): tasks.update_groups(self.user.pk) self.assertFalse(mock_update_groups.called) - + def test_retries_on_api_backoff(self, mock_logger, mock_update_groups): DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) mock_exception = DiscordApiBackoff(999) @@ -63,7 +63,7 @@ class TestUpdateGroups(TestCase): tasks.update_groups(self.user.pk) self.assertTrue(mock_logger.warning.called) - + def test_retry_on_http_error_404_when_user_not_deleted( self, mock_logger, mock_update_groups ): @@ -77,8 +77,8 @@ class TestUpdateGroups(TestCase): tasks.update_groups(self.user.pk) self.assertTrue(mock_logger.warning.called) - - def test_retry_on_non_http_error(self, mock_logger, mock_update_groups): + + def test_retry_on_non_http_error(self, mock_logger, mock_update_groups): DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) mock_update_groups.side_effect = ConnectionError @@ -86,23 +86,23 @@ class TestUpdateGroups(TestCase): tasks.update_groups(self.user.pk) self.assertTrue(mock_logger.warning.called) - + @patch(MODULE_PATH + '.DISCORD_TASKS_MAX_RETRIES', 3) def test_log_error_if_retries_exhausted(self, mock_logger, mock_update_groups): - DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) + DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) mock_task = MagicMock(**{'request.retries': 3}) mock_update_groups.side_effect = ConnectionError update_groups_inner = tasks.update_groups.__wrapped__.__func__ - + update_groups_inner(mock_task, self.user.pk) self.assertTrue(mock_logger.error.called) - + @patch(MODULE_PATH + '.delete_user.delay') def test_delete_user_if_user_is_no_longer_member_of_discord_server( self, mock_delete_user, mock_logger, mock_update_groups ): mock_update_groups.return_value = None - + DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) tasks.update_groups(self.user.pk) self.assertTrue(mock_update_groups.called) @@ -111,45 +111,45 @@ class TestUpdateGroups(TestCase): @patch(MODULE_PATH + '.DiscordUser.update_nickname') class TestUpdateNickname(TestCase): - + @classmethod def setUpClass(cls): super().setUpClass() cls.user = AuthUtils.create_member(TEST_USER_NAME) AuthUtils.add_main_character_2( - cls.user, - TEST_MAIN_NAME, - TEST_MAIN_ID, - corp_id='2', - corp_name='test_corp', + cls.user, + TEST_MAIN_NAME, + TEST_MAIN_ID, + corp_id='2', + corp_name='test_corp', corp_ticker='TEST', disconnect_signals=True ) cls.discord_user = DiscordUser.objects.create(user=cls.user, uid=TEST_USER_ID) - def test_can_update_nickname(self, mock_update_nickname): - mock_update_nickname.return_value = True - + def test_can_update_nickname(self, mock_update_nickname): + mock_update_nickname.return_value = True + tasks.update_nickname(self.user.pk) self.assertTrue(mock_update_nickname.called) def test_no_action_when_user_had_no_account(self, mock_update_nickname): my_user = AuthUtils.create_user('Dummy User') mock_update_nickname.return_value = False - + tasks.update_nickname(my_user.pk) self.assertFalse(mock_update_nickname.called) - - def test_retries_on_api_backoff(self, mock_update_nickname): + + def test_retries_on_api_backoff(self, mock_update_nickname): mock_exception = DiscordApiBackoff(999) mock_update_nickname.side_effect = mock_exception - + with self.assertRaises(Retry): tasks.update_nickname(self.user.pk) - def test_retries_on_general_exception(self, mock_update_nickname): + def test_retries_on_general_exception(self, mock_update_nickname): mock_update_nickname.side_effect = ConnectionError - + with self.assertRaises(Retry): tasks.update_nickname(self.user.pk) @@ -158,9 +158,9 @@ class TestUpdateNickname(TestCase): mock_task = MagicMock(**{'request.retries': 3}) mock_update_nickname.side_effect = ConnectionError update_nickname_inner = tasks.update_nickname.__wrapped__.__func__ - + update_nickname_inner(mock_task, self.user.pk) - + @patch(MODULE_PATH + '.DiscordUser.update_username') class TestUpdateUsername(TestCase): @@ -206,7 +206,7 @@ class TestDeleteUser(TestCase): self, mock_delete_user_delay, mock_delete_user ): mock_delete_user.return_value = None - + tasks.delete_user(self.user.pk) self.assertTrue(mock_delete_user.called) self.assertFalse(mock_delete_user_delay.called) @@ -218,15 +218,15 @@ class TestTaskPerformUserAction(TestCase): @classmethod def setUpClass(cls): super().setUpClass() - cls.user = AuthUtils.create_member('Peter Parker') + cls.user = AuthUtils.create_member('Peter Parker') cls.discord_user = DiscordUser.objects.create(user=cls.user, uid=TEST_USER_ID) def test_raise_value_error_on_unknown_method(self, mock_update_groups): mock_task = MagicMock(**{'request.retries': 0}) - + with self.assertRaises(ValueError): tasks._task_perform_user_action(mock_task, self.user.pk, 'invalid_method') - + def test_catch_and_log_unexpected_exceptions(self, mock_update_groups): mock_task = MagicMock(**{'request.retries': 0}) mock_update_groups.side_effect = RuntimeError @@ -253,8 +253,8 @@ class TestTaskUpdateServername(TestCase): self.assertFalse(mock_logger.error.called) - def test_retry_on_http_error(self, mock_logger, mock_server_name): - mock_exception = HTTPError(MagicMock(**{"response.status_code": 500})) + def test_retry_on_http_error(self, mock_logger, mock_server_name): + mock_exception = HTTPError(MagicMock(**{"response.status_code": 500})) mock_server_name.side_effect = mock_exception with self.assertRaises(Retry): @@ -262,20 +262,20 @@ class TestTaskUpdateServername(TestCase): self.assertTrue(mock_logger.warning.called) - def test_retry_on_connection_error(self, mock_logger, mock_server_name): + def test_retry_on_connection_error(self, mock_logger, mock_server_name): mock_server_name.side_effect = ConnectionError with self.assertRaises(Retry): tasks.update_servername() self.assertTrue(mock_logger.warning.called) - + @patch(MODULE_PATH + '.DISCORD_TASKS_MAX_RETRIES', 3) def test_log_error_if_retries_exhausted(self, mock_logger, mock_server_name): mock_task = MagicMock(**{'request.retries': 3}) mock_server_name.side_effect = ConnectionError update_groups_inner = tasks.update_servername.__wrapped__.__func__ - + update_groups_inner(mock_task) self.assertTrue(mock_logger.error.called) @@ -285,24 +285,24 @@ class TestTaskPerformUsersAction(TestCase): @classmethod def setUpClass(cls): - super().setUpClass() + super().setUpClass() def test_raise_value_error_on_unknown_method(self, mock_server_name): mock_task = MagicMock(**{'request.retries': 0}) - + with self.assertRaises(ValueError): tasks._task_perform_users_action(mock_task, 'invalid_method') - + def test_catch_and_log_unexpected_exceptions(self, mock_server_name): mock_server_name.side_effect = RuntimeError mock_task = MagicMock(**{'request.retries': 0}) - + tasks._task_perform_users_action(mock_task, 'server_name') @override_settings(CELERY_ALWAYS_EAGER=True) class TestBulkTasks(TestCase): - + @classmethod def setUpClass(cls): super().setUpClass() @@ -321,7 +321,7 @@ class TestBulkTasks(TestCase): tasks.update_groups_bulk(expected_pks) self.assertEqual(mock_update_groups.call_count, 2) current_pks = [args[0][0] for args in mock_update_groups.call_args_list] - + self.assertSetEqual(set(current_pks), set(expected_pks)) @patch(MODULE_PATH + '.update_groups.si') @@ -347,7 +347,7 @@ class TestBulkTasks(TestCase): self.assertEqual(mock_update_nickname.call_count, 2) current_pks = [ args[0][0] for args in mock_update_nickname.call_args_list - ] + ] self.assertSetEqual(set(current_pks), set(expected_pks)) @patch(MODULE_PATH + '.update_nickname.si') @@ -374,11 +374,11 @@ class TestBulkTasks(TestCase): tasks.update_usernames_bulk(expected_pks) self.assertEqual(mock_update_username.call_count, 2) current_pks = [args[0][0] for args in mock_update_username.call_args_list] - + self.assertSetEqual(set(current_pks), set(expected_pks)) @patch(MODULE_PATH + '.update_username') - @patch(MODULE_PATH + '.update_servername') + @patch(MODULE_PATH + '.update_servername') def test_can_update_all_usernames( self, mock_update_servername, mock_update_username ): @@ -405,7 +405,7 @@ class TestBulkTasks(TestCase): du_3 = DiscordUser.objects.create(user=self.user_3, uid=789) tasks.update_all() - self.assertEqual(mock_update_groups.si.call_count, 3) + self.assertEqual(mock_update_groups.si.call_count, 3) current_pks = [args[0][0] for args in mock_update_groups.si.call_args_list] expected_pks = [du_1.pk, du_2.pk, du_3.pk] self.assertSetEqual(set(current_pks), set(expected_pks)) @@ -415,7 +415,7 @@ class TestBulkTasks(TestCase): expected_pks = [du_1.pk, du_2.pk, du_3.pk] self.assertSetEqual(set(current_pks), set(expected_pks)) - self.assertEqual(mock_update_usernames.si.call_count, 3) + self.assertEqual(mock_update_usernames.si.call_count, 3) current_pks = [args[0][0] for args in mock_update_usernames.si.call_args_list] expected_pks = [du_1.pk, du_2.pk, du_3.pk] self.assertSetEqual(set(current_pks), set(expected_pks)) @@ -432,14 +432,14 @@ class TestBulkTasks(TestCase): du_3 = DiscordUser.objects.create(user=self.user_3, uid=789) tasks.update_all() - self.assertEqual(mock_update_groups.si.call_count, 3) + self.assertEqual(mock_update_groups.si.call_count, 3) current_pks = [args[0][0] for args in mock_update_groups.si.call_args_list] expected_pks = [du_1.pk, du_2.pk, du_3.pk] self.assertSetEqual(set(current_pks), set(expected_pks)) self.assertEqual(mock_update_nickname.si.call_count, 0) - self.assertEqual(mock_update_usernames.si.call_count, 3) + self.assertEqual(mock_update_usernames.si.call_count, 3) current_pks = [args[0][0] for args in mock_update_usernames.si.call_args_list] expected_pks = [du_1.pk, du_2.pk, du_3.pk] self.assertSetEqual(set(current_pks), set(expected_pks)) diff --git a/allianceauth/services/modules/discord/tests/test_utils.py b/allianceauth/services/modules/discord/tests/test_utils.py index 09245a68..801fce54 100644 --- a/allianceauth/services/modules/discord/tests/test_utils.py +++ b/allianceauth/services/modules/discord/tests/test_utils.py @@ -9,19 +9,19 @@ MODULE_PATH = 'allianceauth.services.modules.discord.utils' class TestCleanSetting(TestCase): @patch(MODULE_PATH + '.settings') - def test_default_if_not_set(self, mock_settings): + def test_default_if_not_set(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = Mock(spec=None) result = clean_setting( - 'TEST_SETTING_DUMMY', - False, + 'TEST_SETTING_DUMMY', + False, ) self.assertEqual(result, False) @patch(MODULE_PATH + '.settings') - def test_default_if_not_set_for_none(self, mock_settings): + def test_default_if_not_set_for_none(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = Mock(spec=None) result = clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', None, required_type=int ) @@ -31,8 +31,8 @@ class TestCleanSetting(TestCase): def test_true_stays_true(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = True result = clean_setting( - 'TEST_SETTING_DUMMY', - False, + 'TEST_SETTING_DUMMY', + False, ) self.assertEqual(result, True) @@ -40,7 +40,7 @@ class TestCleanSetting(TestCase): def test_false_stays_false(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = False result = clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', False ) self.assertEqual(result, False) @@ -49,7 +49,7 @@ class TestCleanSetting(TestCase): def test_default_for_invalid_type_bool(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = 'invalid type' result = clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', False ) self.assertEqual(result, False) @@ -58,7 +58,7 @@ class TestCleanSetting(TestCase): def test_default_for_invalid_type_int(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = 'invalid type' result = clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', 50 ) self.assertEqual(result, 50) @@ -67,7 +67,7 @@ class TestCleanSetting(TestCase): def test_default_if_below_minimum_1(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = -5 result = clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', default_value=50 ) self.assertEqual(result, 50) @@ -76,7 +76,7 @@ class TestCleanSetting(TestCase): def test_default_if_below_minimum_2(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = -50 result = clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', default_value=50, min_value=-10 ) @@ -86,7 +86,7 @@ class TestCleanSetting(TestCase): def test_default_for_invalid_type_int_2(self, mock_settings): mock_settings.TEST_SETTING_DUMMY = 1000 result = clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', default_value=50, max_value=100 ) @@ -97,6 +97,6 @@ class TestCleanSetting(TestCase): mock_settings.TEST_SETTING_DUMMY = 'invalid type' with self.assertRaises(ValueError): clean_setting( - 'TEST_SETTING_DUMMY', + 'TEST_SETTING_DUMMY', default_value=None ) diff --git a/allianceauth/services/modules/discord/tests/test_views.py b/allianceauth/services/modules/discord/tests/test_views.py index 909d63df..1b74a6a7 100644 --- a/allianceauth/services/modules/discord/tests/test_views.py +++ b/allianceauth/services/modules/discord/tests/test_views.py @@ -11,10 +11,10 @@ from ..discord_client import DiscordClient from ..models import DiscordUser from ..utils import set_logger_to_file from ..views import ( - discord_callback, - reset_discord, - deactivate_discord, - discord_add_bot, + discord_callback, + reset_discord, + deactivate_discord, + discord_add_bot, activate_discord ) @@ -49,10 +49,10 @@ class TestActivateDiscord(SetupClassMixin, TestCase): @patch(MODULE_PATH + '.views.messages') @patch(MODULE_PATH + '.managers.DiscordClient', spec=DiscordClient) class TestDeactivateDiscord(SetupClassMixin, TestCase): - + def setUp(self): DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) - + def test_when_successful_show_success_message( self, mock_DiscordClient, mock_messages ): @@ -81,7 +81,7 @@ class TestDeactivateDiscord(SetupClassMixin, TestCase): @patch(MODULE_PATH + '.views.messages') @patch(MODULE_PATH + '.managers.DiscordClient') class TestResetDiscord(SetupClassMixin, TestCase): - + def setUp(self): DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) @@ -93,7 +93,7 @@ class TestResetDiscord(SetupClassMixin, TestCase): request.user = self.user response = reset_discord(request) self.assertEqual(response.status_code, 302) - self.assertEqual(response.url, reverse("discord:activate")) + self.assertEqual(response.url, reverse("discord:activate")) self.assertFalse(mock_messages.error.called) def test_when_unsuccessful_message_error_and_redirect_to_service( @@ -111,7 +111,7 @@ class TestResetDiscord(SetupClassMixin, TestCase): @patch(MODULE_PATH + '.views.messages') @patch(MODULE_PATH + '.views.DiscordUser.objects.add_user') class TestDiscordCallback(SetupClassMixin, TestCase): - + def setUp(self): DiscordUser.objects.create(user=self.user, uid=TEST_USER_ID) @@ -126,7 +126,7 @@ class TestDiscordCallback(SetupClassMixin, TestCase): self.assertEqual(response.url, self.services_url) self.assertTrue(mock_messages.success.called) self.assertFalse(mock_messages.error.called) - + def test_handle_no_code(self, mock_add_user, mock_messages): mock_add_user.return_value = True request = self.factory.get( @@ -138,7 +138,7 @@ class TestDiscordCallback(SetupClassMixin, TestCase): self.assertEqual(response.url, self.services_url) self.assertFalse(mock_messages.success.called) self.assertTrue(mock_messages.error.called) - + def test_error_message_when_user_creation_failed( self, mock_add_user, mock_messages ): @@ -156,7 +156,7 @@ class TestDiscordCallback(SetupClassMixin, TestCase): @patch(MODULE_PATH + '.views.DiscordUser.objects.generate_bot_add_url') class TestDiscordAddBot(TestCase): - + def test_add_bot(self, mock_generate_bot_add_url): bot_url = 'https://www.example.com/bot' mock_generate_bot_add_url.return_value = bot_url diff --git a/allianceauth/services/modules/discord/utils.py b/allianceauth/services/modules/discord/utils.py index 09a343e8..98067d03 100644 --- a/allianceauth/services/modules/discord/utils.py +++ b/allianceauth/services/modules/discord/utils.py @@ -15,7 +15,7 @@ class LoggerAddTag(logging.LoggerAdapter): def process(self, msg, kwargs): return '[%s] %s' % (self.prefix, msg), kwargs - + def clean_setting( name: str, @@ -58,7 +58,7 @@ def clean_setting( 'You setting for %s it not valid. Please correct it. ' 'Using default for now: %s', name, - default_value + default_value ) cleaned_value = default_value return cleaned_value @@ -66,15 +66,15 @@ def clean_setting( def set_logger_to_file(logger_name: str, name: str) -> object: """set logger for current module to log into a file. Useful for tests. - + Args: - logger: current logger object - name: name of current module, e.g. __file__ - + Returns: - amended logger """ - + # reconfigure logger so we get logging from tested module f_format = logging.Formatter( '%(asctime)s - %(levelname)s - %(module)s:%(funcName)s - %(message)s' diff --git a/allianceauth/services/modules/discord/views.py b/allianceauth/services/modules/discord/views.py index efa290f8..65b2e4ec 100644 --- a/allianceauth/services/modules/discord/views.py +++ b/allianceauth/services/modules/discord/views.py @@ -47,11 +47,11 @@ def reset_discord(request): ): logger.info( "Successfully deleted discord user for user %s - " - "forwarding to discord activation.", + "forwarding to discord activation.", request.user ) return redirect("discord:activate") - + logger.error( "Unsuccessful attempt to reset discord for user %s", request.user ) @@ -74,7 +74,7 @@ def discord_callback(request): logger.debug( "Received Discord callback for activation of user %s", request.user ) - authorization_code = request.GET.get('code', None) + authorization_code = request.GET.get('code', None) if not authorization_code: logger.warning( "Did not receive OAuth code from callback for user %s", request.user @@ -82,34 +82,34 @@ def discord_callback(request): success = False else: if DiscordUser.objects.add_user( - user=request.user, - authorization_code=authorization_code, + user=request.user, + authorization_code=authorization_code, is_rate_limited=False ): logger.info( "Successfully activated Discord account for user %s", request.user ) success = True - + else: logger.error( "Failed to activate Discord account for user %s", request.user ) success = False - + if success: messages.success( request, _('Your Discord account has been successfully activated.') ) else: messages.error( - request, + request, _( 'An error occurred while trying to activate your Discord account. ' 'Please try again.' ) ) - + return redirect("services:services") diff --git a/allianceauth/services/modules/discourse/__init__.py b/allianceauth/services/modules/discourse/__init__.py index 8a08530f..5b367862 100644 --- a/allianceauth/services/modules/discourse/__init__.py +++ b/allianceauth/services/modules/discourse/__init__.py @@ -1 +1 @@ -default_app_config = 'allianceauth.services.modules.discourse.apps.DiscourseServiceConfig' \ No newline at end of file +default_app_config = 'allianceauth.services.modules.discourse.apps.DiscourseServiceConfig' diff --git a/allianceauth/services/modules/discourse/admin.py b/allianceauth/services/modules/discourse/admin.py index 2e1abe26..b4efc18b 100644 --- a/allianceauth/services/modules/discourse/admin.py +++ b/allianceauth/services/modules/discourse/admin.py @@ -6,6 +6,6 @@ from ...admin import ServicesUserAdmin @admin.register(DiscourseUser) class DiscourseUserAdmin(ServicesUserAdmin): - list_display = ServicesUserAdmin.list_display + ( - 'enabled', - ) + list_display = ServicesUserAdmin.list_display + ( + 'enabled', + ) diff --git a/allianceauth/services/modules/discourse/manager.py b/allianceauth/services/modules/discourse/manager.py index d4f6827f..bdf69cea 100644 --- a/allianceauth/services/modules/discourse/manager.py +++ b/allianceauth/services/modules/discourse/manager.py @@ -125,8 +125,7 @@ class DiscourseManager: @staticmethod def __suspend_user(username): u_id = DiscourseManager.__user_name_to_id(username) - return providers.discourse.client.suspend(u_id, DiscourseManager.SUSPEND_DAYS, - DiscourseManager.SUSPEND_REASON) + return providers.discourse.client.suspend(u_id, DiscourseManager.SUSPEND_DAYS, DiscourseManager.SUSPEND_REASON) @staticmethod def __unsuspend(username): diff --git a/allianceauth/services/modules/discourse/migrations/0001_initial.py b/allianceauth/services/modules/discourse/migrations/0001_initial.py index ef80496c..a7b9109f 100644 --- a/allianceauth/services/modules/discourse/migrations/0001_initial.py +++ b/allianceauth/services/modules/discourse/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:15 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/discourse/migrations/0002_service_permissions.py b/allianceauth/services/modules/discourse/migrations/0002_service_permissions.py index b09436ee..d18939f6 100644 --- a/allianceauth/services/modules/discourse/migrations/0002_service_permissions.py +++ b/allianceauth/services/modules/discourse/migrations/0002_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/discourse/models.py b/allianceauth/services/modules/discourse/models.py index 62e55882..f4b2b871 100644 --- a/allianceauth/services/modules/discourse/models.py +++ b/allianceauth/services/modules/discourse/models.py @@ -16,4 +16,3 @@ class DiscourseUser(models.Model): permissions = ( ("access_discourse", u"Can access the Discourse service"), ) - diff --git a/allianceauth/services/modules/discourse/providers.py b/allianceauth/services/modules/discourse/providers.py index 1767cceb..276d82da 100644 --- a/allianceauth/services/modules/discourse/providers.py +++ b/allianceauth/services/modules/discourse/providers.py @@ -16,4 +16,4 @@ class DiscourseAPIClient(): api_key=settings.DISCOURSE_API_KEY) return self._client -discourse = DiscourseAPIClient() \ No newline at end of file +discourse = DiscourseAPIClient() diff --git a/allianceauth/services/modules/discourse/tasks.py b/allianceauth/services/modules/discourse/tasks.py index 8939ff84..d3a542c8 100644 --- a/allianceauth/services/modules/discourse/tasks.py +++ b/allianceauth/services/modules/discourse/tasks.py @@ -64,4 +64,3 @@ class DiscourseTasks: def get_username(user): from .auth_hooks import DiscourseService return NameFormatter(DiscourseService(), user).format_name() - diff --git a/allianceauth/services/modules/discourse/views.py b/allianceauth/services/modules/discourse/views.py index ba822a2a..76efd5d7 100644 --- a/allianceauth/services/modules/discourse/views.py +++ b/allianceauth/services/modules/discourse/views.py @@ -94,4 +94,3 @@ def discourse_sso(request): # Redirect back to Discourse url = '%s/session/sso_login' % settings.DISCOURSE_URL return redirect('%s?%s' % (url, query_string)) - diff --git a/allianceauth/services/modules/example/auth_hooks.py b/allianceauth/services/modules/example/auth_hooks.py index 42df64cc..5469b3af 100644 --- a/allianceauth/services/modules/example/auth_hooks.py +++ b/allianceauth/services/modules/example/auth_hooks.py @@ -27,7 +27,7 @@ class ExampleService(ServicesHook): urls = self.Urls() # urls.auth_activate = 'auth_example_activate' # urls.auth_deactivate = 'auth_example_deactivate' - # urls.auth_reset_password = 'auth_example_reset_password' + # urls.auth_reset_password = 'auth_example_reset_password' # urls.auth_set_password = 'auth_example_set_password' return render_to_string(self.service_ctrl_template, { 'service_name': self.title, diff --git a/allianceauth/services/modules/ips4/manager.py b/allianceauth/services/modules/ips4/manager.py index 1b723189..4683895e 100644 --- a/allianceauth/services/modules/ips4/manager.py +++ b/allianceauth/services/modules/ips4/manager.py @@ -14,7 +14,7 @@ TABLE_PREFIX = getattr(settings, 'IPS4_TABLE_PREFIX', '') class Ips4Manager: SQL_ADD_USER = r"INSERT INTO %score_members (name, email, members_pass_hash, members_pass_salt, " \ - r"member_group_id) VALUES (%%s, %%s, %%s, %%s, %%s)" % TABLE_PREFIX + r"member_group_id) VALUES (%%s, %%s, %%s, %%s, %%s)" % TABLE_PREFIX SQL_GET_ID = r"SELECT member_id FROM %score_members WHERE name = %%s" % TABLE_PREFIX SQL_UPDATE_PASSWORD = r"UPDATE %score_members SET members_pass_hash = %%s, members_pass_salt = %%s WHERE name = %%s" % TABLE_PREFIX SQL_DEL_USER = r"DELETE FROM %score_members WHERE member_id = %%s" % TABLE_PREFIX diff --git a/allianceauth/services/modules/ips4/migrations/0001_initial.py b/allianceauth/services/modules/ips4/migrations/0001_initial.py index 1d3826f8..51485a67 100644 --- a/allianceauth/services/modules/ips4/migrations/0001_initial.py +++ b/allianceauth/services/modules/ips4/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:27 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/ips4/migrations/0002_service_permissions.py b/allianceauth/services/modules/ips4/migrations/0002_service_permissions.py index 760f769b..558a48a7 100644 --- a/allianceauth/services/modules/ips4/migrations/0002_service_permissions.py +++ b/allianceauth/services/modules/ips4/migrations/0002_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals @@ -17,7 +16,7 @@ def migrate_service_enabled(apps, schema_editor): app_config.models_module = True create_permissions(app_config, apps=apps, verbosity=0) app_config.models_module = None - + Group = apps.get_model("auth", "Group") Permission = apps.get_model("auth", "Permission") Ips4User = apps.get_model("ips4", "Ips4User") diff --git a/allianceauth/services/modules/ips4/views.py b/allianceauth/services/modules/ips4/views.py index 2cd98294..05aff3b8 100644 --- a/allianceauth/services/modules/ips4/views.py +++ b/allianceauth/services/modules/ips4/views.py @@ -33,8 +33,7 @@ def activate_ips4(request): 'username': result[0], 'password': result[1], } - return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'IPSuite4'}) + return render(request, 'services/service_credentials.html', context={'credentials': credentials, 'service': 'IPSuite4'}) else: logger.error("Unsuccessful attempt to activate IPS4 for user %s" % request.user) messages.error(request, _('An error occurred while processing your IPSuite4 account.')) @@ -55,8 +54,7 @@ def reset_ips4_password(request): 'username': request.user.ips4.username, 'password': result, } - return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'IPSuite4'}) + return render(request, 'services/service_credentials.html', context={'credentials': credentials, 'service': 'IPSuite4'}) logger.error("Unsuccessful attempt to reset IPS4 password for user %s" % request.user) messages.error(request, _('An error occurred while processing your IPSuite4 account.')) @@ -102,4 +100,3 @@ def deactivate_ips4(request): logger.error("Unsuccessful attempt to deactivate IPS4 for user %s" % request.user) messages.error(request, _('An error occurred while processing your IPSuite4 account.')) return redirect("services:services") - diff --git a/allianceauth/services/modules/mumble/admin.py b/allianceauth/services/modules/mumble/admin.py index 153772ae..ecc8328d 100644 --- a/allianceauth/services/modules/mumble/admin.py +++ b/allianceauth/services/modules/mumble/admin.py @@ -5,12 +5,12 @@ from ...admin import ServicesUserAdmin @admin.register(MumbleUser) -class MumbleUserAdmin(ServicesUserAdmin): - list_display = ServicesUserAdmin.list_display + ( - 'username', +class MumbleUserAdmin(ServicesUserAdmin): + list_display = ServicesUserAdmin.list_display + ( + 'username', 'groups', - ) - search_fields = ServicesUserAdmin.search_fields + ( + ) + search_fields = ServicesUserAdmin.search_fields + ( 'username', 'groups' ) diff --git a/allianceauth/services/modules/mumble/auth_hooks.py b/allianceauth/services/modules/mumble/auth_hooks.py index 95bcf10f..71f71e21 100644 --- a/allianceauth/services/modules/mumble/auth_hooks.py +++ b/allianceauth/services/modules/mumble/auth_hooks.py @@ -44,7 +44,7 @@ class MumbleService(ServicesHook): logger.debug("Updating %s nickname for %s" % (self.name, user)) if MumbleTasks.has_account(user): MumbleTasks.update_display_name.apply_async(args=[user.pk], countdown=5) # cooldown on this task to ensure DB clean when syncing - + def validate_user(self, user): if MumbleTasks.has_account(user) and not self.service_active_for_user(user): self.delete_user(user, notify_user=True) diff --git a/allianceauth/services/modules/mumble/migrations/0001_initial.py b/allianceauth/services/modules/mumble/migrations/0001_initial.py index a2cdb69c..1345f9a3 100644 --- a/allianceauth/services/modules/mumble/migrations/0001_initial.py +++ b/allianceauth/services/modules/mumble/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 00:58 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/mumble/migrations/0002_auto_20161212_0100.py b/allianceauth/services/modules/mumble/migrations/0002_auto_20161212_0100.py index 784d4276..cff8821b 100644 --- a/allianceauth/services/modules/mumble/migrations/0002_auto_20161212_0100.py +++ b/allianceauth/services/modules/mumble/migrations/0002_auto_20161212_0100.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 01:00 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/mumble/migrations/0003_mumbleuser_user.py b/allianceauth/services/modules/mumble/migrations/0003_mumbleuser_user.py index 7d8b63c1..e8857aca 100644 --- a/allianceauth/services/modules/mumble/migrations/0003_mumbleuser_user.py +++ b/allianceauth/services/modules/mumble/migrations/0003_mumbleuser_user.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:31 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/mumble/migrations/0004_auto_20161214_1024.py b/allianceauth/services/modules/mumble/migrations/0004_auto_20161214_1024.py index 35daf08d..2491311d 100644 --- a/allianceauth/services/modules/mumble/migrations/0004_auto_20161214_1024.py +++ b/allianceauth/services/modules/mumble/migrations/0004_auto_20161214_1024.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.4 on 2016-12-14 10:24 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/mumble/migrations/0005_mumbleuser_hashfn.py b/allianceauth/services/modules/mumble/migrations/0005_mumbleuser_hashfn.py index cbf6e02c..a0244978 100644 --- a/allianceauth/services/modules/mumble/migrations/0005_mumbleuser_hashfn.py +++ b/allianceauth/services/modules/mumble/migrations/0005_mumbleuser_hashfn.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.4 on 2017-01-23 10:28 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/mumble/migrations/0006_service_permissions.py b/allianceauth/services/modules/mumble/migrations/0006_service_permissions.py index 8b12618c..d3f4897f 100644 --- a/allianceauth/services/modules/mumble/migrations/0006_service_permissions.py +++ b/allianceauth/services/modules/mumble/migrations/0006_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/mumble/migrations/0007_not_null_user.py b/allianceauth/services/modules/mumble/migrations/0007_not_null_user.py index 46424901..1a19da28 100644 --- a/allianceauth/services/modules/mumble/migrations/0007_not_null_user.py +++ b/allianceauth/services/modules/mumble/migrations/0007_not_null_user.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.6 on 2017-10-09 09:19 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/mumble/models.py b/allianceauth/services/modules/mumble/models.py index c429f8da..f335064a 100644 --- a/allianceauth/services/modules/mumble/models.py +++ b/allianceauth/services/modules/mumble/models.py @@ -18,11 +18,11 @@ class MumbleManager(models.Manager): def get_display_name(user): from .auth_hooks import MumbleService return NameFormatter(MumbleService(), user).format_name() - + @staticmethod def get_username(user): return user.profile.main_character.character_name # main character as the user.username may be incorect - + @staticmethod def sanitise_username(username): return username.replace(" ", "_") diff --git a/allianceauth/services/modules/mumble/tasks.py b/allianceauth/services/modules/mumble/tasks.py index e318fb06..02406d75 100644 --- a/allianceauth/services/modules/mumble/tasks.py +++ b/allianceauth/services/modules/mumble/tasks.py @@ -78,4 +78,3 @@ class MumbleTasks: logger.debug("Updating ALL mumble display names") for mumble_user in MumbleUser.objects.exclude(username__exact=''): MumbleTasks.update_display_name.delay(mumble_user.user.pk) - diff --git a/allianceauth/services/modules/mumble/tests.py b/allianceauth/services/modules/mumble/tests.py index c7099111..8f0f74a2 100644 --- a/allianceauth/services/modules/mumble/tests.py +++ b/allianceauth/services/modules/mumble/tests.py @@ -25,8 +25,7 @@ class MumbleHooksTestCase(TestCase): def setUp(self): self.member = 'member_user' member = AuthUtils.create_member(self.member) - AuthUtils.add_main_character(member, 'auth_member', '12345', corp_id='111', corp_name='Test Corporation', - corp_ticker='TESTR') + AuthUtils.add_main_character(member, 'auth_member', '12345', corp_id='111', corp_name='Test Corporation', corp_ticker='TESTR') member = User.objects.get(pk=member.pk) MumbleUser.objects.create(user=member) self.none_user = 'none_user' @@ -123,8 +122,7 @@ class MumbleViewsTestCase(TestCase): self.member = AuthUtils.create_member('auth_member') self.member.email = 'auth_member@example.com' self.member.save() - AuthUtils.add_main_character(self.member, 'auth_member', '12345', corp_id='111', corp_name='Test Corporation', - corp_ticker='TESTR') + AuthUtils.add_main_character(self.member, 'auth_member', '12345', corp_id='111', corp_name='Test Corporation', corp_ticker='TESTR') self.member = User.objects.get(pk=self.member.pk) add_permissions() diff --git a/allianceauth/services/modules/openfire/admin.py b/allianceauth/services/modules/openfire/admin.py index c0a1a9c7..6485c6b8 100644 --- a/allianceauth/services/modules/openfire/admin.py +++ b/allianceauth/services/modules/openfire/admin.py @@ -6,6 +6,5 @@ from ...admin import ServicesUserAdmin @admin.register(OpenfireUser) class OpenfireUserAdmin(ServicesUserAdmin): - list_display = ServicesUserAdmin.list_display + ('username',) + list_display = ServicesUserAdmin.list_display + ('username',) search_fields = ServicesUserAdmin.search_fields + ('username', ) - diff --git a/allianceauth/services/modules/openfire/auth_hooks.py b/allianceauth/services/modules/openfire/auth_hooks.py index 0fb1ed12..c3520a35 100644 --- a/allianceauth/services/modules/openfire/auth_hooks.py +++ b/allianceauth/services/modules/openfire/auth_hooks.py @@ -74,10 +74,12 @@ def register_service(): class JabberBroadcast(MenuItemHook): def __init__(self): - MenuItemHook.__init__(self, - _('Jabber Broadcast'), - 'fas fa-bullhorn fa-fw', - 'openfire:broadcast') + MenuItemHook.__init__( + self, + _('Jabber Broadcast'), + 'fas fa-bullhorn fa-fw', + 'openfire:broadcast' + ) def render(self, request): if request.user.has_perm('auth.jabber_broadcast') or request.user.has_perm('auth.jabber_broadcast_all'): @@ -87,10 +89,12 @@ class JabberBroadcast(MenuItemHook): class FleetBroadcastFormatter(MenuItemHook): def __init__(self): - MenuItemHook.__init__(self, - _('Fleet Broadcast Formatter'), - 'fas fa-space-shuttle fa-fw', - 'services:fleet_format_tool') + MenuItemHook.__init__( + self, + _('Fleet Broadcast Formatter'), + 'fas fa-space-shuttle fa-fw', + 'services:fleet_format_tool' + ) def render(self, request): if request.user.has_perm('auth.jabber_broadcast') or request.user.has_perm('auth.jabber_broadcast_all'): diff --git a/allianceauth/services/modules/openfire/manager.py b/allianceauth/services/modules/openfire/manager.py index 465bc4e6..f1caa1fe 100755 --- a/allianceauth/services/modules/openfire/manager.py +++ b/allianceauth/services/modules/openfire/manager.py @@ -208,8 +208,8 @@ class PingBot(sleekxmpp.ClientXMPP): self.get_roster() self.send_message(mto=self.recipient, - mbody=self.msg, - mtype='chat') + mbody=self.msg, + mtype='chat') self.message_sent = True # Using wait=True ensures that the send queue will be # emptied before ending the session. diff --git a/allianceauth/services/modules/openfire/migrations/0001_initial.py b/allianceauth/services/modules/openfire/migrations/0001_initial.py index d6f89303..d2d1d362 100644 --- a/allianceauth/services/modules/openfire/migrations/0001_initial.py +++ b/allianceauth/services/modules/openfire/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:27 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/openfire/migrations/0002_service_permissions.py b/allianceauth/services/modules/openfire/migrations/0002_service_permissions.py index dc93bf60..3d55065c 100644 --- a/allianceauth/services/modules/openfire/migrations/0002_service_permissions.py +++ b/allianceauth/services/modules/openfire/migrations/0002_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals @@ -17,7 +16,7 @@ def migrate_service_enabled(apps, schema_editor): app_config.models_module = True create_permissions(app_config, apps=apps, verbosity=0) app_config.models_module = None - + Group = apps.get_model("auth", "Group") Permission = apps.get_model("auth", "Permission") OpenfireUser = apps.get_model("openfire", "OpenfireUser") diff --git a/allianceauth/services/modules/openfire/templates/services/openfire/broadcast.html b/allianceauth/services/modules/openfire/templates/services/openfire/broadcast.html index 411dd65d..3e87fe20 100755 --- a/allianceauth/services/modules/openfire/templates/services/openfire/broadcast.html +++ b/allianceauth/services/modules/openfire/templates/services/openfire/broadcast.html @@ -16,8 +16,7 @@ {% if success %} {% endif %} - + {% csrf_token %} {{ form|bootstrap }}
    diff --git a/allianceauth/services/modules/openfire/views.py b/allianceauth/services/modules/openfire/views.py index 2af2d4be..d1a7232d 100644 --- a/allianceauth/services/modules/openfire/views.py +++ b/allianceauth/services/modules/openfire/views.py @@ -37,8 +37,7 @@ def activate_jabber(request): 'username': info[0], 'password': info[1], } - return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'Jabber'}) + return render(request, 'services/service_credentials.html', context={'credentials': credentials, 'service': 'Jabber'}) else: logger.error("Unsuccessful attempt to activate jabber for user %s" % request.user) messages.error(request, _('An error occurred while processing your jabber account.')) @@ -72,8 +71,7 @@ def reset_jabber_password(request): 'username': request.user.openfire.username, 'password': result, } - return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'Jabber'}) + return render(request, 'services/service_credentials.html', context={'credentials': credentials, 'service': 'Jabber'}) logger.error("Unsuccessful attempt to reset jabber for user %s" % request.user) messages.error(request, _('An error occurred while processing your jabber account.')) return redirect("services:services") @@ -100,18 +98,16 @@ def jabber_broadcast_view(request): logger.debug("Processing jabber broadcast for user %s with main character %s" % (request.user, main_char)) try: if main_char is not None: - message_to_send = form.cleaned_data[ - 'message'] + "\n##### SENT BY: " + "[" + main_char.corporation_ticker + "]" + \ - main_char.character_name + " TO: " + \ - form.cleaned_data['group'] + " WHEN: " + datetime.datetime.utcnow().strftime( - "%Y-%m-%d %H:%M:%S") + " #####\n##### Replies are NOT monitored #####\n" + message_to_send = form.cleaned_data['message'] + "\n##### SENT BY: " + "[" + main_char.corporation_ticker + "]" + \ + main_char.character_name + " TO: " + \ + form.cleaned_data['group'] + " WHEN: " + datetime.datetime.utcnow().strftime( + "%Y-%m-%d %H:%M:%S") + " #####\n##### Replies are NOT monitored #####\n" group_to_send = form.cleaned_data['group'] else: - message_to_send = form.cleaned_data[ - 'message'] + "\n##### SENT BY: " + "No character but can send pings?" + " TO: " + \ - form.cleaned_data['group'] + " WHEN: " + datetime.datetime.utcnow().strftime( - "%Y-%m-%d %H:%M:%S") + " #####\n##### Replies are NOT monitored #####\n" + message_to_send = form.cleaned_data['message'] + "\n##### SENT BY: " + "No character but can send pings?" + " TO: " + \ + form.cleaned_data['group'] + " WHEN: " + datetime.datetime.utcnow().strftime( + "%Y-%m-%d %H:%M:%S") + " #####\n##### Replies are NOT monitored #####\n" group_to_send = form.cleaned_data['group'] OpenfireManager.send_broadcast_message(group_to_send, message_to_send) diff --git a/allianceauth/services/modules/phpbb3/admin.py b/allianceauth/services/modules/phpbb3/admin.py index 70e7f831..0e97132d 100644 --- a/allianceauth/services/modules/phpbb3/admin.py +++ b/allianceauth/services/modules/phpbb3/admin.py @@ -5,5 +5,5 @@ from ...admin import ServicesUserAdmin @admin.register(Phpbb3User) class Phpbb3UserAdmin(ServicesUserAdmin): - list_display = ServicesUserAdmin.list_display + ('username',) - search_fields = ServicesUserAdmin.search_fields + ('username', ) \ No newline at end of file + list_display = ServicesUserAdmin.list_display + ('username',) + search_fields = ServicesUserAdmin.search_fields + ('username', ) diff --git a/allianceauth/services/modules/phpbb3/manager.py b/allianceauth/services/modules/phpbb3/manager.py index 5d6b2bed..895f33f9 100755 --- a/allianceauth/services/modules/phpbb3/manager.py +++ b/allianceauth/services/modules/phpbb3/manager.py @@ -19,9 +19,9 @@ TABLE_PREFIX = getattr(settings, 'PHPBB3_TABLE_PREFIX', 'phpbb_') class Phpbb3Manager: - SQL_ADD_USER = r"INSERT INTO %susers (username, username_clean, " \ - r"user_password, user_email, group_id, user_regdate, user_permissions, " \ - r"user_sig, user_lang) VALUES (%%s, %%s, %%s, %%s, %%s, %%s, %%s, %%s, 'en')" % TABLE_PREFIX + SQL_ADD_USER = r"INSERT INTO %susers (username, username_clean, " \ + r"user_password, user_email, group_id, user_regdate, user_permissions, " \ + r"user_sig, user_lang) VALUES (%%s, %%s, %%s, %%s, %%s, %%s, %%s, %%s, 'en')" % TABLE_PREFIX SQL_DEL_USER = r"DELETE FROM %susers where username = %%s" % TABLE_PREFIX @@ -42,10 +42,10 @@ class Phpbb3Manager: SQL_GET_ALL_GROUPS = r"SELECT group_id, group_name FROM %sgroups" % TABLE_PREFIX SQL_GET_USER_GROUPS = r"SELECT %(prefix)sgroups.group_name FROM %(prefix)sgroups , %(prefix)suser_group WHERE " \ - r"%(prefix)suser_group.group_id = %(prefix)sgroups.group_id AND user_id=%%s" % {'prefix': TABLE_PREFIX} + r"%(prefix)suser_group.group_id = %(prefix)sgroups.group_id AND user_id=%%s" % {'prefix': TABLE_PREFIX} SQL_ADD_USER_AVATAR = r"UPDATE %susers SET user_avatar_type=2, user_avatar_width=64, user_avatar_height=64, " \ - "user_avatar=%%s WHERE user_id = %%s" % TABLE_PREFIX + "user_avatar=%%s WHERE user_id = %%s" % TABLE_PREFIX SQL_CLEAR_USER_PERMISSIONS = r"UPDATE %susers SET user_permissions = '' WHERE user_id = %%s" % TABLE_PREFIX diff --git a/allianceauth/services/modules/phpbb3/migrations/0001_initial.py b/allianceauth/services/modules/phpbb3/migrations/0001_initial.py index 50da2682..db3ec534 100644 --- a/allianceauth/services/modules/phpbb3/migrations/0001_initial.py +++ b/allianceauth/services/modules/phpbb3/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:28 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/phpbb3/migrations/0002_service_permissions.py b/allianceauth/services/modules/phpbb3/migrations/0002_service_permissions.py index c21af40f..656210c3 100644 --- a/allianceauth/services/modules/phpbb3/migrations/0002_service_permissions.py +++ b/allianceauth/services/modules/phpbb3/migrations/0002_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/phpbb3/views.py b/allianceauth/services/modules/phpbb3/views.py index fca0c531..d5a19bd8 100644 --- a/allianceauth/services/modules/phpbb3/views.py +++ b/allianceauth/services/modules/phpbb3/views.py @@ -36,8 +36,7 @@ def activate_forum(request): 'username': result[0], 'password': result[1], } - return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'Forum'}) + return render(request, 'services/service_credentials.html', context={'credentials': credentials, 'service': 'Forum'}) else: logger.error("Unsuccessful attempt to activate forum for user %s" % request.user) messages.error(request, _('An error occurred while processing your forum account.')) @@ -73,8 +72,7 @@ def reset_forum_password(request): 'username': request.user.phpbb3.username, 'password': result, } - return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'Forum'}) + return render(request, 'services/service_credentials.html', context={'credentials': credentials, 'service': 'Forum'}) logger.error("Unsuccessful attempt to reset forum password for user %s" % request.user) messages.error(request, _('An error occurred while processing your forum account.')) diff --git a/allianceauth/services/modules/smf/admin.py b/allianceauth/services/modules/smf/admin.py index 99c7f228..db2dcae2 100644 --- a/allianceauth/services/modules/smf/admin.py +++ b/allianceauth/services/modules/smf/admin.py @@ -6,5 +6,5 @@ from ...admin import ServicesUserAdmin @admin.register(SmfUser) class SmfUserAdmin(ServicesUserAdmin): - list_display = ServicesUserAdmin.list_display + ('username',) - search_fields = ServicesUserAdmin.search_fields + ('username', ) \ No newline at end of file + list_display = ServicesUserAdmin.list_display + ('username',) + search_fields = ServicesUserAdmin.search_fields + ('username', ) diff --git a/allianceauth/services/modules/smf/manager.py b/allianceauth/services/modules/smf/manager.py index 72d872b9..1a7d8893 100644 --- a/allianceauth/services/modules/smf/manager.py +++ b/allianceauth/services/modules/smf/manager.py @@ -1,270 +1,270 @@ -import random -import string -import calendar -from datetime import datetime -import hashlib -import logging -import re - -from django.db import connections -from django.conf import settings -from allianceauth.eveonline.models import EveCharacter - -logger = logging.getLogger(__name__) - - -TABLE_PREFIX = getattr(settings, 'SMF_TABLE_PREFIX', 'smf_') - - -class SmfManager: - def __init__(self): - pass - - SQL_ADD_USER = r"INSERT INTO %smembers (member_name, passwd, email_address, date_registered, real_name," \ - r" buddy_list, message_labels, openid_uri, signature, ignore_boards) " \ - r"VALUES (%%s, %%s, %%s, %%s, %%s, 0, 0, 0, 0, 0)" % TABLE_PREFIX - - SQL_DEL_USER = r"DELETE FROM %smembers where member_name = %%s" % TABLE_PREFIX - - SQL_DIS_USER = r"UPDATE %smembers SET email_address = %%s, passwd = %%s WHERE member_name = %%s" % TABLE_PREFIX - - SQL_USER_ID_FROM_USERNAME = r"SELECT id_member from %smembers WHERE member_name = %%s" % TABLE_PREFIX - - SQL_ADD_USER_GROUP = r"UPDATE %smembers SET additional_groups = %%s WHERE id_member = %%s" % TABLE_PREFIX - - SQL_GET_GROUP_ID = r"SELECT id_group from %smembergroups WHERE group_name = %%s" % TABLE_PREFIX - - SQL_ADD_GROUP = r"INSERT INTO %smembergroups (group_name,description) VALUES (%%s,%%s)" % TABLE_PREFIX - - SQL_UPDATE_USER_PASSWORD = r"UPDATE %smembers SET passwd = %%s WHERE member_name = %%s" % TABLE_PREFIX - - SQL_REMOVE_USER_GROUP = r"UPDATE %smembers SET additional_groups = %%s WHERE id_member = %%s" % TABLE_PREFIX - - SQL_GET_ALL_GROUPS = r"SELECT id_group, group_name FROM %smembergroups" % TABLE_PREFIX - - SQL_GET_USER_GROUPS = r"SELECT additional_groups FROM %smembers WHERE id_member = %%s" % TABLE_PREFIX - - SQL_ADD_USER_AVATAR = r"UPDATE %smembers SET avatar = %%s WHERE id_member = %%s" % TABLE_PREFIX - - @staticmethod - def _sanitize_groupname(name): - name = name.strip(' _') - return re.sub('[^\w.-]', '', name) - - @staticmethod - def generate_random_pass(): - return ''.join([random.choice(string.ascii_letters + string.digits) for n in range(16)]) - - @staticmethod - def gen_hash(username_clean, passwd): - return hashlib.sha1((username_clean + passwd).encode('utf-8')).hexdigest() - - @staticmethod - def santatize_username(username): - sanatized = username.replace(" ", "_") - sanatized = sanatized.replace("'", "_") - return sanatized.lower() - - @staticmethod - def get_current_utc_date(): - d = datetime.utcnow() - unixtime = calendar.timegm(d.utctimetuple()) - return unixtime - - @classmethod - def create_group(cls, groupname): - logger.debug("Creating smf group %s" % groupname) - cursor = connections['smf'].cursor() - cursor.execute(cls.SQL_ADD_GROUP, [groupname, groupname]) - logger.info("Created smf group %s" % groupname) - return cls.get_group_id(groupname) - - @classmethod - def get_group_id(cls, groupname): - logger.debug("Getting smf group id for groupname %s" % groupname) - cursor = connections['smf'].cursor() - cursor.execute(cls.SQL_GET_GROUP_ID, [groupname]) - row = cursor.fetchone() - logger.debug("Got smf group id %s for groupname %s" % (row[0], groupname)) - return row[0] - - @classmethod - def check_user(cls, username): - logger.debug("Checking smf username %s" % username) - cursor = connections['smf'].cursor() - cursor.execute(cls.SQL_USER_ID_FROM_USERNAME, [cls.santatize_username(username)]) - row = cursor.fetchone() - if row: - logger.debug("Found user %s on smf" % username) - return True - logger.debug("User %s not found on smf" % username) - return False - - @classmethod - def add_avatar(cls, member_name, characterid): - logger.debug("Adding EVE character id %s portrait as smf avatar for user %s" % (characterid, member_name)) - avatar_url = EveCharacter.generic_portrait_url(characterid, 64) - cursor = connections['smf'].cursor() - id_member = cls.get_user_id(member_name) - cursor.execute(cls.SQL_ADD_USER_AVATAR, [avatar_url, id_member]) - - @classmethod - def get_user_id(cls, username): - logger.debug("Getting smf user id for username %s" % username) - cursor = connections['smf'].cursor() - cursor.execute(cls.SQL_USER_ID_FROM_USERNAME, [username]) - row = cursor.fetchone() - if row is not None: - logger.debug("Got smf user id %s for username %s" % (row[0], username)) - return row[0] - else: - logger.error("username %s not found on smf. Unable to determine user id ." % username) - return None - - @classmethod - def get_all_groups(cls): - logger.debug("Getting all smf groups.") - cursor = connections['smf'].cursor() - cursor.execute(cls.SQL_GET_ALL_GROUPS) - rows = cursor.fetchall() - out = {} - for row in rows: - out[row[1]] = row[0] - logger.debug("Got smf groups %s" % out) - return out - - @classmethod - def get_user_groups(cls, userid): - logger.debug("Getting smf user id %s groups" % userid) - cursor = connections['smf'].cursor() - cursor.execute(cls.SQL_GET_USER_GROUPS, [userid]) - out = [row[0] for row in cursor.fetchall()] - logger.debug("Got user %s smf groups %s" % (userid, out)) - return out - - @classmethod - def add_user(cls, username, email_address, groups, characterid): - logger.debug("Adding smf user with member_name %s, email_address %s, characterid %s" % ( - username, email_address, characterid)) - cursor = connections['smf'].cursor() - username_clean = cls.santatize_username(username) - passwd = cls.generate_random_pass() - pwhash = cls.gen_hash(username_clean, passwd) - logger.debug("Proceeding to add smf user %s and pwhash starting with %s" % (username, pwhash[0:5])) - register_date = cls.get_current_utc_date() - # check if the username was simply revoked - if cls.check_user(username) is True: - logger.warn("Unable to add smf user with username %s - already exists. Updating user instead." % username) - cls.__update_user_info(username_clean, email_address, pwhash) - else: - try: - cursor.execute(cls.SQL_ADD_USER, - [username_clean, passwd, email_address, register_date, username_clean]) - cls.add_avatar(username_clean, characterid) - logger.info("Added smf member_name %s" % username_clean) - cls.update_groups(username_clean, groups) - except: - logger.warn("Unable to add smf user %s" % username_clean) - pass - return username_clean, passwd - - @classmethod - def __update_user_info(cls, username, email_address, passwd): - logger.debug( - "Updating smf user %s info: username %s password of length %s" % (username, email_address, len(passwd))) - cursor = connections['smf'].cursor() - try: - cursor.execute(cls.SQL_DIS_USER, [email_address, passwd, username]) - logger.info("Updated smf user %s info" % username) - except: - logger.exception("Unable to update smf user %s info." % username) - pass - - @classmethod - def delete_user(cls, username): - logger.debug("Deleting smf user %s" % username) - cursor = connections['smf'].cursor() - - if cls.check_user(username): - cursor.execute(cls.SQL_DEL_USER, [username]) - logger.info("Deleted smf user %s" % username) - return True - logger.error("Unable to delete smf user %s - user not found on smf." % username) - return False - - @classmethod - def update_groups(cls, username, groups): - userid = cls.get_user_id(username) - logger.debug("Updating smf user %s with id %s groups %s" % (username, userid, groups)) - if userid is not None: - forum_groups = cls.get_all_groups() - user_groups = set(cls.get_user_groups(userid)) - act_groups = set([cls._sanitize_groupname(g) for g in groups]) - addgroups = act_groups - user_groups - remgroups = user_groups - act_groups - logger.info("Updating smf user %s groups - adding %s, removing %s" % (username, addgroups, remgroups)) - act_group_id = set() - for g in addgroups: - if g not in forum_groups: - forum_groups[g] = cls.create_group(g) - act_group_id.add(str(cls.get_group_id(g))) - string_groups = ','.join(act_group_id) - cls.add_user_to_group(userid, string_groups) - - @classmethod - def add_user_to_group(cls, userid, groupid): - logger.debug("Adding smf user id %s to group id %s" % (userid, groupid)) - try: - cursor = connections['smf'].cursor() - cursor.execute(cls.SQL_ADD_USER_GROUP, [groupid, userid]) - logger.info("Added smf user id %s to group id %s" % (userid, groupid)) - except: - logger.exception("Unable to add smf user id %s to group id %s" % (userid, groupid)) - pass - - @classmethod - def remove_user_from_group(cls, userid, groupid): - logger.debug("Removing smf user id %s from group id %s" % (userid, groupid)) - try: - cursor = connections['smf'].cursor() - cursor.execute(cls.SQL_REMOVE_USER_GROUP, [groupid, userid]) - logger.info("Removed smf user id %s from group id %s" % (userid, groupid)) - except: - logger.exception("Unable to remove smf user id %s from group id %s" % (userid, groupid)) - pass - - @classmethod - def disable_user(cls, username): - logger.debug("Disabling smf user %s" % username) - cursor = connections['smf'].cursor() - - password = cls.generate_random_pass() - revoke_email = "revoked@localhost" - try: - pwhash = cls.gen_hash(username, password) - cursor.execute(cls.SQL_DIS_USER, [revoke_email, pwhash, username]) - cls.get_user_id(username) - cls.update_groups(username, []) - logger.info("Disabled smf user %s" % username) - return True - except TypeError: - logger.exception("TypeError occured while disabling user %s - failed to disable." % username) - return False - - @classmethod - def update_user_password(cls, username, characterid, password=None): - logger.debug("Updating smf user %s password" % username) - cursor = connections['smf'].cursor() - if not password: - password = cls.generate_random_pass() - if cls.check_user(username): - username_clean = cls.santatize_username(username) - pwhash = cls.gen_hash(username_clean, password) - logger.debug( - "Proceeding to update smf user %s password with pwhash starting with %s" % (username, pwhash[0:5])) - cursor.execute(cls.SQL_UPDATE_USER_PASSWORD, [pwhash, username]) - cls.add_avatar(username, characterid) - logger.info("Updated smf user %s password." % username) - return password - logger.error("Unable to update smf user %s password - user not found on smf." % username) - return "" +import random +import string +import calendar +from datetime import datetime +import hashlib +import logging +import re + +from django.db import connections +from django.conf import settings +from allianceauth.eveonline.models import EveCharacter + +logger = logging.getLogger(__name__) + + +TABLE_PREFIX = getattr(settings, 'SMF_TABLE_PREFIX', 'smf_') + + +class SmfManager: + def __init__(self): + pass + + SQL_ADD_USER = r"INSERT INTO %smembers (member_name, passwd, email_address, date_registered, real_name," \ + r" buddy_list, message_labels, openid_uri, signature, ignore_boards) " \ + r"VALUES (%%s, %%s, %%s, %%s, %%s, 0, 0, 0, 0, 0)" % TABLE_PREFIX + + SQL_DEL_USER = r"DELETE FROM %smembers where member_name = %%s" % TABLE_PREFIX + + SQL_DIS_USER = r"UPDATE %smembers SET email_address = %%s, passwd = %%s WHERE member_name = %%s" % TABLE_PREFIX + + SQL_USER_ID_FROM_USERNAME = r"SELECT id_member from %smembers WHERE member_name = %%s" % TABLE_PREFIX + + SQL_ADD_USER_GROUP = r"UPDATE %smembers SET additional_groups = %%s WHERE id_member = %%s" % TABLE_PREFIX + + SQL_GET_GROUP_ID = r"SELECT id_group from %smembergroups WHERE group_name = %%s" % TABLE_PREFIX + + SQL_ADD_GROUP = r"INSERT INTO %smembergroups (group_name,description) VALUES (%%s,%%s)" % TABLE_PREFIX + + SQL_UPDATE_USER_PASSWORD = r"UPDATE %smembers SET passwd = %%s WHERE member_name = %%s" % TABLE_PREFIX + + SQL_REMOVE_USER_GROUP = r"UPDATE %smembers SET additional_groups = %%s WHERE id_member = %%s" % TABLE_PREFIX + + SQL_GET_ALL_GROUPS = r"SELECT id_group, group_name FROM %smembergroups" % TABLE_PREFIX + + SQL_GET_USER_GROUPS = r"SELECT additional_groups FROM %smembers WHERE id_member = %%s" % TABLE_PREFIX + + SQL_ADD_USER_AVATAR = r"UPDATE %smembers SET avatar = %%s WHERE id_member = %%s" % TABLE_PREFIX + + @staticmethod + def _sanitize_groupname(name): + name = name.strip(' _') + return re.sub('[^\w.-]', '', name) + + @staticmethod + def generate_random_pass(): + return ''.join([random.choice(string.ascii_letters + string.digits) for n in range(16)]) + + @staticmethod + def gen_hash(username_clean, passwd): + return hashlib.sha1((username_clean + passwd).encode('utf-8')).hexdigest() + + @staticmethod + def santatize_username(username): + sanatized = username.replace(" ", "_") + sanatized = sanatized.replace("'", "_") + return sanatized.lower() + + @staticmethod + def get_current_utc_date(): + d = datetime.utcnow() + unixtime = calendar.timegm(d.utctimetuple()) + return unixtime + + @classmethod + def create_group(cls, groupname): + logger.debug("Creating smf group %s" % groupname) + cursor = connections['smf'].cursor() + cursor.execute(cls.SQL_ADD_GROUP, [groupname, groupname]) + logger.info("Created smf group %s" % groupname) + return cls.get_group_id(groupname) + + @classmethod + def get_group_id(cls, groupname): + logger.debug("Getting smf group id for groupname %s" % groupname) + cursor = connections['smf'].cursor() + cursor.execute(cls.SQL_GET_GROUP_ID, [groupname]) + row = cursor.fetchone() + logger.debug("Got smf group id %s for groupname %s" % (row[0], groupname)) + return row[0] + + @classmethod + def check_user(cls, username): + logger.debug("Checking smf username %s" % username) + cursor = connections['smf'].cursor() + cursor.execute(cls.SQL_USER_ID_FROM_USERNAME, [cls.santatize_username(username)]) + row = cursor.fetchone() + if row: + logger.debug("Found user %s on smf" % username) + return True + logger.debug("User %s not found on smf" % username) + return False + + @classmethod + def add_avatar(cls, member_name, characterid): + logger.debug("Adding EVE character id %s portrait as smf avatar for user %s" % (characterid, member_name)) + avatar_url = EveCharacter.generic_portrait_url(characterid, 64) + cursor = connections['smf'].cursor() + id_member = cls.get_user_id(member_name) + cursor.execute(cls.SQL_ADD_USER_AVATAR, [avatar_url, id_member]) + + @classmethod + def get_user_id(cls, username): + logger.debug("Getting smf user id for username %s" % username) + cursor = connections['smf'].cursor() + cursor.execute(cls.SQL_USER_ID_FROM_USERNAME, [username]) + row = cursor.fetchone() + if row is not None: + logger.debug("Got smf user id %s for username %s" % (row[0], username)) + return row[0] + else: + logger.error("username %s not found on smf. Unable to determine user id ." % username) + return None + + @classmethod + def get_all_groups(cls): + logger.debug("Getting all smf groups.") + cursor = connections['smf'].cursor() + cursor.execute(cls.SQL_GET_ALL_GROUPS) + rows = cursor.fetchall() + out = {} + for row in rows: + out[row[1]] = row[0] + logger.debug("Got smf groups %s" % out) + return out + + @classmethod + def get_user_groups(cls, userid): + logger.debug("Getting smf user id %s groups" % userid) + cursor = connections['smf'].cursor() + cursor.execute(cls.SQL_GET_USER_GROUPS, [userid]) + out = [row[0] for row in cursor.fetchall()] + logger.debug("Got user %s smf groups %s" % (userid, out)) + return out + + @classmethod + def add_user(cls, username, email_address, groups, characterid): + logger.debug("Adding smf user with member_name %s, email_address %s, characterid %s" % ( + username, email_address, characterid)) + cursor = connections['smf'].cursor() + username_clean = cls.santatize_username(username) + passwd = cls.generate_random_pass() + pwhash = cls.gen_hash(username_clean, passwd) + logger.debug("Proceeding to add smf user %s and pwhash starting with %s" % (username, pwhash[0:5])) + register_date = cls.get_current_utc_date() + # check if the username was simply revoked + if cls.check_user(username) is True: + logger.warn("Unable to add smf user with username %s - already exists. Updating user instead." % username) + cls.__update_user_info(username_clean, email_address, pwhash) + else: + try: + cursor.execute(cls.SQL_ADD_USER, + [username_clean, passwd, email_address, register_date, username_clean]) + cls.add_avatar(username_clean, characterid) + logger.info("Added smf member_name %s" % username_clean) + cls.update_groups(username_clean, groups) + except: + logger.warn("Unable to add smf user %s" % username_clean) + pass + return username_clean, passwd + + @classmethod + def __update_user_info(cls, username, email_address, passwd): + logger.debug( + "Updating smf user %s info: username %s password of length %s" % (username, email_address, len(passwd))) + cursor = connections['smf'].cursor() + try: + cursor.execute(cls.SQL_DIS_USER, [email_address, passwd, username]) + logger.info("Updated smf user %s info" % username) + except: + logger.exception("Unable to update smf user %s info." % username) + pass + + @classmethod + def delete_user(cls, username): + logger.debug("Deleting smf user %s" % username) + cursor = connections['smf'].cursor() + + if cls.check_user(username): + cursor.execute(cls.SQL_DEL_USER, [username]) + logger.info("Deleted smf user %s" % username) + return True + logger.error("Unable to delete smf user %s - user not found on smf." % username) + return False + + @classmethod + def update_groups(cls, username, groups): + userid = cls.get_user_id(username) + logger.debug("Updating smf user %s with id %s groups %s" % (username, userid, groups)) + if userid is not None: + forum_groups = cls.get_all_groups() + user_groups = set(cls.get_user_groups(userid)) + act_groups = set([cls._sanitize_groupname(g) for g in groups]) + addgroups = act_groups - user_groups + remgroups = user_groups - act_groups + logger.info("Updating smf user %s groups - adding %s, removing %s" % (username, addgroups, remgroups)) + act_group_id = set() + for g in addgroups: + if g not in forum_groups: + forum_groups[g] = cls.create_group(g) + act_group_id.add(str(cls.get_group_id(g))) + string_groups = ','.join(act_group_id) + cls.add_user_to_group(userid, string_groups) + + @classmethod + def add_user_to_group(cls, userid, groupid): + logger.debug("Adding smf user id %s to group id %s" % (userid, groupid)) + try: + cursor = connections['smf'].cursor() + cursor.execute(cls.SQL_ADD_USER_GROUP, [groupid, userid]) + logger.info("Added smf user id %s to group id %s" % (userid, groupid)) + except: + logger.exception("Unable to add smf user id %s to group id %s" % (userid, groupid)) + pass + + @classmethod + def remove_user_from_group(cls, userid, groupid): + logger.debug("Removing smf user id %s from group id %s" % (userid, groupid)) + try: + cursor = connections['smf'].cursor() + cursor.execute(cls.SQL_REMOVE_USER_GROUP, [groupid, userid]) + logger.info("Removed smf user id %s from group id %s" % (userid, groupid)) + except: + logger.exception("Unable to remove smf user id %s from group id %s" % (userid, groupid)) + pass + + @classmethod + def disable_user(cls, username): + logger.debug("Disabling smf user %s" % username) + cursor = connections['smf'].cursor() + + password = cls.generate_random_pass() + revoke_email = "revoked@localhost" + try: + pwhash = cls.gen_hash(username, password) + cursor.execute(cls.SQL_DIS_USER, [revoke_email, pwhash, username]) + cls.get_user_id(username) + cls.update_groups(username, []) + logger.info("Disabled smf user %s" % username) + return True + except TypeError: + logger.exception("TypeError occured while disabling user %s - failed to disable." % username) + return False + + @classmethod + def update_user_password(cls, username, characterid, password=None): + logger.debug("Updating smf user %s password" % username) + cursor = connections['smf'].cursor() + if not password: + password = cls.generate_random_pass() + if cls.check_user(username): + username_clean = cls.santatize_username(username) + pwhash = cls.gen_hash(username_clean, password) + logger.debug( + "Proceeding to update smf user %s password with pwhash starting with %s" % (username, pwhash[0:5])) + cursor.execute(cls.SQL_UPDATE_USER_PASSWORD, [pwhash, username]) + cls.add_avatar(username, characterid) + logger.info("Updated smf user %s password." % username) + return password + logger.error("Unable to update smf user %s password - user not found on smf." % username) + return "" diff --git a/allianceauth/services/modules/smf/migrations/0001_initial.py b/allianceauth/services/modules/smf/migrations/0001_initial.py index 23d14ace..d8da235c 100644 --- a/allianceauth/services/modules/smf/migrations/0001_initial.py +++ b/allianceauth/services/modules/smf/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:28 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/smf/migrations/0002_service_permissions.py b/allianceauth/services/modules/smf/migrations/0002_service_permissions.py index 58f738bd..fdf93adb 100644 --- a/allianceauth/services/modules/smf/migrations/0002_service_permissions.py +++ b/allianceauth/services/modules/smf/migrations/0002_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals @@ -17,7 +16,7 @@ def migrate_service_enabled(apps, schema_editor): app_config.models_module = True create_permissions(app_config, apps=apps, verbosity=0) app_config.models_module = None - + Group = apps.get_model("auth", "Group") Permission = apps.get_model("auth", "Permission") SmfUser = apps.get_model("smf", "SmfUser") diff --git a/allianceauth/services/modules/smf/views.py b/allianceauth/services/modules/smf/views.py index ebc759f7..b8dbe688 100644 --- a/allianceauth/services/modules/smf/views.py +++ b/allianceauth/services/modules/smf/views.py @@ -23,8 +23,7 @@ def activate_smf(request): # Valid now we get the main characters character = request.user.profile.main_character logger.debug("Adding smf user for user %s with main character %s" % (request.user, character)) - result = SmfManager.add_user(SmfTasks.get_username(request.user), request.user.email, ['Member'], - character.character_id) + result = SmfManager.add_user(SmfTasks.get_username(request.user), request.user.email, ['Member'], character.character_id) # if empty we failed if result[0] != "": SmfUser.objects.update_or_create(user=request.user, defaults={'username': result[0]}) @@ -36,8 +35,7 @@ def activate_smf(request): 'username': result[0], 'password': result[1], } - return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'SMF'}) + return render(request, 'services/service_credentials.html', context={'credentials': credentials, 'service': 'SMF'}) else: logger.error("Unsuccessful attempt to activate smf for user %s" % request.user) messages.error(request, _('An error occurred while processing your SMF account.')) @@ -74,8 +72,7 @@ def reset_smf_password(request): 'username': request.user.smf.username, 'password': result, } - return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'SMF'}) + return render(request, 'services/service_credentials.html', context={'credentials': credentials, 'service': 'SMF'}) logger.error("Unsuccessful attempt to reset smf password for user %s" % request.user) messages.error(request, _('An error occurred while processing your SMF account.')) return redirect("services:services") @@ -93,8 +90,7 @@ def set_smf_password(request): if form.is_valid() and SmfTasks.has_account(request.user) and character is not None: password = form.cleaned_data['password'] logger.debug("Form contains password of length %s" % len(password)) - result = SmfManager.update_user_password(request.user.smf.username, character.character_id, - password=password) + result = SmfManager.update_user_password(request.user.smf.username, character.character_id, password=password) if result != "": logger.info("Successfully set smf password for user %s" % request.user) messages.success(request, _('Set SMF password.')) diff --git a/allianceauth/services/modules/teamspeak3/admin.py b/allianceauth/services/modules/teamspeak3/admin.py index 9b562ecc..1264ef4e 100644 --- a/allianceauth/services/modules/teamspeak3/admin.py +++ b/allianceauth/services/modules/teamspeak3/admin.py @@ -5,28 +5,28 @@ from ...admin import ServicesUserAdmin @admin.register(Teamspeak3User) -class Teamspeak3UserAdmin(ServicesUserAdmin): - list_display = ServicesUserAdmin.list_display + ( +class Teamspeak3UserAdmin(ServicesUserAdmin): + list_display = ServicesUserAdmin.list_display + ( 'uid', - 'perm_key' + 'perm_key' ) search_fields = ServicesUserAdmin.search_fields + ('uid', ) - + @admin.register(AuthTS) class AuthTSgroupAdmin(admin.ModelAdmin): ordering = ('auth_group__name', ) - list_select_related = True - + list_select_related = True + list_display = ('auth_group', '_ts_group') list_filter = ('ts_group', ) - + fields = ('auth_group', 'ts_group') filter_horizontal = ('ts_group',) def _ts_group(self, obj): return [x for x in obj.ts_group.all().order_by('ts_group_id')] - + _ts_group.short_description = 'ts groups' #_ts_group.admin_order_field = 'profile__state' diff --git a/allianceauth/services/modules/teamspeak3/manager.py b/allianceauth/services/modules/teamspeak3/manager.py index c7c90797..7074a34f 100755 --- a/allianceauth/services/modules/teamspeak3/manager.py +++ b/allianceauth/services/modules/teamspeak3/manager.py @@ -85,14 +85,14 @@ class Teamspeak3Manager: self.__group_cache = None sgid = ret['keys']['sgid'] self.server.send_command('servergroupaddperm', - {'sgid': sgid, 'permsid': 'i_group_needed_modify_power', 'permvalue': 75, - 'permnegated': 0, 'permskip': 0}) + {'sgid': sgid, 'permsid': 'i_group_needed_modify_power', 'permvalue': 75, + 'permnegated': 0, 'permskip': 0}) self.server.send_command('servergroupaddperm', - {'sgid': sgid, 'permsid': 'i_group_needed_member_add_power', 'permvalue': 100, - 'permnegated': 0, 'permskip': 0}) + {'sgid': sgid, 'permsid': 'i_group_needed_member_add_power', 'permvalue': 100, + 'permnegated': 0, 'permskip': 0}) self.server.send_command('servergroupaddperm', - {'sgid': sgid, 'permsid': 'i_group_needed_member_remove_power', 'permvalue': 100, - 'permnegated': 0, 'permskip': 0}) + {'sgid': sgid, 'permsid': 'i_group_needed_member_remove_power', 'permvalue': 100, + 'permnegated': 0, 'permskip': 0}) logger.info("Created group on TS3 server with name %s and id %s" % (groupname, sgid)) return sgid @@ -142,7 +142,7 @@ class Teamspeak3Manager: if groupid not in user_groups.values(): logger.debug("User does not have group already. Issuing command to add.") self.server.send_command('servergroupaddclient', - {'sgid': str(groupid), 'cldbid': uid}) + {'sgid': str(groupid), 'cldbid': uid}) logger.info("Added user id %s to group id %s on TS3 server." % (uid, groupid)) def _remove_user_from_group(self, uid, groupid): @@ -152,7 +152,7 @@ class Teamspeak3Manager: if str(groupid) in user_groups.values(): logger.debug("User is in group. Issuing command to remove.") self.server.send_command('servergroupdelclient', - {'sgid': str(groupid), 'cldbid': uid}) + {'sgid': str(groupid), 'cldbid': uid}) logger.info("Removed user id %s from group id %s on TS3 server." % (uid, groupid)) def _sync_ts_group_db(self): @@ -190,7 +190,7 @@ class Teamspeak3Manager: state = user.profile.state.name if state not in server_groups: - self._create_group(state) + self._create_group(state) state_group_id = self._group_id_by_name(state) diff --git a/allianceauth/services/modules/teamspeak3/migrations/0001_initial.py b/allianceauth/services/modules/teamspeak3/migrations/0001_initial.py index a46605d3..2177f500 100644 --- a/allianceauth/services/modules/teamspeak3/migrations/0001_initial.py +++ b/allianceauth/services/modules/teamspeak3/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 01:11 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/teamspeak3/migrations/0002_auto_20161212_0133.py b/allianceauth/services/modules/teamspeak3/migrations/0002_auto_20161212_0133.py index 66a13f1a..c7c8b076 100644 --- a/allianceauth/services/modules/teamspeak3/migrations/0002_auto_20161212_0133.py +++ b/allianceauth/services/modules/teamspeak3/migrations/0002_auto_20161212_0133.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 01:33 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/teamspeak3/migrations/0003_teamspeak3user.py b/allianceauth/services/modules/teamspeak3/migrations/0003_teamspeak3user.py index 714c6fff..6eea5c83 100644 --- a/allianceauth/services/modules/teamspeak3/migrations/0003_teamspeak3user.py +++ b/allianceauth/services/modules/teamspeak3/migrations/0003_teamspeak3user.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:14 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/teamspeak3/migrations/0004_service_permissions.py b/allianceauth/services/modules/teamspeak3/migrations/0004_service_permissions.py index f9df0184..43e00fa4 100644 --- a/allianceauth/services/modules/teamspeak3/migrations/0004_service_permissions.py +++ b/allianceauth/services/modules/teamspeak3/migrations/0004_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/teamspeak3/migrations/0005_stategroup.py b/allianceauth/services/modules/teamspeak3/migrations/0005_stategroup.py index 4a42ca6d..8b77d8fc 100644 --- a/allianceauth/services/modules/teamspeak3/migrations/0005_stategroup.py +++ b/allianceauth/services/modules/teamspeak3/migrations/0005_stategroup.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.10 on 2018-02-23 06:13 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/teamspeak3/tests.py b/allianceauth/services/modules/teamspeak3/tests.py index 44654ec9..fe804f56 100644 --- a/allianceauth/services/modules/teamspeak3/tests.py +++ b/allianceauth/services/modules/teamspeak3/tests.py @@ -304,21 +304,20 @@ class Teamspeak3ManagerTestCase(TestCase): @mock.patch.object(Teamspeak3Manager, '_group_list') @mock.patch.object(Teamspeak3Manager, '_group_id_by_name') - def test_add_user_exception(self, _group_id_by_name, _group_list): + def test_add_user_exception(self, _group_id_by_name, _group_list): """test 1st exception occuring in add_user()""" # set mocks in Teamspeak3Manager class _group_list.return_value = ['Member', 'Guest'] - _group_id_by_name.return_value = 99 + _group_id_by_name.return_value = 99 manager = Teamspeak3Manager() server = mock.MagicMock() server._connected.return_value = True server.send_command = mock.Mock(side_effect=Teamspeak3ManagerTestCase.my_side_effect) manager._server = server - # create test data + # create test data user = User.objects.create_user("dummy") user.profile.state = State.objects.filter(name="Member").first() - + # perform test manager.add_user(user, "Dummy User") - \ No newline at end of file diff --git a/allianceauth/services/modules/teamspeak3/util/ts3.py b/allianceauth/services/modules/teamspeak3/util/ts3.py index ead9ea60..df4a2269 100755 --- a/allianceauth/services/modules/teamspeak3/util/ts3.py +++ b/allianceauth/services/modules/teamspeak3/util/ts3.py @@ -11,16 +11,18 @@ class ConnectionError: return 'Error connecting to host %s port %s' % (self.ip, self.port) -ts3_escape = {'/': r"\/", - ' ': r'\s', - '|': r'\p', - "\a": r'\a', - "\b": r'\b', - "\f": r'\f', - "\n": r'\n', - "\r": r'\r', - "\t": r'\t', - "\v": r'\v'} +ts3_escape = { + '/': r"\/", + ' ': r'\s', + '|': r'\p', + "\a": r'\a', + "\b": r'\b', + "\f": r'\f', + "\n": r'\n', + "\r": r'\r', + "\t": r'\t', + "\v": r'\v' +} class TS3Proto: diff --git a/allianceauth/services/modules/teamspeak3/views.py b/allianceauth/services/modules/teamspeak3/views.py index f72ed3e0..0d046b9e 100644 --- a/allianceauth/services/modules/teamspeak3/views.py +++ b/allianceauth/services/modules/teamspeak3/views.py @@ -55,8 +55,7 @@ def verify_teamspeak3(request): form = TeamspeakJoinForm(initial={'username': request.user.teamspeak3.uid}) context = { 'form': form, - 'authinfo': {'teamspeak3_uid': request.user.teamspeak3.uid, - 'teamspeak3_perm_key': request.user.teamspeak3.perm_key}, + 'authinfo': {'teamspeak3_uid': request.user.teamspeak3.uid, 'teamspeak3_perm_key': request.user.teamspeak3.perm_key}, 'public_url': settings.TEAMSPEAK3_PUBLIC_URL, } return render(request, 'services/teamspeak3/teamspeakjoin.html', context=context) diff --git a/allianceauth/services/modules/xenforo/admin.py b/allianceauth/services/modules/xenforo/admin.py index 4da19bf2..20ccbd7e 100644 --- a/allianceauth/services/modules/xenforo/admin.py +++ b/allianceauth/services/modules/xenforo/admin.py @@ -6,5 +6,5 @@ from ...admin import ServicesUserAdmin @admin.register(XenforoUser) class XenforoUserAdmin(ServicesUserAdmin): - list_display = ServicesUserAdmin.list_display + ('username',) - search_fields = ServicesUserAdmin.search_fields + ('username', ) \ No newline at end of file + list_display = ServicesUserAdmin.list_display + ('username',) + search_fields = ServicesUserAdmin.search_fields + ('username', ) diff --git a/allianceauth/services/modules/xenforo/migrations/0001_initial.py b/allianceauth/services/modules/xenforo/migrations/0001_initial.py index c721a776..6c9cd3b2 100644 --- a/allianceauth/services/modules/xenforo/migrations/0001_initial.py +++ b/allianceauth/services/modules/xenforo/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-12 03:14 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/xenforo/migrations/0002_service_permissions.py b/allianceauth/services/modules/xenforo/migrations/0002_service_permissions.py index 313fa6a4..2926f8a6 100644 --- a/allianceauth/services/modules/xenforo/migrations/0002_service_permissions.py +++ b/allianceauth/services/modules/xenforo/migrations/0002_service_permissions.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-02-02 05:59 from __future__ import unicode_literals diff --git a/allianceauth/services/modules/xenforo/views.py b/allianceauth/services/modules/xenforo/views.py index f0c7c75f..52e26c94 100644 --- a/allianceauth/services/modules/xenforo/views.py +++ b/allianceauth/services/modules/xenforo/views.py @@ -33,7 +33,7 @@ def activate_xenforo_forum(request): 'password': result['password'], } return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'XenForo'}) + context={'credentials': credentials, 'service': 'XenForo'}) else: logger.error("Unsuccessful attempt to activate xenforo for user %s" % request.user) @@ -68,7 +68,7 @@ def reset_xenforo_password(request): 'password': result['password'], } return render(request, 'services/service_credentials.html', - context={'credentials': credentials, 'service': 'XenForo'}) + context={'credentials': credentials, 'service': 'XenForo'}) logger.error("Unsuccessful attempt to reset XenForo password for user %s" % request.user) messages.error(request, _('An error occurred while processing your XenForo account.')) return redirect("services:services") diff --git a/allianceauth/services/signals.py b/allianceauth/services/signals.py index 009b2da9..8f641c6d 100644 --- a/allianceauth/services/signals.py +++ b/allianceauth/services/signals.py @@ -75,8 +75,7 @@ def m2m_changed_group_permissions(sender, instance, action, pk_set, *args, **kwa continue for svc in ServicesHook.get_services(): if svc.access_perm == path_perm: - logger.debug("Permissions changed for group {} on " - "service {}, re-validating services for groups users".format(instance, svc)) + logger.debug("Permissions changed for group {} on service {}, re-validating services for groups users".format(instance, svc)) def validate_all_groups_users_for_service(): logger.debug("Performing validation for service {}".format(svc)) @@ -108,8 +107,7 @@ def m2m_changed_state_permissions(sender, instance, action, pk_set, *args, **kwa continue for svc in ServicesHook.get_services(): if svc.access_perm == path_perm: - logger.debug("Permissions changed for state {} on " - "service {}, re-validating services for state users".format(instance, svc)) + logger.debug("Permissions changed for state {} on service {}, re-validating services for state users".format(instance, svc)) def validate_all_state_users_for_service(): logger.debug("Performing validation for service {}".format(svc)) @@ -125,7 +123,7 @@ def m2m_changed_state_permissions(sender, instance, action, pk_set, *args, **kwa @receiver(state_changed) def check_service_accounts_state_changed(sender, user, state, **kwargs): - logger.debug("Received state_changed from %s to state %s" % (user, state)) + logger.debug("Received state_changed from %s to state %s" % (user, state)) for svc in ServicesHook.get_services(): svc.validate_user(user) svc.update_groups(user) @@ -154,7 +152,7 @@ def disable_services_on_inactive(sender, instance, *args, **kwargs): @receiver(pre_save, sender=UserProfile) -def process_main_character_change(sender, instance, *args, **kwargs): +def process_main_character_change(sender, instance, *args, **kwargs): if not instance.pk: # ignore new model being created return @@ -169,9 +167,9 @@ def process_main_character_change(sender, instance, *args, **kwargs): instance.user ) disable_user(instance.user) - elif old_instance.main_character != instance.main_character: + elif old_instance.main_character != instance.main_character: logger.info( - "Updating Names due to change of main character for user %s", + "Updating Names due to change of main character for user %s", instance.user ) for svc in ServicesHook.get_services(): @@ -181,8 +179,8 @@ def process_main_character_change(sender, instance, *args, **kwargs): except: logger.exception( "Exception running sync_nickname for services module %s " - "on user %s", - svc, + "on user %s", + svc, instance ) @@ -192,16 +190,16 @@ def process_main_character_change(sender, instance, *args, **kwargs): @receiver(pre_save, sender=EveCharacter) def process_main_character_update(sender, instance, *args, **kwargs): - try: + try: if instance.userprofile: logger.debug( - "Received pre_save from %s for process_main_character_update", + "Received pre_save from %s for process_main_character_update", instance ) old_instance = EveCharacter.objects.get(pk=instance.pk) if not instance.character_name == old_instance.character_name or \ - not instance.corporation_name == old_instance.corporation_name or \ - not instance.alliance_name == old_instance.alliance_name: + not instance.corporation_name == old_instance.corporation_name or \ + not instance.alliance_name == old_instance.alliance_name: logger.info("syncing service nickname for user {0}".format(instance.userprofile.user)) for svc in ServicesHook.get_services(): diff --git a/allianceauth/services/static/services/admin.css b/allianceauth/services/static/services/admin.css index 46796c5f..a8e5c54c 100644 --- a/allianceauth/services/static/services/admin.css +++ b/allianceauth/services/static/services/admin.css @@ -1,6 +1,6 @@ -/* -CSS for allianceauth admin site +/* +CSS for allianceauth admin site */ .img-circle { border-radius: 50%; } -.column-user_profile_pic { width: 50px; } \ No newline at end of file +.column-user_profile_pic { width: 50px; } diff --git a/allianceauth/services/tasks.py b/allianceauth/services/tasks.py index a53e8693..519ec086 100644 --- a/allianceauth/services/tasks.py +++ b/allianceauth/services/tasks.py @@ -22,7 +22,7 @@ class DjangoBackend: @staticmethod def raise_or_lock(key, timeout): acquired = cache.add(key=key, value="lock", timeout=timeout) - if not acquired: + if not acquired: raise AlreadyQueued(int(cache.ttl(key))) @staticmethod @@ -47,4 +47,3 @@ def disable_user(user): for svc in ServicesHook.get_services(): if svc.service_active_for_user(user): svc.delete_user(user) - diff --git a/allianceauth/services/templates/public/menuitem.html b/allianceauth/services/templates/public/menuitem.html index 0058e09c..6dad1664 100644 --- a/allianceauth/services/templates/public/menuitem.html +++ b/allianceauth/services/templates/public/menuitem.html @@ -3,7 +3,7 @@
  • - {% trans item.text %} + {% trans item.text %} {% if item.count != None %} {{ item.count }} {% endif %} diff --git a/allianceauth/services/templates/services/service_password.html b/allianceauth/services/templates/services/service_password.html index a51531ba..16c56eb7 100644 --- a/allianceauth/services/templates/services/service_password.html +++ b/allianceauth/services/templates/services/service_password.html @@ -11,8 +11,7 @@
    - + {% csrf_token %} {{ form|bootstrap }}
    diff --git a/allianceauth/services/tests/test_models.py b/allianceauth/services/tests/test_models.py index 25a1e7cc..f03f58c6 100644 --- a/allianceauth/services/tests/test_models.py +++ b/allianceauth/services/tests/test_models.py @@ -14,4 +14,4 @@ class TestNameFormatConfig(TestCase): obj.states.add(AuthUtils.get_member_state()) obj.states.add(AuthUtils.get_guest_state()) expected = 'mumble: Member, Guest' - self.assertEqual(str(obj), expected) \ No newline at end of file + self.assertEqual(str(obj), expected) diff --git a/allianceauth/services/tests/test_signals.py b/allianceauth/services/tests/test_signals.py index 65426c37..7bd0c59e 100644 --- a/allianceauth/services/tests/test_signals.py +++ b/allianceauth/services/tests/test_signals.py @@ -198,10 +198,10 @@ class ServicesSignalsTestCase(TestCase): # Assert self.assertTrue(services_hook.get_services.called) - self.assertTrue(svc.validate_user.called) + self.assertTrue(svc.validate_user.called) args, kwargs = svc.validate_user.call_args self.assertEqual(self.member, args[0]) - + self.assertTrue(svc.update_groups.called) args, kwargs = svc.update_groups.call_args self.assertEqual(self.member, args[0]) @@ -217,11 +217,11 @@ class ServicesSignalsTestCase(TestCase): svc.access_perm = 'auth.access_testsvc' services_hook.get_services.return_value = [svc] - + new_main = EveCharacter.objects.create( - character_id=123, - character_name="Alter Ego", - corporation_id=987, + character_id=123, + character_name="Alter Ego", + corporation_id=987, corporation_name="ABC" ) self.member.profile.main_character = new_main @@ -230,17 +230,17 @@ class ServicesSignalsTestCase(TestCase): # Assert self.assertTrue(services_hook.get_services.called) - self.assertTrue(svc.validate_user.called) + self.assertTrue(svc.validate_user.called) args, kwargs = svc.validate_user.call_args self.assertEqual(self.member, args[0]) - + self.assertTrue(svc.sync_nickname.called) args, kwargs = svc.sync_nickname.call_args self.assertEqual(self.member, args[0]) @mock.patch('allianceauth.services.signals.ServicesHook') def test_state_changed_services_validation_and_groups_update_2(self, services_hook): - """Test a user changing main has service does not have accounts validated + """Test a user changing main has service does not have accounts validated and sync updated if the new main is equal to the old main """ svc = mock.Mock() @@ -249,7 +249,7 @@ class ServicesSignalsTestCase(TestCase): svc.access_perm = 'auth.access_testsvc' services_hook.get_services.return_value = [svc] - + # this creates a clone of the Django object new_main = deepcopy(self.member.profile.main_character) self.assertIsNot(new_main, self.member.profile.main_character) @@ -258,5 +258,5 @@ class ServicesSignalsTestCase(TestCase): # Assert self.assertFalse(services_hook.get_services.called) - self.assertFalse(svc.validate_user.called) - self.assertFalse(svc.sync_nickname.called) \ No newline at end of file + self.assertFalse(svc.validate_user.called) + self.assertFalse(svc.sync_nickname.called) diff --git a/allianceauth/services/tests/test_tasks.py b/allianceauth/services/tests/test_tasks.py index fae76402..35d9329e 100644 --- a/allianceauth/services/tests/test_tasks.py +++ b/allianceauth/services/tests/test_tasks.py @@ -34,28 +34,28 @@ class TestDjangoBackend(TestCase): TEST_KEY = "my-django-backend-test-key" TIMEOUT = 1800 - + def setUp(self) -> None: cache.delete(self.TEST_KEY) self.backend = DjangoBackend(dict()) - + def test_can_get_lock(self): """ - when lock can be acquired + when lock can be acquired then set it with timetout """ self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT) self.assertIsNotNone(cache.get(self.TEST_KEY)) self.assertAlmostEqual(cache.ttl(self.TEST_KEY), self.TIMEOUT, delta=2) - + def test_when_cant_get_lock_raise_exception(self): """ - when lock can bot be acquired + when lock can bot be acquired then raise AlreadyQueued exception with countdown """ self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT) - try: + try: self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT) except Exception as ex: self.assertIsInstance(ex, AlreadyQueued) @@ -64,7 +64,7 @@ class TestDjangoBackend(TestCase): def test_can_clear_lock(self): """ when a lock exists - then can get a new lock after clearing it + then can get a new lock after clearing it """ self.backend.raise_or_lock(self.TEST_KEY, self.TIMEOUT) diff --git a/allianceauth/srp/__init__.py b/allianceauth/srp/__init__.py index bd500477..16dbb7b1 100755 --- a/allianceauth/srp/__init__.py +++ b/allianceauth/srp/__init__.py @@ -1,2 +1 @@ default_app_config = 'allianceauth.srp.apps.SRPConfig' - diff --git a/allianceauth/srp/auth_hooks.py b/allianceauth/srp/auth_hooks.py index 0db14f71..c59b3f18 100644 --- a/allianceauth/srp/auth_hooks.py +++ b/allianceauth/srp/auth_hooks.py @@ -9,15 +9,17 @@ from .managers import SRPManager class SrpMenu(MenuItemHook): def __init__(self): - MenuItemHook.__init__(self, _('Ship Replacement'), - 'far fa-money-bill-alt fa-fw', - 'srp:management', - navactive=['srp:']) + MenuItemHook.__init__( + self, _('Ship Replacement'), + 'far fa-money-bill-alt fa-fw', + 'srp:management', + navactive=['srp:'] + ) def render(self, request): if request.user.has_perm('srp.access_srp'): app_count = SRPManager.pending_requests_count_for_user(request.user) - self.count = app_count if app_count and app_count > 0 else None + self.count = app_count if app_count and app_count > 0 else None return MenuItemHook.render(self, request) return '' diff --git a/allianceauth/srp/managers.py b/allianceauth/srp/managers.py index 84efa6ab..148fa936 100644 --- a/allianceauth/srp/managers.py +++ b/allianceauth/srp/managers.py @@ -13,7 +13,7 @@ logger = logging.getLogger(__name__) class SRPManager: - + @staticmethod def get_kill_id(killboard_link): num_set = '0123456789' @@ -55,7 +55,7 @@ class SRPManager: @staticmethod def pending_requests_count_for_user(user: User): - """returns the number of open SRP requests for given user + """returns the number of open SRP requests for given user or None if user has no permission""" if user.has_perm("auth.srp_management"): return SrpUserRequest.objects.filter(srp_status="pending").count() diff --git a/allianceauth/srp/migrations/0001_initial.py b/allianceauth/srp/migrations/0001_initial.py index 661199cf..b6344eb4 100644 --- a/allianceauth/srp/migrations/0001_initial.py +++ b/allianceauth/srp/migrations/0001_initial.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.1 on 2016-09-05 21:40 from __future__ import unicode_literals diff --git a/allianceauth/srp/migrations/0002_srpuserrequest_srp_status_choices.py b/allianceauth/srp/migrations/0002_srpuserrequest_srp_status_choices.py index d6e16371..24700804 100644 --- a/allianceauth/srp/migrations/0002_srpuserrequest_srp_status_choices.py +++ b/allianceauth/srp/migrations/0002_srpuserrequest_srp_status_choices.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-01-18 20:21 from __future__ import unicode_literals diff --git a/allianceauth/srp/migrations/0003_make_strings_more_stringy.py b/allianceauth/srp/migrations/0003_make_strings_more_stringy.py index 0b644048..24b40a01 100644 --- a/allianceauth/srp/migrations/0003_make_strings_more_stringy.py +++ b/allianceauth/srp/migrations/0003_make_strings_more_stringy.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.10.5 on 2017-03-22 23:35 from __future__ import unicode_literals diff --git a/allianceauth/srp/migrations/0004_on_delete.py b/allianceauth/srp/migrations/0004_on_delete.py index d4fd505a..d42e390d 100644 --- a/allianceauth/srp/migrations/0004_on_delete.py +++ b/allianceauth/srp/migrations/0004_on_delete.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.5 on 2017-09-28 02:16 from __future__ import unicode_literals diff --git a/allianceauth/srp/templates/srp/data.html b/allianceauth/srp/templates/srp/data.html index 8abc4cad..7adfdb7c 100644 --- a/allianceauth/srp/templates/srp/data.html +++ b/allianceauth/srp/templates/srp/data.html @@ -8,42 +8,42 @@ {% block extra_css %} {% include 'bundles/datatables-css.html' %} {% include 'bundles/x-editable.css.html' %} - - + .editable-input { + width: 95%; + } + .radio, .checkbox { + margin-top: 0px; + margin-bottom: 0px; + } + .editable-error-block { + white-space: nowrap; + } + .editable-click, a.editable-click, a.editable-click:hover { + border-bottom: none; + } + .tooltip-inner { + white-space:pre; + max-width: none; + } + {% endblock extra_css %} {% block content %} diff --git a/allianceauth/srp/tests/test_managers.py b/allianceauth/srp/tests/test_managers.py index 8f8ed266..3f416c14 100755 --- a/allianceauth/srp/tests/test_managers.py +++ b/allianceauth/srp/tests/test_managers.py @@ -19,7 +19,7 @@ currentdir = os.path.dirname(os.path.abspath(inspect.getfile( ))) -def load_data(filename): +def load_data(filename): """loads given JSON file from `testdata` sub folder and returns content""" with open( currentdir + '/testdata/%s.json' % filename, 'r', encoding='utf-8' @@ -30,7 +30,7 @@ def load_data(filename): class TestSrpManager(TestCase): - + def test_can_extract_kill_id(self): link = 'https://zkillboard.com/kill/81973979/' expected = 81973979 @@ -52,11 +52,11 @@ class TestSrpManager(TestCase): self.assertEqual(ship_type, 19720) self.assertEqual(ship_value, 3177859026.86) self.assertEqual(victim_id, 93330670) - + @patch(MODULE_PATH + '.requests.get') def test_invalid_id_for_zkb_raises_exception(self, mock_get): mock_get.return_value.json.return_value = [''] - + with self.assertRaises(ValueError): SRPManager.get_kill_data(81973979) @@ -77,7 +77,7 @@ class TestSrpManager(TestCase): def test_pending_requests_count_for_user(self): user = AuthUtils.create_member("Bruce Wayne") - + # when no permission to approve SRP requests # then return None self.assertIsNone(SRPManager.pending_requests_count_for_user(user)) @@ -88,7 +88,7 @@ class TestSrpManager(TestCase): AuthUtils.add_permission_to_user_by_name("auth.srp_management", user) user = User.objects.get(pk=user.pk) self.assertEqual(SRPManager.pending_requests_count_for_user(user), 0) - + # given permission to approve SRP requests # when 1 pending request # then return 1 diff --git a/allianceauth/srp/tests/testdata/get_killmails_killmail_id_killmail_hash_81973979.json b/allianceauth/srp/tests/testdata/get_killmails_killmail_id_killmail_hash_81973979.json index 3a8084ee..98266a2c 100644 --- a/allianceauth/srp/tests/testdata/get_killmails_killmail_id_killmail_hash_81973979.json +++ b/allianceauth/srp/tests/testdata/get_killmails_killmail_id_killmail_hash_81973979.json @@ -950,4 +950,4 @@ }, "ship_type_id": 19720 } -} \ No newline at end of file +} diff --git a/allianceauth/srp/tests/testdata/zkillboard_killmail_api_81973979.json b/allianceauth/srp/tests/testdata/zkillboard_killmail_api_81973979.json index 67193f21..407e5c2c 100644 --- a/allianceauth/srp/tests/testdata/zkillboard_killmail_api_81973979.json +++ b/allianceauth/srp/tests/testdata/zkillboard_killmail_api_81973979.json @@ -12,4 +12,4 @@ "awox": false } } -] \ No newline at end of file +] diff --git a/allianceauth/srp/views.py b/allianceauth/srp/views.py index 8bad6cde..788c6793 100755 --- a/allianceauth/srp/views.py +++ b/allianceauth/srp/views.py @@ -53,8 +53,8 @@ def srp_fleet_view(request, fleet_id): except SrpFleetMain.DoesNotExist: raise Http404 context = {"fleet_id": fleet_id, "fleet_status": fleet_main.fleet_srp_status, - "srpfleetrequests": fleet_main.srpuserrequest_set.select_related('character'), - "totalcost": fleet_main.total_cost} + "srpfleetrequests": fleet_main.srpuserrequest_set.select_related('character'), + "totalcost": fleet_main.total_cost} return render(request, 'srp/data.html', context=context) @@ -137,7 +137,7 @@ def srp_fleet_mark_completed(request, fleet_id): srpfleetmain.save() logger.info("Marked SRP Fleet %s as completed by user %s" % (srpfleetmain.fleet_name, request.user)) messages.success(request, - _('Marked SRP fleet %(fleetname)s as completed.') % {"fleetname": srpfleetmain.fleet_name}) + _('Marked SRP fleet %(fleetname)s as completed.') % {"fleetname": srpfleetmain.fleet_name}) return redirect("srp:fleet", fleet_id) @@ -150,7 +150,7 @@ def srp_fleet_mark_uncompleted(request, fleet_id): srpfleetmain.save() logger.info("Marked SRP Fleet %s as incomplete for user %s" % (fleet_id, request.user)) messages.success(request, - _('Marked SRP fleet %(fleetname)s as incomplete.') % {"fleetname": srpfleetmain.fleet_name}) + _('Marked SRP fleet %(fleetname)s as incomplete.') % {"fleetname": srpfleetmain.fleet_name}) return redirect("srp:fleet", fleet_id) @@ -162,7 +162,7 @@ def srp_request_view(request, fleet_srp): if SrpFleetMain.objects.filter(fleet_srp_code=fleet_srp).exists() is False: logger.error("Unable to locate SRP Fleet using code %s for user %s" % (fleet_srp, request.user)) messages.error(request, - _('Unable to locate SRP code with ID %(srpfleetid)s') % {"srpfleetid": fleet_srp}) + _('Unable to locate SRP code with ID %(srpfleetid)s') % {"srpfleetid": fleet_srp}) return redirect("srp:management") if request.method == 'POST': @@ -172,7 +172,7 @@ def srp_request_view(request, fleet_srp): if form.is_valid(): if SrpUserRequest.objects.filter(killboard_link=form.cleaned_data['killboard_link']).exists(): messages.error(request, - _("This Killboard link has already been posted.")) + _("This Killboard link has already been posted.")) return redirect("srp:management") character = request.user.profile.main_character @@ -193,8 +193,7 @@ def srp_request_view(request, fleet_srp): request.user, srp_request.killboard_link)) # THIS SHOULD BE IN FORM VALIDATION messages.error(request, - _( - "Your SRP request Killmail link is invalid. Please make sure you are using zKillboard.")) + _("Your SRP request Killmail link is invalid. Please make sure you are using zKillboard.")) return redirect("srp:management") if request.user.character_ownerships.filter(character__character_id=str(victim_id)).exists(): @@ -205,13 +204,12 @@ def srp_request_view(request, fleet_srp): logger.info("Created SRP Request on behalf of user %s for fleet name %s" % ( request.user, srp_fleet_main.fleet_name)) messages.success(request, - _('Submitted SRP request for your %(ship)s.') % {"ship": srp_request.srp_ship_name}) + _('Submitted SRP request for your %(ship)s.') % {"ship": srp_request.srp_ship_name}) return redirect("srp:management") else: messages.error(request, - _( - "Character %(charid)s does not belong to your Auth account. Please add the API key for this character and try again") - % {"charid": victim_id}) + _("Character %(charid)s does not belong to your Auth account. Please add the API key for this character and try again") + % {"charid": victim_id}) return redirect("srp:management") else: logger.debug("Returning blank SrpFleetUserRequestForm") @@ -330,7 +328,7 @@ def srp_request_update_amount(request, fleet_srp_request_id): if SrpUserRequest.objects.filter(id=fleet_srp_request_id).exists() is False: logger.error("Unable to locate SRP request id %s for user %s" % (fleet_srp_request_id, request.user)) messages.error(request, - _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": fleet_srp_request_id}) + _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": fleet_srp_request_id}) return redirect("srp:management") srp_request = SrpUserRequest.objects.get(id=fleet_srp_request_id) @@ -354,7 +352,7 @@ def srp_fleet_edit_view(request, fleet_id): srpfleetmain.save() logger.info("User %s edited SRP Fleet %s" % (request.user, srpfleetmain.fleet_name)) messages.success(request, - _('Saved changes to SRP fleet %(fleetname)s') % {"fleetname": srpfleetmain.fleet_name}) + _('Saved changes to SRP fleet %(fleetname)s') % {"fleetname": srpfleetmain.fleet_name}) return redirect("srp:management") else: logger.debug("Returning blank SrpFleetMainUpdateForm") diff --git a/allianceauth/static/css/auth-base.css b/allianceauth/static/css/auth-base.css index 32afaba0..7c10b444 100644 --- a/allianceauth/static/css/auth-base.css +++ b/allianceauth/static/css/auth-base.css @@ -43,7 +43,7 @@ ul.list-group.list-group-horizontal > li.list-group-item { justify-content: center; } -@media all { +@media all { /* style nav tabs in dark mode*/ .template-dark-mode .nav-tabs > li.active > a { background-color: rgb(70, 69, 69)!important; @@ -64,7 +64,7 @@ ul.list-group.list-group-horizontal > li.list-group-item { .template-dark-mode .tr-group { font-weight: bold; background-color: rgb(105, 105, 105) !important; - } + } /* default style for tables */ .template-light-mode .table-aa > thead > tr > th{ @@ -112,12 +112,12 @@ ul.list-group.list-group-horizontal > li.list-group-item { display: -ms-flexbox; display: flex; flex-wrap: wrap; - } + } - .row.vertical-flexbox-row2 > [class*='col-'] { + .row.vertical-flexbox-row2 > [class*='col-'] { display: flex; flex-direction: column; - } + } } /* Extra Small devices (Phones, <768px) */ diff --git a/allianceauth/static/css/checkbox.css b/allianceauth/static/css/checkbox.css index 6c2eb2f1..048970ad 100644 --- a/allianceauth/static/css/checkbox.css +++ b/allianceauth/static/css/checkbox.css @@ -1,4 +1,4 @@ -.checkbox label:after, +.checkbox label:after, .radio label:after { content: ''; display: table; @@ -55,4 +55,4 @@ .checkbox label input[type="checkbox"]:disabled + .cr, .radio label input[type="radio"]:disabled + .cr { opacity: .5; -} \ No newline at end of file +} diff --git a/allianceauth/templates/allianceauth/admin-status/overview.html b/allianceauth/templates/allianceauth/admin-status/overview.html index 99511cae..0923e076 100644 --- a/allianceauth/templates/allianceauth/admin-status/overview.html +++ b/allianceauth/templates/allianceauth/admin-status/overview.html @@ -85,8 +85,8 @@ progress-bar-success {% endif %} " role="progressbar" aria-valuenow="{% widthratio task_queue_length 500 100 %}" - aria-valuemin="0" aria-valuemax="100" - style="width: {% widthratio task_queue_length 500 100 %}%;"> + aria-valuemin="0" aria-valuemax="100" + style="width: {% widthratio task_queue_length 500 100 %}%;">
    {% if task_queue_length < 0 %} diff --git a/allianceauth/templates/allianceauth/night-toggle.html b/allianceauth/templates/allianceauth/night-toggle.html index fc6d3350..b36d9826 100644 --- a/allianceauth/templates/allianceauth/night-toggle.html +++ b/allianceauth/templates/allianceauth/night-toggle.html @@ -2,4 +2,4 @@
    {% trans "Night" %} - \ No newline at end of file + diff --git a/allianceauth/templates/allianceauth/notifications_menu_item.html b/allianceauth/templates/allianceauth/notifications_menu_item.html index b413ca78..476d2353 100644 --- a/allianceauth/templates/allianceauth/notifications_menu_item.html +++ b/allianceauth/templates/allianceauth/notifications_menu_item.html @@ -1,6 +1,6 @@ {% load auth_notifications %} -{% with unread_count=request.user|user_unread_notification_count %} +{% with unread_count=request.user|user_unread_notification_count %} {% if unread_count > 0 %} Notifications {{ unread_count }} @@ -8,6 +8,6 @@ {% else %} - + {% endif %} -{% endwith %} \ No newline at end of file +{% endwith %} diff --git a/allianceauth/templates/allianceauth/side-menu.html b/allianceauth/templates/allianceauth/side-menu.html index e1382027..28a7e9fa 100644 --- a/allianceauth/templates/allianceauth/side-menu.html +++ b/allianceauth/templates/allianceauth/side-menu.html @@ -1,13 +1,12 @@ {% load i18n %} {% load navactive %} {% load menu_items %} - + diff --git a/allianceauth/templates/allianceauth/top-menu.html b/allianceauth/templates/allianceauth/top-menu.html index 2f3e09a3..cd7e52ae 100644 --- a/allianceauth/templates/allianceauth/top-menu.html +++ b/allianceauth/templates/allianceauth/top-menu.html @@ -5,10 +5,10 @@
  • {% include 'allianceauth/night-toggle.html' %}
  • -
    + {{ type }}: {{ name }} @@ -20,6 +20,6 @@ {% else %} (unknown) {% endif %} - +