diff --git a/.gitignore b/.gitignore index 4c55efd..3a285de 100644 --- a/.gitignore +++ b/.gitignore @@ -334,3 +334,8 @@ ASALocalRun/ coveragetool reports/ *.cobertura.xml + +# Ignore files used to store 'git diff' and 'pf-gensdk' output +# Used in template-update-check.yml +git_diff_output.txt +gen.txt diff --git a/External/libHttpClient b/External/libHttpClient index 149bfeb..a21681e 160000 --- a/External/libHttpClient +++ b/External/libHttpClient @@ -1 +1 @@ -Subproject commit 149bfeb9de0cfb0679545596b9a8cf67920eff7a +Subproject commit a21681e91d945a8d95c97021b512da4c8d112686 diff --git a/Source/PlayFabCore/Include/Generated/playfab/core/PFErrors.h b/Source/PlayFabCore/Include/Generated/playfab/core/PFErrors.h index 6129893..6034fa7 100644 --- a/Source/PlayFabCore/Include/Generated/playfab/core/PFErrors.h +++ b/Source/PlayFabCore/Include/Generated/playfab/core/PFErrors.h @@ -574,192 +574,193 @@ extern "C" #define E_PF_INVALID_SERVICE_CONFIGURATION MAKE_E_HC(0x5642L) // 0x89235642 #define E_PF_INVALID_NAMESPACE_MISMATCH MAKE_E_HC(0x5643L) // 0x89235643 #define E_PF_LEADERBOARD_COLUMN_LENGTH_MISMATCH MAKE_E_HC(0x5644L) // 0x89235644 -#define E_PF_MATCHMAKING_ENTITY_INVALID MAKE_E_HC(0x5645L) // 0x89235645 -#define E_PF_MATCHMAKING_PLAYER_ATTRIBUTES_INVALID MAKE_E_HC(0x5646L) // 0x89235646 -#define E_PF_MATCHMAKING_QUEUE_NOT_FOUND MAKE_E_HC(0x5647L) // 0x89235647 -#define E_PF_MATCHMAKING_MATCH_NOT_FOUND MAKE_E_HC(0x5648L) // 0x89235648 -#define E_PF_MATCHMAKING_TICKET_NOT_FOUND MAKE_E_HC(0x5649L) // 0x89235649 -#define E_PF_MATCHMAKING_ALREADY_JOINED_TICKET MAKE_E_HC(0x564aL) // 0x8923564a -#define E_PF_MATCHMAKING_TICKET_ALREADY_COMPLETED MAKE_E_HC(0x564bL) // 0x8923564b -#define E_PF_MATCHMAKING_QUEUE_CONFIG_INVALID MAKE_E_HC(0x564cL) // 0x8923564c -#define E_PF_MATCHMAKING_MEMBER_PROFILE_INVALID MAKE_E_HC(0x564dL) // 0x8923564d -#define E_PF_NINTENDO_SWITCH_DEVICE_ID_NOT_LINKED MAKE_E_HC(0x564eL) // 0x8923564e -#define E_PF_MATCHMAKING_NOT_ENABLED MAKE_E_HC(0x564fL) // 0x8923564f -#define E_PF_MATCHMAKING_PLAYER_ATTRIBUTES_TOO_LARGE MAKE_E_HC(0x5650L) // 0x89235650 -#define E_PF_MATCHMAKING_NUMBER_OF_PLAYERS_IN_TICKET_TOO_LARGE MAKE_E_HC(0x5651L) // 0x89235651 -#define E_PF_MATCHMAKING_ATTRIBUTE_INVALID MAKE_E_HC(0x5652L) // 0x89235652 -#define E_PF_MATCHMAKING_PLAYER_HAS_NOT_JOINED_TICKET MAKE_E_HC(0x5653L) // 0x89235653 -#define E_PF_MATCHMAKING_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x5654L) // 0x89235654 -#define E_PF_MATCHMAKING_TICKET_MEMBERSHIP_LIMIT_EXCEEDED MAKE_E_HC(0x5655L) // 0x89235655 -#define E_PF_MATCHMAKING_UNAUTHORIZED MAKE_E_HC(0x5656L) // 0x89235656 -#define E_PF_MATCHMAKING_QUEUE_LIMIT_EXCEEDED MAKE_E_HC(0x5657L) // 0x89235657 -#define E_PF_MATCHMAKING_REQUEST_TYPE_MISMATCH MAKE_E_HC(0x5658L) // 0x89235658 -#define E_PF_MATCHMAKING_BAD_REQUEST MAKE_E_HC(0x5659L) // 0x89235659 -#define E_PF_PUB_SUB_FEATURE_NOT_ENABLED_FOR_TITLE MAKE_E_HC(0x565aL) // 0x8923565a -#define E_PF_PUB_SUB_TOO_MANY_REQUESTS MAKE_E_HC(0x565bL) // 0x8923565b -#define E_PF_PUB_SUB_CONNECTION_NOT_FOUND_FOR_ENTITY MAKE_E_HC(0x565cL) // 0x8923565c -#define E_PF_PUB_SUB_CONNECTION_HANDLE_INVALID MAKE_E_HC(0x565dL) // 0x8923565d -#define E_PF_PUB_SUB_SUBSCRIPTION_LIMIT_EXCEEDED MAKE_E_HC(0x565eL) // 0x8923565e -#define E_PF_TITLE_CONFIG_NOT_FOUND MAKE_E_HC(0x565fL) // 0x8923565f -#define E_PF_TITLE_CONFIG_UPDATE_CONFLICT MAKE_E_HC(0x5660L) // 0x89235660 -#define E_PF_TITLE_CONFIG_SERIALIZATION_ERROR MAKE_E_HC(0x5661L) // 0x89235661 -#define E_PF_CATALOG_API_NOT_IMPLEMENTED MAKE_E_HC(0x5662L) // 0x89235662 -#define E_PF_CATALOG_ENTITY_INVALID MAKE_E_HC(0x5663L) // 0x89235663 -#define E_PF_CATALOG_TITLE_ID_MISSING MAKE_E_HC(0x5664L) // 0x89235664 -#define E_PF_CATALOG_PLAYER_ID_MISSING MAKE_E_HC(0x5665L) // 0x89235665 -#define E_PF_CATALOG_CLIENT_IDENTITY_INVALID MAKE_E_HC(0x5666L) // 0x89235666 -#define E_PF_CATALOG_ONE_OR_MORE_FILES_INVALID MAKE_E_HC(0x5667L) // 0x89235667 -#define E_PF_CATALOG_ITEM_METADATA_INVALID MAKE_E_HC(0x5668L) // 0x89235668 -#define E_PF_CATALOG_ITEM_ID_INVALID MAKE_E_HC(0x5669L) // 0x89235669 -#define E_PF_CATALOG_SEARCH_PARAMETER_INVALID MAKE_E_HC(0x566aL) // 0x8923566a -#define E_PF_CATALOG_FEATURE_DISABLED MAKE_E_HC(0x566bL) // 0x8923566b -#define E_PF_CATALOG_CONFIG_INVALID MAKE_E_HC(0x566cL) // 0x8923566c -#define E_PF_CATALOG_ITEM_TYPE_INVALID MAKE_E_HC(0x566dL) // 0x8923566d -#define E_PF_CATALOG_BAD_REQUEST MAKE_E_HC(0x566eL) // 0x8923566e -#define E_PF_CATALOG_TOO_MANY_REQUESTS MAKE_E_HC(0x566fL) // 0x8923566f -#define E_PF_EXPORT_INVALID_STATUS_UPDATE MAKE_E_HC(0x5670L) // 0x89235670 -#define E_PF_EXPORT_INVALID_PREFIX MAKE_E_HC(0x5671L) // 0x89235671 -#define E_PF_EXPORT_BLOB_CONTAINER_DOES_NOT_EXIST MAKE_E_HC(0x5672L) // 0x89235672 -#define E_PF_EXPORT_NOT_FOUND MAKE_E_HC(0x5673L) // 0x89235673 -#define E_PF_EXPORT_COULD_NOT_UPDATE MAKE_E_HC(0x5674L) // 0x89235674 -#define E_PF_EXPORT_INVALID_STORAGE_TYPE MAKE_E_HC(0x5675L) // 0x89235675 -#define E_PF_EXPORT_AMAZON_BUCKET_DOES_NOT_EXIST MAKE_E_HC(0x5676L) // 0x89235676 -#define E_PF_EXPORT_INVALID_BLOB_STORAGE MAKE_E_HC(0x5677L) // 0x89235677 -#define E_PF_EXPORT_KUSTO_EXCEPTION MAKE_E_HC(0x5678L) // 0x89235678 -#define E_PF_EXPORT_KUSTO_CONNECTION_FAILED MAKE_E_HC(0x5679L) // 0x89235679 -#define E_PF_EXPORT_UNKNOWN_ERROR MAKE_E_HC(0x567aL) // 0x8923567a -#define E_PF_EXPORT_CANT_EDIT_PENDING_EXPORT MAKE_E_HC(0x567bL) // 0x8923567b -#define E_PF_EXPORT_LIMIT_EXPORTS MAKE_E_HC(0x567cL) // 0x8923567c -#define E_PF_EXPORT_LIMIT_EVENTS MAKE_E_HC(0x567dL) // 0x8923567d -#define E_PF_EXPORT_INVALID_PARTITION_STATUS_MODIFICATION MAKE_E_HC(0x567eL) // 0x8923567e -#define E_PF_EXPORT_COULD_NOT_CREATE MAKE_E_HC(0x567fL) // 0x8923567f -#define E_PF_EXPORT_NO_BACKING_DATABASE_FOUND MAKE_E_HC(0x5680L) // 0x89235680 -#define E_PF_EXPORT_COULD_NOT_DELETE MAKE_E_HC(0x5681L) // 0x89235681 -#define E_PF_EXPORT_CANNOT_DETERMINE_EVENT_QUERY MAKE_E_HC(0x5682L) // 0x89235682 -#define E_PF_EXPORT_INVALID_QUERY_SCHEMA_MODIFICATION MAKE_E_HC(0x5683L) // 0x89235683 -#define E_PF_EXPORT_QUERY_SCHEMA_MISSING_REQUIRED_COLUMNS MAKE_E_HC(0x5684L) // 0x89235684 -#define E_PF_EXPORT_CANNOT_PARSE_QUERY MAKE_E_HC(0x5685L) // 0x89235685 -#define E_PF_EXPORT_CONTROL_COMMANDS_NOT_ALLOWED MAKE_E_HC(0x5686L) // 0x89235686 -#define E_PF_EXPORT_QUERY_MISSING_TABLE_REFERENCE MAKE_E_HC(0x5687L) // 0x89235687 -#define E_PF_EXPORT_INSIGHTS_V_1_DEPRECATED MAKE_E_HC(0x5688L) // 0x89235688 -#define E_PF_EXPLORER_BASIC_INVALID_QUERY_NAME MAKE_E_HC(0x5689L) // 0x89235689 -#define E_PF_EXPLORER_BASIC_INVALID_QUERY_DESCRIPTION MAKE_E_HC(0x568aL) // 0x8923568a -#define E_PF_EXPLORER_BASIC_INVALID_QUERY_CONDITIONS MAKE_E_HC(0x568bL) // 0x8923568b -#define E_PF_EXPLORER_BASIC_INVALID_QUERY_START_DATE MAKE_E_HC(0x568cL) // 0x8923568c -#define E_PF_EXPLORER_BASIC_INVALID_QUERY_END_DATE MAKE_E_HC(0x568dL) // 0x8923568d -#define E_PF_EXPLORER_BASIC_INVALID_QUERY_GROUP_BY MAKE_E_HC(0x568eL) // 0x8923568e -#define E_PF_EXPLORER_BASIC_INVALID_QUERY_AGGREGATE_TYPE MAKE_E_HC(0x568fL) // 0x8923568f -#define E_PF_EXPLORER_BASIC_INVALID_QUERY_AGGREGATE_PROPERTY MAKE_E_HC(0x5690L) // 0x89235690 -#define E_PF_EXPLORER_BASIC_LOAD_QUERIES_ERROR MAKE_E_HC(0x5691L) // 0x89235691 -#define E_PF_EXPLORER_BASIC_LOAD_QUERY_ERROR MAKE_E_HC(0x5692L) // 0x89235692 -#define E_PF_EXPLORER_BASIC_CREATE_QUERY_ERROR MAKE_E_HC(0x5693L) // 0x89235693 -#define E_PF_EXPLORER_BASIC_DELETE_QUERY_ERROR MAKE_E_HC(0x5694L) // 0x89235694 -#define E_PF_EXPLORER_BASIC_UPDATE_QUERY_ERROR MAKE_E_HC(0x5695L) // 0x89235695 -#define E_PF_EXPLORER_BASIC_SAVED_QUERIES_LIMIT MAKE_E_HC(0x5696L) // 0x89235696 -#define E_PF_EXPLORER_BASIC_SAVED_QUERY_NOT_FOUND MAKE_E_HC(0x5697L) // 0x89235697 -#define E_PF_TENANT_SHARD_MAPPER_SHARD_NOT_FOUND MAKE_E_HC(0x5698L) // 0x89235698 -#define E_PF_TITLE_NOT_ENABLED_FOR_PARTY MAKE_E_HC(0x5699L) // 0x89235699 -#define E_PF_PARTY_VERSION_NOT_FOUND MAKE_E_HC(0x569aL) // 0x8923569a -#define E_PF_MULTIPLAYER_SERVER_BUILD_REFERENCED_BY_MATCHMAKING_QUEUE MAKE_E_HC(0x569bL) // 0x8923569b -#define E_PF_MULTIPLAYER_SERVER_BUILD_REFERENCED_BY_BUILD_ALIAS MAKE_E_HC(0x569cL) // 0x8923569c -#define E_PF_MULTIPLAYER_SERVER_BUILD_ALIAS_REFERENCED_BY_MATCHMAKING_QUEUE MAKE_E_HC(0x569dL) // 0x8923569d -#define E_PF_PARTY_SERIALIZATION_ERROR MAKE_E_HC(0x569eL) // 0x8923569e -#define E_PF_EXPERIMENTATION_EXPERIMENT_STOPPED MAKE_E_HC(0x569fL) // 0x8923569f -#define E_PF_EXPERIMENTATION_EXPERIMENT_RUNNING MAKE_E_HC(0x56a0L) // 0x892356a0 -#define E_PF_EXPERIMENTATION_EXPERIMENT_NOT_FOUND MAKE_E_HC(0x56a1L) // 0x892356a1 -#define E_PF_EXPERIMENTATION_EXPERIMENT_NEVER_STARTED MAKE_E_HC(0x56a2L) // 0x892356a2 -#define E_PF_EXPERIMENTATION_EXPERIMENT_DELETED MAKE_E_HC(0x56a3L) // 0x892356a3 -#define E_PF_EXPERIMENTATION_CLIENT_TIMEOUT MAKE_E_HC(0x56a4L) // 0x892356a4 -#define E_PF_EXPERIMENTATION_INVALID_VARIANT_CONFIGURATION MAKE_E_HC(0x56a5L) // 0x892356a5 -#define E_PF_EXPERIMENTATION_INVALID_VARIABLE_CONFIGURATION MAKE_E_HC(0x56a6L) // 0x892356a6 -#define E_PF_EXPERIMENT_INVALID_ID MAKE_E_HC(0x56a7L) // 0x892356a7 -#define E_PF_EXPERIMENTATION_NO_SCORECARD MAKE_E_HC(0x56a8L) // 0x892356a8 -#define E_PF_EXPERIMENTATION_TREATMENT_ASSIGNMENT_FAILED MAKE_E_HC(0x56a9L) // 0x892356a9 -#define E_PF_EXPERIMENTATION_TREATMENT_ASSIGNMENT_DISABLED MAKE_E_HC(0x56aaL) // 0x892356aa -#define E_PF_EXPERIMENTATION_INVALID_DURATION MAKE_E_HC(0x56abL) // 0x892356ab -#define E_PF_EXPERIMENTATION_MAX_EXPERIMENTS_REACHED MAKE_E_HC(0x56acL) // 0x892356ac -#define E_PF_EXPERIMENTATION_EXPERIMENT_SCHEDULING_IN_PROGRESS MAKE_E_HC(0x56adL) // 0x892356ad -#define E_PF_EXPERIMENTATION_INVALID_END_DATE MAKE_E_HC(0x56aeL) // 0x892356ae -#define E_PF_EXPERIMENTATION_INVALID_START_DATE MAKE_E_HC(0x56afL) // 0x892356af -#define E_PF_EXPERIMENTATION_MAX_DURATION_EXCEEDED MAKE_E_HC(0x56b0L) // 0x892356b0 -#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_NOT_FOUND MAKE_E_HC(0x56b1L) // 0x892356b1 -#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_INSUFFICIENT_CAPACITY MAKE_E_HC(0x56b2L) // 0x892356b2 -#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_CANNOT_DELETE MAKE_E_HC(0x56b3L) // 0x892356b3 -#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_INVALID_TRAFFIC_ALLOCATION MAKE_E_HC(0x56b4L) // 0x892356b4 -#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_INVALID_NAME MAKE_E_HC(0x56b5L) // 0x892356b5 -#define E_PF_MAX_ACTION_DEPTH_EXCEEDED MAKE_E_HC(0x56b6L) // 0x892356b6 -#define E_PF_TITLE_NOT_ON_UPDATED_PRICING_PLAN MAKE_E_HC(0x56b7L) // 0x892356b7 -#define E_PF_SEGMENT_MANAGEMENT_TITLE_NOT_IN_FLIGHT MAKE_E_HC(0x56b8L) // 0x892356b8 -#define E_PF_SEGMENT_MANAGEMENT_NO_EXPRESSION_TREE MAKE_E_HC(0x56b9L) // 0x892356b9 -#define E_PF_SEGMENT_MANAGEMENT_TRIGGER_ACTION_COUNT_OVER_LIMIT MAKE_E_HC(0x56baL) // 0x892356ba -#define E_PF_SEGMENT_MANAGEMENT_SEGMENT_COUNT_OVER_LIMIT MAKE_E_HC(0x56bbL) // 0x892356bb -#define E_PF_SEGMENT_MANAGEMENT_INVALID_SEGMENT_ID MAKE_E_HC(0x56bcL) // 0x892356bc -#define E_PF_SEGMENT_MANAGEMENT_INVALID_INPUT MAKE_E_HC(0x56bdL) // 0x892356bd -#define E_PF_SEGMENT_MANAGEMENT_INVALID_SEGMENT_NAME MAKE_E_HC(0x56beL) // 0x892356be -#define E_PF_DELETE_SEGMENT_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56bfL) // 0x892356bf -#define E_PF_CREATE_SEGMENT_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c0L) // 0x892356c0 -#define E_PF_UPDATE_SEGMENT_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c1L) // 0x892356c1 -#define E_PF_GET_SEGMENTS_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c2L) // 0x892356c2 -#define E_PF_ASYNC_EXPORT_NOT_IN_FLIGHT MAKE_E_HC(0x56c3L) // 0x892356c3 -#define E_PF_ASYNC_EXPORT_NOT_FOUND MAKE_E_HC(0x56c4L) // 0x892356c4 -#define E_PF_ASYNC_EXPORT_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c5L) // 0x892356c5 -#define E_PF_ANALYTICS_SEGMENT_COUNT_OVER_LIMIT MAKE_E_HC(0x56c6L) // 0x892356c6 -#define E_PF_SNAPSHOT_NOT_FOUND MAKE_E_HC(0x56c7L) // 0x892356c7 -#define E_PF_INVENTORY_API_NOT_IMPLEMENTED MAKE_E_HC(0x56c8L) // 0x892356c8 -#define E_PF_LOBBY_DOES_NOT_EXIST MAKE_E_HC(0x56c9L) // 0x892356c9 -#define E_PF_LOBBY_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56caL) // 0x892356ca -#define E_PF_LOBBY_PLAYER_ALREADY_JOINED MAKE_E_HC(0x56cbL) // 0x892356cb -#define E_PF_LOBBY_NOT_JOINABLE MAKE_E_HC(0x56ccL) // 0x892356cc -#define E_PF_LOBBY_MEMBER_CANNOT_REJOIN MAKE_E_HC(0x56cdL) // 0x892356cd -#define E_PF_LOBBY_CURRENT_PLAYERS_MORE_THAN_MAX_PLAYERS MAKE_E_HC(0x56ceL) // 0x892356ce -#define E_PF_LOBBY_PLAYER_NOT_PRESENT MAKE_E_HC(0x56cfL) // 0x892356cf -#define E_PF_LOBBY_BAD_REQUEST MAKE_E_HC(0x56d0L) // 0x892356d0 -#define E_PF_LOBBY_PLAYER_MAX_LOBBY_LIMIT_EXCEEDED MAKE_E_HC(0x56d1L) // 0x892356d1 -#define E_PF_LOBBY_NEW_OWNER_MUST_BE_CONNECTED MAKE_E_HC(0x56d2L) // 0x892356d2 -#define E_PF_LOBBY_CURRENT_OWNER_STILL_CONNECTED MAKE_E_HC(0x56d3L) // 0x892356d3 -#define E_PF_LOBBY_MEMBER_IS_NOT_OWNER MAKE_E_HC(0x56d4L) // 0x892356d4 -#define E_PF_EVENT_SAMPLING_INVALID_RATIO MAKE_E_HC(0x56d5L) // 0x892356d5 -#define E_PF_EVENT_SAMPLING_INVALID_EVENT_NAMESPACE MAKE_E_HC(0x56d6L) // 0x892356d6 -#define E_PF_EVENT_SAMPLING_INVALID_EVENT_NAME MAKE_E_HC(0x56d7L) // 0x892356d7 -#define E_PF_EVENT_SAMPLING_RATIO_NOT_FOUND MAKE_E_HC(0x56d8L) // 0x892356d8 -#define E_PF_TELEMETRY_KEY_NOT_FOUND MAKE_E_HC(0x56d9L) // 0x892356d9 -#define E_PF_TELEMETRY_KEY_INVALID_NAME MAKE_E_HC(0x56daL) // 0x892356da -#define E_PF_TELEMETRY_KEY_ALREADY_EXISTS MAKE_E_HC(0x56dbL) // 0x892356db -#define E_PF_TELEMETRY_KEY_INVALID MAKE_E_HC(0x56dcL) // 0x892356dc -#define E_PF_TELEMETRY_KEY_COUNT_OVER_LIMIT MAKE_E_HC(0x56ddL) // 0x892356dd -#define E_PF_TELEMETRY_KEY_DEACTIVATED MAKE_E_HC(0x56deL) // 0x892356de -#define E_PF_TELEMETRY_KEY_LONG_INSIGHTS_RETENTION_NOT_ALLOWED MAKE_E_HC(0x56dfL) // 0x892356df -#define E_PF_EVENT_SINK_CONNECTION_INVALID MAKE_E_HC(0x56e0L) // 0x892356e0 -#define E_PF_EVENT_SINK_CONNECTION_UNAUTHORIZED MAKE_E_HC(0x56e1L) // 0x892356e1 -#define E_PF_EVENT_SINK_REGION_INVALID MAKE_E_HC(0x56e2L) // 0x892356e2 -#define E_PF_EVENT_SINK_LIMIT_EXCEEDED MAKE_E_HC(0x56e3L) // 0x892356e3 -#define E_PF_EVENT_SINK_SAS_TOKEN_INVALID MAKE_E_HC(0x56e4L) // 0x892356e4 -#define E_PF_EVENT_SINK_NOT_FOUND MAKE_E_HC(0x56e5L) // 0x892356e5 -#define E_PF_EVENT_SINK_NAME_INVALID MAKE_E_HC(0x56e6L) // 0x892356e6 -#define E_PF_EVENT_SINK_SAS_TOKEN_PERMISSION_INVALID MAKE_E_HC(0x56e7L) // 0x892356e7 -#define E_PF_EVENT_SINK_SECRET_INVALID MAKE_E_HC(0x56e8L) // 0x892356e8 -#define E_PF_EVENT_SINK_TENANT_NOT_FOUND MAKE_E_HC(0x56e9L) // 0x892356e9 -#define E_PF_EVENT_SINK_AAD_NOT_FOUND MAKE_E_HC(0x56eaL) // 0x892356ea -#define E_PF_EVENT_SINK_DATABASE_NOT_FOUND MAKE_E_HC(0x56ebL) // 0x892356eb -#define E_PF_OPERATION_CANCELED MAKE_E_HC(0x56ecL) // 0x892356ec -#define E_PF_INVALID_DISPLAY_NAME_RANDOM_SUFFIX_LENGTH MAKE_E_HC(0x56edL) // 0x892356ed -#define E_PF_ALLOW_NON_UNIQUE_PLAYER_DISPLAY_NAMES_DISABLE_NOT_ALLOWED MAKE_E_HC(0x56eeL) // 0x892356ee -#define E_PF_PARTITIONED_EVENT_INVALID MAKE_E_HC(0x56efL) // 0x892356ef -#define E_PF_PARTITIONED_EVENT_COUNT_OVER_LIMIT MAKE_E_HC(0x56f0L) // 0x892356f0 -#define E_PF_MANAGE_EVENT_NAMESPACE_INVALID MAKE_E_HC(0x56f1L) // 0x892356f1 -#define E_PF_MANAGE_EVENT_NAME_INVALID MAKE_E_HC(0x56f2L) // 0x892356f2 -#define E_PF_MANAGED_EVENT_NOT_FOUND MAKE_E_HC(0x56f3L) // 0x892356f3 -#define E_PF_MANAGE_EVENTS_INVALID_RATIO MAKE_E_HC(0x56f4L) // 0x892356f4 -#define E_PF_MANAGED_EVENT_INVALID MAKE_E_HC(0x56f5L) // 0x892356f5 -#define E_PF_PLAYER_CUSTOM_PROPERTIES_PROPERTY_NAME_TOO_LONG MAKE_E_HC(0x56f6L) // 0x892356f6 -#define E_PF_PLAYER_CUSTOM_PROPERTIES_PROPERTY_NAME_IS_INVALID MAKE_E_HC(0x56f7L) // 0x892356f7 -#define E_PF_PLAYER_CUSTOM_PROPERTIES_STRING_PROPERTY_VALUE_TOO_LONG MAKE_E_HC(0x56f8L) // 0x892356f8 -#define E_PF_PLAYER_CUSTOM_PROPERTIES_VALUE_IS_INVALID_TYPE MAKE_E_HC(0x56f9L) // 0x892356f9 -#define E_PF_PLAYER_CUSTOM_PROPERTIES_VERSION_MISMATCH MAKE_E_HC(0x56faL) // 0x892356fa -#define E_PF_PLAYER_CUSTOM_PROPERTIES_PROPERTY_COUNT_TOO_HIGH MAKE_E_HC(0x56fbL) // 0x892356fb -#define E_PF_PLAYER_CUSTOM_PROPERTIES_DUPLICATE_PROPERTY_NAME MAKE_E_HC(0x56fcL) // 0x892356fc -#define E_PF_PLAYER_CUSTOM_PROPERTIES_PROPERTY_DOES_NOT_EXIST MAKE_E_HC(0x56fdL) // 0x892356fd -#define E_PF_ADDON_ALREADY_EXISTS MAKE_E_HC(0x56feL) // 0x892356fe -#define E_PF_ADDON_DOESNT_EXIST MAKE_E_HC(0x56ffL) // 0x892356ff +#define E_PF_INVALID_STATISTIC_SCORE MAKE_E_HC(0x5645L) // 0x89235645 +#define E_PF_MATCHMAKING_ENTITY_INVALID MAKE_E_HC(0x5646L) // 0x89235646 +#define E_PF_MATCHMAKING_PLAYER_ATTRIBUTES_INVALID MAKE_E_HC(0x5647L) // 0x89235647 +#define E_PF_MATCHMAKING_QUEUE_NOT_FOUND MAKE_E_HC(0x5648L) // 0x89235648 +#define E_PF_MATCHMAKING_MATCH_NOT_FOUND MAKE_E_HC(0x5649L) // 0x89235649 +#define E_PF_MATCHMAKING_TICKET_NOT_FOUND MAKE_E_HC(0x564aL) // 0x8923564a +#define E_PF_MATCHMAKING_ALREADY_JOINED_TICKET MAKE_E_HC(0x564bL) // 0x8923564b +#define E_PF_MATCHMAKING_TICKET_ALREADY_COMPLETED MAKE_E_HC(0x564cL) // 0x8923564c +#define E_PF_MATCHMAKING_QUEUE_CONFIG_INVALID MAKE_E_HC(0x564dL) // 0x8923564d +#define E_PF_MATCHMAKING_MEMBER_PROFILE_INVALID MAKE_E_HC(0x564eL) // 0x8923564e +#define E_PF_NINTENDO_SWITCH_DEVICE_ID_NOT_LINKED MAKE_E_HC(0x564fL) // 0x8923564f +#define E_PF_MATCHMAKING_NOT_ENABLED MAKE_E_HC(0x5650L) // 0x89235650 +#define E_PF_MATCHMAKING_PLAYER_ATTRIBUTES_TOO_LARGE MAKE_E_HC(0x5651L) // 0x89235651 +#define E_PF_MATCHMAKING_NUMBER_OF_PLAYERS_IN_TICKET_TOO_LARGE MAKE_E_HC(0x5652L) // 0x89235652 +#define E_PF_MATCHMAKING_ATTRIBUTE_INVALID MAKE_E_HC(0x5653L) // 0x89235653 +#define E_PF_MATCHMAKING_PLAYER_HAS_NOT_JOINED_TICKET MAKE_E_HC(0x5654L) // 0x89235654 +#define E_PF_MATCHMAKING_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x5655L) // 0x89235655 +#define E_PF_MATCHMAKING_TICKET_MEMBERSHIP_LIMIT_EXCEEDED MAKE_E_HC(0x5656L) // 0x89235656 +#define E_PF_MATCHMAKING_UNAUTHORIZED MAKE_E_HC(0x5657L) // 0x89235657 +#define E_PF_MATCHMAKING_QUEUE_LIMIT_EXCEEDED MAKE_E_HC(0x5658L) // 0x89235658 +#define E_PF_MATCHMAKING_REQUEST_TYPE_MISMATCH MAKE_E_HC(0x5659L) // 0x89235659 +#define E_PF_MATCHMAKING_BAD_REQUEST MAKE_E_HC(0x565aL) // 0x8923565a +#define E_PF_PUB_SUB_FEATURE_NOT_ENABLED_FOR_TITLE MAKE_E_HC(0x565bL) // 0x8923565b +#define E_PF_PUB_SUB_TOO_MANY_REQUESTS MAKE_E_HC(0x565cL) // 0x8923565c +#define E_PF_PUB_SUB_CONNECTION_NOT_FOUND_FOR_ENTITY MAKE_E_HC(0x565dL) // 0x8923565d +#define E_PF_PUB_SUB_CONNECTION_HANDLE_INVALID MAKE_E_HC(0x565eL) // 0x8923565e +#define E_PF_PUB_SUB_SUBSCRIPTION_LIMIT_EXCEEDED MAKE_E_HC(0x565fL) // 0x8923565f +#define E_PF_TITLE_CONFIG_NOT_FOUND MAKE_E_HC(0x5660L) // 0x89235660 +#define E_PF_TITLE_CONFIG_UPDATE_CONFLICT MAKE_E_HC(0x5661L) // 0x89235661 +#define E_PF_TITLE_CONFIG_SERIALIZATION_ERROR MAKE_E_HC(0x5662L) // 0x89235662 +#define E_PF_CATALOG_API_NOT_IMPLEMENTED MAKE_E_HC(0x5663L) // 0x89235663 +#define E_PF_CATALOG_ENTITY_INVALID MAKE_E_HC(0x5664L) // 0x89235664 +#define E_PF_CATALOG_TITLE_ID_MISSING MAKE_E_HC(0x5665L) // 0x89235665 +#define E_PF_CATALOG_PLAYER_ID_MISSING MAKE_E_HC(0x5666L) // 0x89235666 +#define E_PF_CATALOG_CLIENT_IDENTITY_INVALID MAKE_E_HC(0x5667L) // 0x89235667 +#define E_PF_CATALOG_ONE_OR_MORE_FILES_INVALID MAKE_E_HC(0x5668L) // 0x89235668 +#define E_PF_CATALOG_ITEM_METADATA_INVALID MAKE_E_HC(0x5669L) // 0x89235669 +#define E_PF_CATALOG_ITEM_ID_INVALID MAKE_E_HC(0x566aL) // 0x8923566a +#define E_PF_CATALOG_SEARCH_PARAMETER_INVALID MAKE_E_HC(0x566bL) // 0x8923566b +#define E_PF_CATALOG_FEATURE_DISABLED MAKE_E_HC(0x566cL) // 0x8923566c +#define E_PF_CATALOG_CONFIG_INVALID MAKE_E_HC(0x566dL) // 0x8923566d +#define E_PF_CATALOG_ITEM_TYPE_INVALID MAKE_E_HC(0x566eL) // 0x8923566e +#define E_PF_CATALOG_BAD_REQUEST MAKE_E_HC(0x566fL) // 0x8923566f +#define E_PF_CATALOG_TOO_MANY_REQUESTS MAKE_E_HC(0x5670L) // 0x89235670 +#define E_PF_EXPORT_INVALID_STATUS_UPDATE MAKE_E_HC(0x5671L) // 0x89235671 +#define E_PF_EXPORT_INVALID_PREFIX MAKE_E_HC(0x5672L) // 0x89235672 +#define E_PF_EXPORT_BLOB_CONTAINER_DOES_NOT_EXIST MAKE_E_HC(0x5673L) // 0x89235673 +#define E_PF_EXPORT_NOT_FOUND MAKE_E_HC(0x5674L) // 0x89235674 +#define E_PF_EXPORT_COULD_NOT_UPDATE MAKE_E_HC(0x5675L) // 0x89235675 +#define E_PF_EXPORT_INVALID_STORAGE_TYPE MAKE_E_HC(0x5676L) // 0x89235676 +#define E_PF_EXPORT_AMAZON_BUCKET_DOES_NOT_EXIST MAKE_E_HC(0x5677L) // 0x89235677 +#define E_PF_EXPORT_INVALID_BLOB_STORAGE MAKE_E_HC(0x5678L) // 0x89235678 +#define E_PF_EXPORT_KUSTO_EXCEPTION MAKE_E_HC(0x5679L) // 0x89235679 +#define E_PF_EXPORT_KUSTO_CONNECTION_FAILED MAKE_E_HC(0x567aL) // 0x8923567a +#define E_PF_EXPORT_UNKNOWN_ERROR MAKE_E_HC(0x567bL) // 0x8923567b +#define E_PF_EXPORT_CANT_EDIT_PENDING_EXPORT MAKE_E_HC(0x567cL) // 0x8923567c +#define E_PF_EXPORT_LIMIT_EXPORTS MAKE_E_HC(0x567dL) // 0x8923567d +#define E_PF_EXPORT_LIMIT_EVENTS MAKE_E_HC(0x567eL) // 0x8923567e +#define E_PF_EXPORT_INVALID_PARTITION_STATUS_MODIFICATION MAKE_E_HC(0x567fL) // 0x8923567f +#define E_PF_EXPORT_COULD_NOT_CREATE MAKE_E_HC(0x5680L) // 0x89235680 +#define E_PF_EXPORT_NO_BACKING_DATABASE_FOUND MAKE_E_HC(0x5681L) // 0x89235681 +#define E_PF_EXPORT_COULD_NOT_DELETE MAKE_E_HC(0x5682L) // 0x89235682 +#define E_PF_EXPORT_CANNOT_DETERMINE_EVENT_QUERY MAKE_E_HC(0x5683L) // 0x89235683 +#define E_PF_EXPORT_INVALID_QUERY_SCHEMA_MODIFICATION MAKE_E_HC(0x5684L) // 0x89235684 +#define E_PF_EXPORT_QUERY_SCHEMA_MISSING_REQUIRED_COLUMNS MAKE_E_HC(0x5685L) // 0x89235685 +#define E_PF_EXPORT_CANNOT_PARSE_QUERY MAKE_E_HC(0x5686L) // 0x89235686 +#define E_PF_EXPORT_CONTROL_COMMANDS_NOT_ALLOWED MAKE_E_HC(0x5687L) // 0x89235687 +#define E_PF_EXPORT_QUERY_MISSING_TABLE_REFERENCE MAKE_E_HC(0x5688L) // 0x89235688 +#define E_PF_EXPORT_INSIGHTS_V_1_DEPRECATED MAKE_E_HC(0x5689L) // 0x89235689 +#define E_PF_EXPLORER_BASIC_INVALID_QUERY_NAME MAKE_E_HC(0x568aL) // 0x8923568a +#define E_PF_EXPLORER_BASIC_INVALID_QUERY_DESCRIPTION MAKE_E_HC(0x568bL) // 0x8923568b +#define E_PF_EXPLORER_BASIC_INVALID_QUERY_CONDITIONS MAKE_E_HC(0x568cL) // 0x8923568c +#define E_PF_EXPLORER_BASIC_INVALID_QUERY_START_DATE MAKE_E_HC(0x568dL) // 0x8923568d +#define E_PF_EXPLORER_BASIC_INVALID_QUERY_END_DATE MAKE_E_HC(0x568eL) // 0x8923568e +#define E_PF_EXPLORER_BASIC_INVALID_QUERY_GROUP_BY MAKE_E_HC(0x568fL) // 0x8923568f +#define E_PF_EXPLORER_BASIC_INVALID_QUERY_AGGREGATE_TYPE MAKE_E_HC(0x5690L) // 0x89235690 +#define E_PF_EXPLORER_BASIC_INVALID_QUERY_AGGREGATE_PROPERTY MAKE_E_HC(0x5691L) // 0x89235691 +#define E_PF_EXPLORER_BASIC_LOAD_QUERIES_ERROR MAKE_E_HC(0x5692L) // 0x89235692 +#define E_PF_EXPLORER_BASIC_LOAD_QUERY_ERROR MAKE_E_HC(0x5693L) // 0x89235693 +#define E_PF_EXPLORER_BASIC_CREATE_QUERY_ERROR MAKE_E_HC(0x5694L) // 0x89235694 +#define E_PF_EXPLORER_BASIC_DELETE_QUERY_ERROR MAKE_E_HC(0x5695L) // 0x89235695 +#define E_PF_EXPLORER_BASIC_UPDATE_QUERY_ERROR MAKE_E_HC(0x5696L) // 0x89235696 +#define E_PF_EXPLORER_BASIC_SAVED_QUERIES_LIMIT MAKE_E_HC(0x5697L) // 0x89235697 +#define E_PF_EXPLORER_BASIC_SAVED_QUERY_NOT_FOUND MAKE_E_HC(0x5698L) // 0x89235698 +#define E_PF_TENANT_SHARD_MAPPER_SHARD_NOT_FOUND MAKE_E_HC(0x5699L) // 0x89235699 +#define E_PF_TITLE_NOT_ENABLED_FOR_PARTY MAKE_E_HC(0x569aL) // 0x8923569a +#define E_PF_PARTY_VERSION_NOT_FOUND MAKE_E_HC(0x569bL) // 0x8923569b +#define E_PF_MULTIPLAYER_SERVER_BUILD_REFERENCED_BY_MATCHMAKING_QUEUE MAKE_E_HC(0x569cL) // 0x8923569c +#define E_PF_MULTIPLAYER_SERVER_BUILD_REFERENCED_BY_BUILD_ALIAS MAKE_E_HC(0x569dL) // 0x8923569d +#define E_PF_MULTIPLAYER_SERVER_BUILD_ALIAS_REFERENCED_BY_MATCHMAKING_QUEUE MAKE_E_HC(0x569eL) // 0x8923569e +#define E_PF_PARTY_SERIALIZATION_ERROR MAKE_E_HC(0x569fL) // 0x8923569f +#define E_PF_EXPERIMENTATION_EXPERIMENT_STOPPED MAKE_E_HC(0x56a0L) // 0x892356a0 +#define E_PF_EXPERIMENTATION_EXPERIMENT_RUNNING MAKE_E_HC(0x56a1L) // 0x892356a1 +#define E_PF_EXPERIMENTATION_EXPERIMENT_NOT_FOUND MAKE_E_HC(0x56a2L) // 0x892356a2 +#define E_PF_EXPERIMENTATION_EXPERIMENT_NEVER_STARTED MAKE_E_HC(0x56a3L) // 0x892356a3 +#define E_PF_EXPERIMENTATION_EXPERIMENT_DELETED MAKE_E_HC(0x56a4L) // 0x892356a4 +#define E_PF_EXPERIMENTATION_CLIENT_TIMEOUT MAKE_E_HC(0x56a5L) // 0x892356a5 +#define E_PF_EXPERIMENTATION_INVALID_VARIANT_CONFIGURATION MAKE_E_HC(0x56a6L) // 0x892356a6 +#define E_PF_EXPERIMENTATION_INVALID_VARIABLE_CONFIGURATION MAKE_E_HC(0x56a7L) // 0x892356a7 +#define E_PF_EXPERIMENT_INVALID_ID MAKE_E_HC(0x56a8L) // 0x892356a8 +#define E_PF_EXPERIMENTATION_NO_SCORECARD MAKE_E_HC(0x56a9L) // 0x892356a9 +#define E_PF_EXPERIMENTATION_TREATMENT_ASSIGNMENT_FAILED MAKE_E_HC(0x56aaL) // 0x892356aa +#define E_PF_EXPERIMENTATION_TREATMENT_ASSIGNMENT_DISABLED MAKE_E_HC(0x56abL) // 0x892356ab +#define E_PF_EXPERIMENTATION_INVALID_DURATION MAKE_E_HC(0x56acL) // 0x892356ac +#define E_PF_EXPERIMENTATION_MAX_EXPERIMENTS_REACHED MAKE_E_HC(0x56adL) // 0x892356ad +#define E_PF_EXPERIMENTATION_EXPERIMENT_SCHEDULING_IN_PROGRESS MAKE_E_HC(0x56aeL) // 0x892356ae +#define E_PF_EXPERIMENTATION_INVALID_END_DATE MAKE_E_HC(0x56afL) // 0x892356af +#define E_PF_EXPERIMENTATION_INVALID_START_DATE MAKE_E_HC(0x56b0L) // 0x892356b0 +#define E_PF_EXPERIMENTATION_MAX_DURATION_EXCEEDED MAKE_E_HC(0x56b1L) // 0x892356b1 +#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_NOT_FOUND MAKE_E_HC(0x56b2L) // 0x892356b2 +#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_INSUFFICIENT_CAPACITY MAKE_E_HC(0x56b3L) // 0x892356b3 +#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_CANNOT_DELETE MAKE_E_HC(0x56b4L) // 0x892356b4 +#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_INVALID_TRAFFIC_ALLOCATION MAKE_E_HC(0x56b5L) // 0x892356b5 +#define E_PF_EXPERIMENTATION_EXCLUSION_GROUP_INVALID_NAME MAKE_E_HC(0x56b6L) // 0x892356b6 +#define E_PF_MAX_ACTION_DEPTH_EXCEEDED MAKE_E_HC(0x56b7L) // 0x892356b7 +#define E_PF_TITLE_NOT_ON_UPDATED_PRICING_PLAN MAKE_E_HC(0x56b8L) // 0x892356b8 +#define E_PF_SEGMENT_MANAGEMENT_TITLE_NOT_IN_FLIGHT MAKE_E_HC(0x56b9L) // 0x892356b9 +#define E_PF_SEGMENT_MANAGEMENT_NO_EXPRESSION_TREE MAKE_E_HC(0x56baL) // 0x892356ba +#define E_PF_SEGMENT_MANAGEMENT_TRIGGER_ACTION_COUNT_OVER_LIMIT MAKE_E_HC(0x56bbL) // 0x892356bb +#define E_PF_SEGMENT_MANAGEMENT_SEGMENT_COUNT_OVER_LIMIT MAKE_E_HC(0x56bcL) // 0x892356bc +#define E_PF_SEGMENT_MANAGEMENT_INVALID_SEGMENT_ID MAKE_E_HC(0x56bdL) // 0x892356bd +#define E_PF_SEGMENT_MANAGEMENT_INVALID_INPUT MAKE_E_HC(0x56beL) // 0x892356be +#define E_PF_SEGMENT_MANAGEMENT_INVALID_SEGMENT_NAME MAKE_E_HC(0x56bfL) // 0x892356bf +#define E_PF_DELETE_SEGMENT_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c0L) // 0x892356c0 +#define E_PF_CREATE_SEGMENT_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c1L) // 0x892356c1 +#define E_PF_UPDATE_SEGMENT_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c2L) // 0x892356c2 +#define E_PF_GET_SEGMENTS_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c3L) // 0x892356c3 +#define E_PF_ASYNC_EXPORT_NOT_IN_FLIGHT MAKE_E_HC(0x56c4L) // 0x892356c4 +#define E_PF_ASYNC_EXPORT_NOT_FOUND MAKE_E_HC(0x56c5L) // 0x892356c5 +#define E_PF_ASYNC_EXPORT_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56c6L) // 0x892356c6 +#define E_PF_ANALYTICS_SEGMENT_COUNT_OVER_LIMIT MAKE_E_HC(0x56c7L) // 0x892356c7 +#define E_PF_SNAPSHOT_NOT_FOUND MAKE_E_HC(0x56c8L) // 0x892356c8 +#define E_PF_INVENTORY_API_NOT_IMPLEMENTED MAKE_E_HC(0x56c9L) // 0x892356c9 +#define E_PF_LOBBY_DOES_NOT_EXIST MAKE_E_HC(0x56caL) // 0x892356ca +#define E_PF_LOBBY_RATE_LIMIT_EXCEEDED MAKE_E_HC(0x56cbL) // 0x892356cb +#define E_PF_LOBBY_PLAYER_ALREADY_JOINED MAKE_E_HC(0x56ccL) // 0x892356cc +#define E_PF_LOBBY_NOT_JOINABLE MAKE_E_HC(0x56cdL) // 0x892356cd +#define E_PF_LOBBY_MEMBER_CANNOT_REJOIN MAKE_E_HC(0x56ceL) // 0x892356ce +#define E_PF_LOBBY_CURRENT_PLAYERS_MORE_THAN_MAX_PLAYERS MAKE_E_HC(0x56cfL) // 0x892356cf +#define E_PF_LOBBY_PLAYER_NOT_PRESENT MAKE_E_HC(0x56d0L) // 0x892356d0 +#define E_PF_LOBBY_BAD_REQUEST MAKE_E_HC(0x56d1L) // 0x892356d1 +#define E_PF_LOBBY_PLAYER_MAX_LOBBY_LIMIT_EXCEEDED MAKE_E_HC(0x56d2L) // 0x892356d2 +#define E_PF_LOBBY_NEW_OWNER_MUST_BE_CONNECTED MAKE_E_HC(0x56d3L) // 0x892356d3 +#define E_PF_LOBBY_CURRENT_OWNER_STILL_CONNECTED MAKE_E_HC(0x56d4L) // 0x892356d4 +#define E_PF_LOBBY_MEMBER_IS_NOT_OWNER MAKE_E_HC(0x56d5L) // 0x892356d5 +#define E_PF_EVENT_SAMPLING_INVALID_RATIO MAKE_E_HC(0x56d6L) // 0x892356d6 +#define E_PF_EVENT_SAMPLING_INVALID_EVENT_NAMESPACE MAKE_E_HC(0x56d7L) // 0x892356d7 +#define E_PF_EVENT_SAMPLING_INVALID_EVENT_NAME MAKE_E_HC(0x56d8L) // 0x892356d8 +#define E_PF_EVENT_SAMPLING_RATIO_NOT_FOUND MAKE_E_HC(0x56d9L) // 0x892356d9 +#define E_PF_TELEMETRY_KEY_NOT_FOUND MAKE_E_HC(0x56daL) // 0x892356da +#define E_PF_TELEMETRY_KEY_INVALID_NAME MAKE_E_HC(0x56dbL) // 0x892356db +#define E_PF_TELEMETRY_KEY_ALREADY_EXISTS MAKE_E_HC(0x56dcL) // 0x892356dc +#define E_PF_TELEMETRY_KEY_INVALID MAKE_E_HC(0x56ddL) // 0x892356dd +#define E_PF_TELEMETRY_KEY_COUNT_OVER_LIMIT MAKE_E_HC(0x56deL) // 0x892356de +#define E_PF_TELEMETRY_KEY_DEACTIVATED MAKE_E_HC(0x56dfL) // 0x892356df +#define E_PF_TELEMETRY_KEY_LONG_INSIGHTS_RETENTION_NOT_ALLOWED MAKE_E_HC(0x56e0L) // 0x892356e0 +#define E_PF_EVENT_SINK_CONNECTION_INVALID MAKE_E_HC(0x56e1L) // 0x892356e1 +#define E_PF_EVENT_SINK_CONNECTION_UNAUTHORIZED MAKE_E_HC(0x56e2L) // 0x892356e2 +#define E_PF_EVENT_SINK_REGION_INVALID MAKE_E_HC(0x56e3L) // 0x892356e3 +#define E_PF_EVENT_SINK_LIMIT_EXCEEDED MAKE_E_HC(0x56e4L) // 0x892356e4 +#define E_PF_EVENT_SINK_SAS_TOKEN_INVALID MAKE_E_HC(0x56e5L) // 0x892356e5 +#define E_PF_EVENT_SINK_NOT_FOUND MAKE_E_HC(0x56e6L) // 0x892356e6 +#define E_PF_EVENT_SINK_NAME_INVALID MAKE_E_HC(0x56e7L) // 0x892356e7 +#define E_PF_EVENT_SINK_SAS_TOKEN_PERMISSION_INVALID MAKE_E_HC(0x56e8L) // 0x892356e8 +#define E_PF_EVENT_SINK_SECRET_INVALID MAKE_E_HC(0x56e9L) // 0x892356e9 +#define E_PF_EVENT_SINK_TENANT_NOT_FOUND MAKE_E_HC(0x56eaL) // 0x892356ea +#define E_PF_EVENT_SINK_AAD_NOT_FOUND MAKE_E_HC(0x56ebL) // 0x892356eb +#define E_PF_EVENT_SINK_DATABASE_NOT_FOUND MAKE_E_HC(0x56ecL) // 0x892356ec +#define E_PF_OPERATION_CANCELED MAKE_E_HC(0x56edL) // 0x892356ed +#define E_PF_INVALID_DISPLAY_NAME_RANDOM_SUFFIX_LENGTH MAKE_E_HC(0x56eeL) // 0x892356ee +#define E_PF_ALLOW_NON_UNIQUE_PLAYER_DISPLAY_NAMES_DISABLE_NOT_ALLOWED MAKE_E_HC(0x56efL) // 0x892356ef +#define E_PF_PARTITIONED_EVENT_INVALID MAKE_E_HC(0x56f0L) // 0x892356f0 +#define E_PF_PARTITIONED_EVENT_COUNT_OVER_LIMIT MAKE_E_HC(0x56f1L) // 0x892356f1 +#define E_PF_MANAGE_EVENT_NAMESPACE_INVALID MAKE_E_HC(0x56f2L) // 0x892356f2 +#define E_PF_MANAGE_EVENT_NAME_INVALID MAKE_E_HC(0x56f3L) // 0x892356f3 +#define E_PF_MANAGED_EVENT_NOT_FOUND MAKE_E_HC(0x56f4L) // 0x892356f4 +#define E_PF_MANAGE_EVENTS_INVALID_RATIO MAKE_E_HC(0x56f5L) // 0x892356f5 +#define E_PF_MANAGED_EVENT_INVALID MAKE_E_HC(0x56f6L) // 0x892356f6 +#define E_PF_PLAYER_CUSTOM_PROPERTIES_PROPERTY_NAME_TOO_LONG MAKE_E_HC(0x56f7L) // 0x892356f7 +#define E_PF_PLAYER_CUSTOM_PROPERTIES_PROPERTY_NAME_IS_INVALID MAKE_E_HC(0x56f8L) // 0x892356f8 +#define E_PF_PLAYER_CUSTOM_PROPERTIES_STRING_PROPERTY_VALUE_TOO_LONG MAKE_E_HC(0x56f9L) // 0x892356f9 +#define E_PF_PLAYER_CUSTOM_PROPERTIES_VALUE_IS_INVALID_TYPE MAKE_E_HC(0x56faL) // 0x892356fa +#define E_PF_PLAYER_CUSTOM_PROPERTIES_VERSION_MISMATCH MAKE_E_HC(0x56fbL) // 0x892356fb +#define E_PF_PLAYER_CUSTOM_PROPERTIES_PROPERTY_COUNT_TOO_HIGH MAKE_E_HC(0x56fcL) // 0x892356fc +#define E_PF_PLAYER_CUSTOM_PROPERTIES_DUPLICATE_PROPERTY_NAME MAKE_E_HC(0x56fdL) // 0x892356fd +#define E_PF_PLAYER_CUSTOM_PROPERTIES_PROPERTY_DOES_NOT_EXIST MAKE_E_HC(0x56feL) // 0x892356fe +#define E_PF_ADDON_ALREADY_EXISTS MAKE_E_HC(0x56ffL) // 0x892356ff +#define E_PF_ADDON_DOESNT_EXIST MAKE_E_HC(0x5700L) // 0x89235700 } diff --git a/Source/PlayFabCore/Include/playfab/httpClient/PFHttpClient.h b/Source/PlayFabCore/Include/playfab/httpClient/PFHttpClient.h index 7060b60..8fb6dd2 100644 --- a/Source/PlayFabCore/Include/playfab/httpClient/PFHttpClient.h +++ b/Source/PlayFabCore/Include/playfab/httpClient/PFHttpClient.h @@ -755,7 +755,7 @@ enum class PFHCCompressionLevel : uint32_t High = 9 }; -#if HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM == HC_PLATFORM_GDK +#if HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM == HC_PLATFORM_GDK || HC_PLATFORM == HC_PLATFORM_NINTENDO_SWITCH /// /// Enable GZIP compression on the provided body payload. /// diff --git a/Source/PlayFabCore/Source/HttpClient/PFHttpClient.cpp b/Source/PlayFabCore/Source/HttpClient/PFHttpClient.cpp index 98377b4..f2eff65 100644 --- a/Source/PlayFabCore/Source/HttpClient/PFHttpClient.cpp +++ b/Source/PlayFabCore/Source/HttpClient/PFHttpClient.cpp @@ -411,7 +411,7 @@ PF_API PFHCHttpCallResponseGetHeaderAtIndex( ); } -#if HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM == HC_PLATFORM_GDK +#if HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM == HC_PLATFORM_GDK || HC_PLATFORM == HC_PLATFORM_NINTENDO_SWITCH PF_API PFHCHttpCallRequestEnableGzipCompression( _In_ PFHCCallHandle call, diff --git a/Source/PlayFabServices/API-List.csv b/Source/PlayFabServices/API-List.csv index 26210bd..cf2fc78 100644 --- a/Source/PlayFabServices/API-List.csv +++ b/Source/PlayFabServices/API-List.csv @@ -210,6 +210,7 @@ PF Services,AccountManagement,PFAccountManagementServerGetServerCustomIDsFromPla PF Services,AccountManagement,PFAccountManagementServerGetUserAccountInfoAsync,SecretKey,Account Management,ServerGetUserAccountInfo,false,No,Yes,No,No PF Services,AccountManagement,PFAccountManagementServerGetUserBansAsync,SecretKey,Account Management,ServerGetUserBans,false,No,Yes,No,No PF Services,AccountManagement,PFAccountManagementServerLinkNintendoServiceAccountAsync,SecretKey,Account Management,ServerLinkNintendoServiceAccount,false,No,Yes,No,No +PF Services,AccountManagement,PFAccountManagementServerLinkNintendoServiceAccountSubjectAsync,SecretKey,Account Management,ServerLinkNintendoServiceAccountSubject,false,No,Yes,No,No PF Services,AccountManagement,PFAccountManagementServerLinkNintendoSwitchDeviceIdAsync,SecretKey,Account Management,ServerLinkNintendoSwitchDeviceId,false,No,Yes,No,No PF Services,AccountManagement,PFAccountManagementServerLinkPSNAccountAsync,SecretKey,Account Management,ServerLinkPSNAccount,false,No,Yes,No,No PF Services,AccountManagement,PFAccountManagementServerLinkPSNIdAsync,SecretKey,Account Management,ServerLinkPSNId,false,No,No,No,No @@ -539,6 +540,7 @@ PF Services,MultiplayerServer,PFMultiplayerServerListQosServersForTitleAsync,Ent PF Services,MultiplayerServer,PFMultiplayerServerListTitleMultiplayerServersQuotaChangesAsync,EntityToken,MultiplayerServer,ListTitleMultiplayerServersQuotaChanges,false,No,No,No,No PF Services,MultiplayerServer,PFMultiplayerServerListVirtualMachineSummariesAsync,EntityToken,MultiplayerServer,ListVirtualMachineSummaries,false,No,No,No,No PF Services,MultiplayerServer,PFMultiplayerServerRequestMultiplayerServerAsync,EntityToken,MultiplayerServer,RequestMultiplayerServer,false,Yes,Yes,Yes,Yes +PF Services,MultiplayerServer,PFMultiplayerServerRequestPartyServiceAsync,EntityToken,MultiplayerServer,RequestPartyService,false,No,No,No,No PF Services,MultiplayerServer,PFMultiplayerServerRolloverContainerRegistryCredentialsAsync,EntityToken,MultiplayerServer,RolloverContainerRegistryCredentials,false,No,No,No,No PF Services,MultiplayerServer,PFMultiplayerServerShutdownMultiplayerServerAsync,EntityToken,MultiplayerServer,ShutdownMultiplayerServer,false,No,No,No,No PF Services,MultiplayerServer,PFMultiplayerServerUntagContainerImageAsync,EntityToken,MultiplayerServer,UntagContainerImage,false,No,No,No,No diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/PFAccountManagement.h b/Source/PlayFabServices/Include/Generated/playfab/services/PFAccountManagement.h index cfaf0f5..76ac667 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/PFAccountManagement.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/PFAccountManagement.h @@ -2826,7 +2826,7 @@ PF_API PFAccountManagementServerGetUserBansGetResult( /// Result code for this API operation. /// /// This API is available on Win32. -/// See also ServerUnlinkNintendoServiceAccountAsync. +/// See also ServerLinkNintendoServiceAccountSubjectAsync, ServerUnlinkNintendoServiceAccountAsync. /// /// Call to get the status of the operation. If the service call is unsuccessful, /// the async result will be E_PF_INVALID_IDENTITY_PROVIDER_ID, E_PF_LINKED_IDENTIFIER_ALREADY_CLAIMED, @@ -2840,6 +2840,31 @@ PF_API PFAccountManagementServerLinkNintendoServiceAccountAsync( ) noexcept; #endif +#if HC_PLATFORM == HC_PLATFORM_WIN32 +/// +/// Links the Nintendo account associated with the Nintendo Service Account subject or id to the user's +/// PlayFab account +/// +/// PFEntityHandle for a title Entity obtained using PFAuthenticationGetEntityWithSecretKeyAsync. +/// Populated request object. +/// XAsyncBlock for the async operation. +/// Result code for this API operation. +/// +/// This API is available on Win32. +/// See also ServerLinkNintendoServiceAccountAsync, ServerUnlinkNintendoServiceAccountAsync. +/// +/// Call to get the status of the operation. If the service call is unsuccessful, +/// the async result will be E_PF_INVALID_IDENTITY_PROVIDER_ID, E_PF_LINKED_IDENTIFIER_ALREADY_CLAIMED, +/// E_PF_NINTENDO_SWITCH_NOT_ENABLED_FOR_TITLE or any of the global PlayFab Service errors. See doc page +/// "Handling PlayFab Errors" for more details on error handling. +/// +PF_API PFAccountManagementServerLinkNintendoServiceAccountSubjectAsync( + _In_ PFEntityHandle titleEntityHandle, + _In_ const PFAccountManagementLinkNintendoServiceAccountSubjectRequest* request, + _Inout_ XAsyncBlock* async +) noexcept; +#endif + #if HC_PLATFORM == HC_PLATFORM_WIN32 /// /// Links the NintendoSwitchDeviceId to the user's PlayFab account @@ -3169,7 +3194,7 @@ PF_API PFAccountManagementServerSendEmailFromTemplateAsync( /// Result code for this API operation. /// /// This API is available on Win32. -/// See also ServerLinkNintendoServiceAccountAsync. +/// See also ServerLinkNintendoServiceAccountAsync, ServerLinkNintendoServiceAccountSubjectAsync. /// /// Call to get the status of the operation. If the service call is unsuccessful, /// the async result will be E_PF_ACCOUNT_NOT_LINKED, E_PF_NINTENDO_SWITCH_NOT_ENABLED_FOR_TITLE or any diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/PFAccountManagementTypes.h b/Source/PlayFabServices/Include/Generated/playfab/services/PFAccountManagementTypes.h index bb46c96..45d0bf2 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/PFAccountManagementTypes.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/PFAccountManagementTypes.h @@ -2261,6 +2261,40 @@ typedef struct PFAccountManagementServerLinkNintendoServiceAccountRequest } PFAccountManagementServerLinkNintendoServiceAccountRequest; +/// +/// PFAccountManagementLinkNintendoServiceAccountSubjectRequest data model. +/// +typedef struct PFAccountManagementLinkNintendoServiceAccountSubjectRequest +{ + /// + /// (Optional) The optional custom tags associated with the request (e.g. build number, external + /// trace identifiers, etc.). + /// + _Maybenull_ _Field_size_(customTagsCount) struct PFStringDictionaryEntry const* customTags; + + /// + /// Count of customTags + /// + uint32_t customTagsCount; + + /// + /// (Optional) If another user is already linked to a specific Nintendo Service Account, unlink the + /// other user and re-link. + /// + _Maybenull_ bool const* forceLink; + + /// + /// Unique PlayFab assigned ID of the user on whom the operation will be performed. + /// + _Null_terminated_ const char* playFabId; + + /// + /// The Nintendo Service Account subject or id to link to the PlayFab user. + /// + _Null_terminated_ const char* subject; + +} PFAccountManagementLinkNintendoServiceAccountSubjectRequest; + /// /// PFAccountManagementServerLinkNintendoSwitchDeviceIdRequest data model. /// diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/PFData.h b/Source/PlayFabServices/Include/Generated/playfab/services/PFData.h index dc8c581..36a4ae9 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/PFData.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/PFData.h @@ -22,8 +22,7 @@ extern "C" /// Result code for this API operation. /// /// This API is available on all platforms. -/// Aborts the pending upload of the requested files. See also FileDeleteFilesAsync, FileFinalizeFileUploadsAsync, -/// FileGetFilesAsync, FileInitiateFileUploadsAsync. +/// Aborts the pending upload of the requested files. /// /// When the asynchronous task is complete, call and /// to get the result. @@ -82,8 +81,7 @@ PF_API PFDataAbortFileUploadsGetResult( /// Result code for this API operation. /// /// This API is available on all platforms. -/// Deletes the requested files from the entity's profile. See also FileAbortFileUploadsAsync, FileFinalizeFileUploadsAsync, -/// FileGetFilesAsync, FileInitiateFileUploadsAsync. +/// Deletes the requested files from the entity's profile. /// /// When the asynchronous task is complete, call and to get the result. @@ -143,8 +141,7 @@ PF_API PFDataDeleteFilesGetResult( /// /// This API is available on all platforms. /// Finalizes the upload of the requested files. Verifies that the files have been successfully uploaded -/// and moves the file pointers from pending to live. See also FileAbortFileUploadsAsync, FileDeleteFilesAsync, -/// FileGetFilesAsync, FileInitiateFileUploadsAsync. +/// and moves the file pointers from pending to live. /// /// When the asynchronous task is complete, call /// and to get the result. @@ -321,8 +318,7 @@ PF_API PFDataGetObjectsGetResult( /// /// This API is available on all platforms. /// Returns URLs that may be used to upload the files for a profile 5 minutes. After using the upload -/// calls FinalizeFileUploads must be called to move the file status from pending to live. See also FileAbortFileUploadsAsync, -/// FileDeleteFilesAsync, FileFinalizeFileUploadsAsync, FileGetFilesAsync. +/// calls FinalizeFileUploads must be called to move the file status from pending to live. /// /// When the asynchronous task is complete, call /// and to get the result. @@ -385,7 +381,7 @@ PF_API PFDataInitiateFileUploadsGetResult( /// optimistic concurrency operations during update. If the current version differs from the version in /// the request the request will be ignored. If no version is set on the request then the value will always /// be updated if the values differ. Using the version value does not guarantee a write though, ConcurrentEditError -/// may still occur if multiple clients are attempting to update the same profile. See also ObjectGetObjectsAsync. +/// may still occur if multiple clients are attempting to update the same profile. . /// /// When the asynchronous task is complete, call and to get the result. diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/PFGroups.h b/Source/PlayFabServices/Include/Generated/playfab/services/PFGroups.h index 87e2150..2567f00 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/PFGroups.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/PFGroups.h @@ -74,7 +74,8 @@ PF_API PFGroupsAcceptGroupInvitationAsync( /// Adds members to a group or role. Existing members of the group will added to roles within the group, /// but if the user is not already a member of the group, only title claimants may add them to the group, /// and others must use the group application or invite system to add new members to a group. Returns -/// nothing if successful. +/// nothing if successful. See also GroupApplyToGroupAsync, GroupInviteToGroupAsync, GroupListGroupMembersAsync, +/// GroupRemoveMembersAsync. /// /// Call to get the status of the operation. If the service call is unsuccessful, /// the async result will be E_PF_ROLE_DOES_NOT_EXIST or any of the global PlayFab Service errors. See @@ -100,7 +101,8 @@ PF_API PFGroupsAddMembersAsync( /// expires. By default, if the entity has an invitation to join the group outstanding, this will accept /// the invitation to join the group instead and return an error indicating such, rather than creating /// a duplicate application to join that will need to be cleaned up later. Returns information about the -/// application or an error indicating an invitation was accepted instead. +/// application or an error indicating an invitation was accepted instead. See also GroupAcceptGroupApplicationAsync, +/// GroupListGroupApplicationsAsync, GroupRemoveGroupApplicationAsync. /// /// When the asynchronous task is complete, call and /// to get the result. @@ -185,7 +187,8 @@ PF_API PFGroupsBlockEntityAsync( /// This API is available on all platforms. /// Changes the role membership of a list of entities from one role to another in in a single operation. /// The destination role must already exist. This is equivalent to adding the entities to the destination -/// role and removing from the origin role. Returns nothing if successful. +/// role and removing from the origin role. Returns nothing if successful. See also GroupAddMembersAsync, +/// GroupCreateRoleAsync, GroupRemoveMembersAsync. /// /// Call to get the status of the operation. If the service call is unsuccessful, /// the async result will be E_PF_ROLE_DOES_NOT_EXIST or any of the global PlayFab Service errors. See @@ -207,7 +210,8 @@ PF_API PFGroupsChangeMemberRoleAsync( /// /// This API is available on all platforms. /// Creates a new group, as well as administration and member roles, based off of a title's group template. -/// Returns information about the group that was created. +/// Returns information about the group that was created. See also GroupAddMembersAsync, GroupApplyToGroupAsync, +/// GroupDeleteGroupAsync, GroupInviteToGroupAsync, GroupListGroupMembersAsync, GroupRemoveMembersAsync. /// /// When the asynchronous task is complete, call and to get the result. @@ -268,7 +272,7 @@ PF_API PFGroupsCreateGroupGetResult( /// This API is available on all platforms. /// Creates a new role within an existing group, with no members. Both the role ID and role name must /// be unique within the group, but the name can be the same as the ID. The role ID is set at creation -/// and cannot be changed. Returns information about the role that was created. +/// and cannot be changed. Returns information about the role that was created. See also GroupDeleteRoleAsync. /// /// When the asynchronous task is complete, call and to get the result. @@ -330,7 +334,7 @@ PF_API PFGroupsCreateRoleGetResult( /// Deletes a group and all roles, invitations, join requests, and blocks associated with it. Permission /// to delete is only required the group itself to execute this action. The group and data cannot be cannot /// be recovered once removed, but any abuse reports about the group will remain. No data is returned -/// in the case of success. +/// in the case of success. See also GroupCreateGroupAsync. /// /// Call to get the status of the operation. If the service call is unsuccessful, /// the async result will be one of global PlayFab Service errors. See doc page "Handling PlayFab Errors" @@ -351,7 +355,7 @@ PF_API PFGroupsDeleteGroupAsync( /// Result code for this API operation. /// /// This API is available on all platforms. -/// Returns information about the role. +/// Returns information about the role See also GroupCreateRoleAsync. /// /// Call to get the status of the operation. If the service call is unsuccessful, /// the async result will be E_PF_ROLE_DOES_NOT_EXIST, E_PF_ROLE_IS_GROUP_ADMIN, E_PF_ROLE_IS_GROUP_DEFAULT_MEMBER @@ -373,7 +377,8 @@ PF_API PFGroupsDeleteRoleAsync( /// Result code for this API operation. /// /// This API is available on all platforms. -/// Returns the ID, name, role list and other non-membership related information about a group. +/// Returns the ID, name, role list and other non-membership related information about a group. See also +/// GroupUpdateGroupAsync. /// /// When the asynchronous task is complete, call and to get the result. @@ -435,7 +440,8 @@ PF_API PFGroupsGetGroupGetResult( /// has an application to the group outstanding, this will accept the application instead and return an /// error indicating such, rather than creating a duplicate invitation to join that will need to be cleaned /// up later. Returns information about the new invitation or an error indicating an existing application -/// to join was accepted. +/// to join was accepted. See also GroupAcceptGroupInvitationAsync, GroupListGroupInvitationsAsync, GroupListMembershipOpportunitiesAsync, +/// GroupRemoveGroupInvitationAsync. /// /// When the asynchronous task is complete, call and /// to get the result. @@ -534,6 +540,7 @@ PF_API PFGroupsIsMemberGetResult( /// This API is available on all platforms. /// Lists all outstanding requests to join a group. Returns a list of all requests to join, as well as /// when the request will expire. To get the group applications for a specific entity, use ListMembershipOpportunities. +/// See also GroupAcceptGroupApplicationAsync, GroupApplyToGroupAsync, GroupRemoveGroupApplicationAsync. /// /// When the asynchronous task is complete, call /// and to get the result. @@ -590,7 +597,8 @@ PF_API PFGroupsListGroupApplicationsGetResult( /// Result code for this API operation. /// /// This API is available on all platforms. -/// Lists all entities blocked from joining a group. A list of blocked entities is returned. +/// Lists all entities blocked from joining a group. A list of blocked entities is returned See also +/// GroupBlockEntityAsync, GroupUnblockEntityAsync. /// /// When the asynchronous task is complete, call and /// to get the result. @@ -829,6 +837,7 @@ PF_API PFGroupsListMembershipGetResult( /// Lists all outstanding group applications and invitations for an entity. Anyone may call this for /// any entity, but data will only be returned for the entity or a parent of that entity. To list invitations /// or applications for a group to check if a player is trying to join, use ListGroupInvitations and ListGroupApplications. +/// See also GroupListGroupApplicationsAsync, GroupListGroupInvitationsAsync. /// /// When the asynchronous task is complete, call /// and to get the result. @@ -888,7 +897,8 @@ PF_API PFGroupsListMembershipOpportunitiesGetResult( /// Removes an existing application to join the group. This is used for both rejection of an application /// as well as withdrawing an application. The applying entity or a parent in its chain (e.g. title) may /// withdraw the application, and any caller with appropriate access in the group may reject an application. -/// No data is returned in the case of success. +/// No data is returned in the case of success. See also GroupAcceptGroupApplicationAsync, GroupApplyToGroupAsync, +/// GroupListGroupApplicationsAsync. /// /// Call to get the status of the operation. If the service call is unsuccessful, /// the async result will be E_PF_GROUP_APPLICATION_NOT_FOUND or any of the global PlayFab Service errors. @@ -956,7 +966,8 @@ PF_API PFGroupsRemoveMembersAsync( /// Result code for this API operation. /// /// This API is available on all platforms. -/// Unblocks a list of entities from joining a group. No data is returned in the case of success. +/// Unblocks a list of entities from joining a group. No data is returned in the case of success. See +/// also GroupBlockEntityAsync, GroupListGroupBlocksAsync. /// /// Call to get the status of the operation. If the service call is unsuccessful, /// the async result will be one of global PlayFab Service errors. See doc page "Handling PlayFab Errors" @@ -978,7 +989,8 @@ PF_API PFGroupsUnblockEntityAsync( /// /// This API is available on all platforms. /// Updates data about a group, such as the name or default member role. Returns information about whether -/// the update was successful. Only title claimants may modify the administration role for a group. +/// the update was successful. Only title claimants may modify the administration role for a group. See +/// also GroupCreateGroupAsync, GroupDeleteGroupAsync, GroupGetGroupAsync. /// /// When the asynchronous task is complete, call and to get the result. diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/PFMultiplayerServer.h b/Source/PlayFabServices/Include/Generated/playfab/services/PFMultiplayerServer.h index 5320ad2..6863260 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/PFMultiplayerServer.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/PFMultiplayerServer.h @@ -273,5 +273,68 @@ PF_API PFMultiplayerServerRequestMultiplayerServerGetResult( _Out_opt_ size_t* bufferUsed ) noexcept; +#if 0 +/// +/// Request a party session. +/// +/// PFEntityHandle to use for authentication. +/// Populated request object. +/// XAsyncBlock for the async operation. +/// Result code for this API operation. +/// +/// Requests a party session from a particular set of builds if build alias params is provided, in any +/// of the given preferred regions. +/// +/// When the asynchronous task is complete, call +/// and to get the result. +/// +PF_API PFMultiplayerServerRequestPartyServiceAsync( + _In_ PFEntityHandle entityHandle, + _In_ const PFMultiplayerServerRequestPartyServiceRequest* request, + _Inout_ XAsyncBlock* async +) noexcept; + +/// +/// Get the size in bytes needed to store the result of a RequestPartyService call. +/// +/// XAsyncBlock for the async operation. +/// The buffer size in bytes required for the result. +/// +/// Result code for this API operation. If the service call is unsuccessful, the result will be E_PF_PARTY_BAD_REQUEST, +/// E_PF_PARTY_INTERNAL_SERVER_ERROR, E_PF_PARTY_NOT_FOUND, E_PF_PARTY_REQUESTS_THROTTLED_FROM_RATE_LIMITER, +/// E_PF_PARTY_TOO_MANY_REQUESTS, E_PF_PARTY_UNAUTHORIZED, E_PF_PARTY_UNAVAILABLE or any of the global +/// PlayFab Service errors. See doc page "Handling PlayFab Errors" for more details on error handling. +/// +PF_API PFMultiplayerServerRequestPartyServiceGetResultSize( + _Inout_ XAsyncBlock* async, + _Out_ size_t* bufferSize +) noexcept; + +/// +/// Gets the result of a successful PFMultiplayerServerRequestPartyServiceAsync call. +/// +/// XAsyncBlock for the async operation. +/// The size of the buffer for the result object. +/// Byte buffer used for the result value and its fields. +/// Pointer to the result object. +/// The number of bytes in the provided buffer that were used. +/// +/// Result code for this API operation. If the service call is unsuccessful, the result will be E_PF_PARTY_BAD_REQUEST, +/// E_PF_PARTY_INTERNAL_SERVER_ERROR, E_PF_PARTY_NOT_FOUND, E_PF_PARTY_REQUESTS_THROTTLED_FROM_RATE_LIMITER, +/// E_PF_PARTY_TOO_MANY_REQUESTS, E_PF_PARTY_UNAUTHORIZED, E_PF_PARTY_UNAVAILABLE or any of the global +/// PlayFab Service errors. See doc page "Handling PlayFab Errors" for more details on error handling. +/// +/// +/// result is a pointer within buffer and does not need to be freed separately. +/// +PF_API PFMultiplayerServerRequestPartyServiceGetResult( + _Inout_ XAsyncBlock* async, + _In_ size_t bufferSize, + _Out_writes_bytes_to_(bufferSize, *bufferUsed) void* buffer, + _Outptr_ PFMultiplayerServerRequestPartyServiceResponse** result, + _Out_opt_ size_t* bufferUsed +) noexcept; +#endif + } \ No newline at end of file diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/PFMultiplayerServerTypes.h b/Source/PlayFabServices/Include/Generated/playfab/services/PFMultiplayerServerTypes.h index 4a76fd3..32a3669 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/PFMultiplayerServerTypes.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/PFMultiplayerServerTypes.h @@ -779,6 +779,144 @@ typedef struct PFMultiplayerServerRequestMultiplayerServerResponse } PFMultiplayerServerRequestMultiplayerServerResponse; +/// +/// PFMultiplayerServerPartyInvitationConfiguration data model. +/// +typedef struct PFMultiplayerServerPartyInvitationConfiguration +{ + /// + /// (Optional) The list of PlayFab EntityKeys that the invitation allows to authenticate into the + /// network. If this list is empty, all users are allowed to authenticate using the invitation's identifier. + /// This list may contain no more than 1024 items. + /// + _Maybenull_ _Field_size_(entityKeysCount) PFEntityKey const* const* entityKeys; + + /// + /// Count of entityKeys + /// + uint32_t entityKeysCount; + + /// + /// (Optional) The invite identifier for this party. If this value is specified, it must be no longer + /// than 127 characters. + /// + _Maybenull_ _Null_terminated_ const char* identifier; + + /// + /// (Optional) Controls which participants can revoke this invite. + /// + _Maybenull_ _Null_terminated_ const char* revocability; + +} PFMultiplayerServerPartyInvitationConfiguration; + +/// +/// PFMultiplayerServerPartyNetworkConfiguration data model. +/// +typedef struct PFMultiplayerServerPartyNetworkConfiguration +{ + /// + /// (Optional) Controls whether and how to support direct peer-to-peer connection attempts among + /// devices in the network. + /// + _Maybenull_ _Null_terminated_ const char* directPeerConnectivityOptions; + + /// + /// The maximum number of devices allowed to connect to the network. Must be between 1 and 32, inclusive. + /// + uint32_t maxDevices; + + /// + /// The maximum number of devices allowed per user. Must be greater than 0. + /// + uint32_t maxDevicesPerUser; + + /// + /// The maximum number of endpoints allowed per device. Must be between 0 and 32, inclusive. + /// + uint32_t maxEndpointsPerDevice; + + /// + /// The maximum number of unique users allowed in the network. Must be greater than 0. + /// + uint32_t maxUsers; + + /// + /// The maximum number of users allowed per device. Must be between 1 and 8, inclusive. + /// + uint32_t maxUsersPerDevice; + + /// + /// (Optional) An optionally-specified configuration for the initial invitation for this party. If + /// not provided, default configuration values will be used: a title-unique invitation identifier + /// will be generated, the revocability will be Anyone, and the EntityID list will be empty. + /// + _Maybenull_ PFMultiplayerServerPartyInvitationConfiguration const* partyInvitationConfiguration; + +} PFMultiplayerServerPartyNetworkConfiguration; + +/// +/// PFMultiplayerServerRequestPartyServiceRequest data model. Requests a party session from a particular +/// set of builds if build alias params is provided, in any of the given preferred regions. +/// +typedef struct PFMultiplayerServerRequestPartyServiceRequest +{ + /// + /// (Optional) The optional custom tags associated with the request (e.g. build number, external + /// trace identifiers, etc.). + /// + _Maybenull_ _Field_size_(customTagsCount) struct PFStringDictionaryEntry const* customTags; + + /// + /// Count of customTags + /// + uint32_t customTagsCount; + + /// + /// The network configuration for this request. + /// + PFMultiplayerServerPartyNetworkConfiguration const* networkConfiguration; + + /// + /// (Optional) A guid string party ID created track the party session over its life. + /// + _Maybenull_ _Null_terminated_ const char* partyId; + + /// + /// The preferred regions to request a party session from. The party service will iterate through + /// the regions in the specified order and allocate a party session from the first one that is available. + /// + _Field_size_(preferredRegionsCount) const char* const* preferredRegions; + + /// + /// Count of preferredRegions + /// + uint32_t preferredRegionsCount; + +} PFMultiplayerServerRequestPartyServiceRequest; + +/// +/// PFMultiplayerServerRequestPartyServiceResponse data model. +/// +typedef struct PFMultiplayerServerRequestPartyServiceResponse +{ + /// + /// (Optional) The invitation identifier supplied in the PartyInvitationConfiguration, or the PlayFab-generated + /// guid if none was supplied. + /// + _Maybenull_ _Null_terminated_ const char* invitationId; + + /// + /// (Optional) The guid string party ID of the party session. + /// + _Maybenull_ _Null_terminated_ const char* partyId; + + /// + /// (Optional) A base-64 encoded string containing the serialized network descriptor for this party. + /// + _Maybenull_ _Null_terminated_ const char* serializedNetworkDescriptor; + +} PFMultiplayerServerRequestPartyServiceResponse; + #pragma pop_macro("IN") } diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/PFProfiles.h b/Source/PlayFabServices/Include/Generated/playfab/services/PFProfiles.h index 3973c0a..f925cd3 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/PFProfiles.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/PFProfiles.h @@ -261,7 +261,7 @@ PF_API PFProfilesSetProfileLanguageGetResult( /// /// This API is available on all platforms. /// This will set the access policy statements on the given entity profile. This is not additive, any -/// existing statements will be replaced with the statements in this request. +/// existing statements will be replaced with the statements in this request. See also ProfileGetProfileAsync. /// /// When the asynchronous task is complete, call /// and to get the result. diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/PFProfilesTypes.h b/Source/PlayFabServices/Include/Generated/playfab/services/PFProfilesTypes.h index d32cf9d..c3fb703 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/PFProfilesTypes.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/PFProfilesTypes.h @@ -148,11 +148,48 @@ typedef struct PFProfilesEntityPermissionStatement } PFProfilesEntityPermissionStatement; +/// +/// PFProfilesEntityStatisticAttributeValue data model. +/// +typedef struct PFProfilesEntityStatisticAttributeValue +{ + /// + /// (Optional) Metadata associated with the Statistic. + /// + _Maybenull_ _Null_terminated_ const char* metadata; + + /// + /// (Optional) Attribute name. + /// + _Maybenull_ _Null_terminated_ const char* name; + + /// + /// (Optional) Attribute Statistic scores. + /// + _Maybenull_ _Field_size_(scoresCount) const char* const* scores; + + /// + /// Count of scores + /// + uint32_t scoresCount; + +} PFProfilesEntityStatisticAttributeValue; + /// /// PFProfilesEntityStatisticValue data model. /// typedef struct PFProfilesEntityStatisticValue { + /// + /// (Optional) Attribute Statistic values. + /// + _Maybenull_ _Field_size_(attributeStatisticsCount) struct PFProfilesEntityStatisticAttributeValueDictionaryEntry const* attributeStatistics; + + /// + /// Count of attributeStatistics + /// + uint32_t attributeStatisticsCount; + /// /// (Optional) Metadata associated with the Statistic. /// @@ -163,6 +200,16 @@ typedef struct PFProfilesEntityStatisticValue /// _Maybenull_ _Null_terminated_ const char* name; + /// + /// (Optional) Statistic scores. + /// + _Maybenull_ _Field_size_(scoresCount) const char* const* scores; + + /// + /// Count of scores + /// + uint32_t scoresCount; + /// /// (Optional) Statistic value. /// @@ -530,6 +577,15 @@ typedef struct PFProfilesEntityStatisticValueDictionaryEntry PFProfilesEntityStatisticValue const* value; } PFProfilesEntityStatisticValueDictionaryEntry; +/// +/// Dictionary entry for an associative array with PFProfilesEntityStatisticAttributeValue values. +/// +typedef struct PFProfilesEntityStatisticAttributeValueDictionaryEntry +{ + _Null_terminated_ const char* key; + PFProfilesEntityStatisticAttributeValue const* value; +} PFProfilesEntityStatisticAttributeValueDictionaryEntry; + #pragma pop_macro("IN") } diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/cpp/AccountManagementTypeWrappers.h b/Source/PlayFabServices/Include/Generated/playfab/services/cpp/AccountManagementTypeWrappers.h index 6d69511..615f1a5 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/cpp/AccountManagementTypeWrappers.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/cpp/AccountManagementTypeWrappers.h @@ -7018,6 +7018,97 @@ class PFAccountManagementServerLinkNintendoServiceAccountRequestWrapper : public String m_playFabId; }; +template class Alloc = std::allocator> +class PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper : public ModelWrapper +{ +public: + using ModelType = PFAccountManagementLinkNintendoServiceAccountSubjectRequest; + using String = typename std::basic_string, Alloc>; + template using Vector = typename std::vector>; + + PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper() = default; + + PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper(const PFAccountManagementLinkNintendoServiceAccountSubjectRequest& model) : + ModelWrapper{ model }, + m_customTags{ model.customTags, model.customTags + model.customTagsCount }, + m_forceLink{ model.forceLink ? std::optional{ *model.forceLink } : std::nullopt }, + m_playFabId{ SafeString(model.playFabId) }, + m_subject{ SafeString(model.subject) } + { + SetModelPointers(); + } + + PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper(const PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper& src) : + PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper{ src.Model() } + { + } + + PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper(PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper&& src) : + PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper{} + { + swap(*this, src); + } + + PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper& operator=(PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper src) + { + swap(*this, src); + return *this; + } + + virtual ~PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper() = default; + + friend void swap(PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper& lhs, PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper& rhs) + { + using std::swap; + swap(lhs.m_model, rhs.m_model); + swap(lhs.m_customTags, rhs.m_customTags); + swap(lhs.m_forceLink, rhs.m_forceLink); + swap(lhs.m_playFabId, rhs.m_playFabId); + swap(lhs.m_subject, rhs.m_subject); + lhs.SetModelPointers(); + rhs.SetModelPointers(); + } + + void SetCustomTags(StringDictionaryEntryVector value) + { + m_customTags = std::move(value); + this->m_model.customTags = m_customTags.empty() ? nullptr : m_customTags.data(); + this->m_model.customTagsCount = static_cast(m_customTags.size()); + } + + void SetForceLink(std::optional value) + { + m_forceLink = std::move(value); + this->m_model.forceLink = m_forceLink ? m_forceLink.operator->() : nullptr; + } + + void SetPlayFabId(String value) + { + m_playFabId = std::move(value); + this->m_model.playFabId = m_playFabId.empty() ? nullptr : m_playFabId.data(); + } + + void SetSubject(String value) + { + m_subject = std::move(value); + this->m_model.subject = m_subject.empty() ? nullptr : m_subject.data(); + } + +private: + void SetModelPointers() + { + this->m_model.customTags = m_customTags.empty() ? nullptr : m_customTags.data(); + this->m_model.forceLink = m_forceLink ? m_forceLink.operator->() : nullptr; + this->m_model.playFabId = m_playFabId.empty() ? nullptr : m_playFabId.data(); + this->m_model.subject = m_subject.empty() ? nullptr : m_subject.data(); + } + + StringDictionaryEntryVector m_customTags; + std::optional m_forceLink; + String m_playFabId; + String m_subject; +}; + template class Alloc = std::allocator> class PFAccountManagementServerLinkNintendoSwitchDeviceIdRequestWrapper : public ModelWrapper { diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/cpp/MultiplayerServerTypeWrappers.h b/Source/PlayFabServices/Include/Generated/playfab/services/cpp/MultiplayerServerTypeWrappers.h index f278286..6d0e974 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/cpp/MultiplayerServerTypeWrappers.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/cpp/MultiplayerServerTypeWrappers.h @@ -1774,5 +1774,353 @@ class PFMultiplayerServerRequestMultiplayerServerResponseWrapper : public ModelW String m_vmId; }; +template class Alloc = std::allocator> +class PFMultiplayerServerPartyInvitationConfigurationWrapper : public ModelWrapper +{ +public: + using ModelType = PFMultiplayerServerPartyInvitationConfiguration; + using String = typename std::basic_string, Alloc>; + template using Vector = typename std::vector>; + + PFMultiplayerServerPartyInvitationConfigurationWrapper() = default; + + PFMultiplayerServerPartyInvitationConfigurationWrapper(const PFMultiplayerServerPartyInvitationConfiguration& model) : + ModelWrapper{ model }, + m_entityKeys{ model.entityKeys, model.entityKeys + model.entityKeysCount }, + m_identifier{ SafeString(model.identifier) }, + m_revocability{ SafeString(model.revocability) } + { + SetModelPointers(); + } + + PFMultiplayerServerPartyInvitationConfigurationWrapper(const PFMultiplayerServerPartyInvitationConfigurationWrapper& src) : + PFMultiplayerServerPartyInvitationConfigurationWrapper{ src.Model() } + { + } + + PFMultiplayerServerPartyInvitationConfigurationWrapper(PFMultiplayerServerPartyInvitationConfigurationWrapper&& src) : + PFMultiplayerServerPartyInvitationConfigurationWrapper{} + { + swap(*this, src); + } + + PFMultiplayerServerPartyInvitationConfigurationWrapper& operator=(PFMultiplayerServerPartyInvitationConfigurationWrapper src) + { + swap(*this, src); + return *this; + } + + virtual ~PFMultiplayerServerPartyInvitationConfigurationWrapper() = default; + + friend void swap(PFMultiplayerServerPartyInvitationConfigurationWrapper& lhs, PFMultiplayerServerPartyInvitationConfigurationWrapper& rhs) + { + using std::swap; + swap(lhs.m_model, rhs.m_model); + swap(lhs.m_entityKeys, rhs.m_entityKeys); + swap(lhs.m_identifier, rhs.m_identifier); + swap(lhs.m_revocability, rhs.m_revocability); + lhs.SetModelPointers(); + rhs.SetModelPointers(); + } + + void SetEntityKeys(ModelVector, Alloc> value) + { + m_entityKeys = std::move(value); + this->m_model.entityKeys = m_entityKeys.empty() ? nullptr : m_entityKeys.data(); + this->m_model.entityKeysCount = static_cast(m_entityKeys.size()); + } + + void SetIdentifier(String value) + { + m_identifier = std::move(value); + this->m_model.identifier = m_identifier.empty() ? nullptr : m_identifier.data(); + } + + void SetRevocability(String value) + { + m_revocability = std::move(value); + this->m_model.revocability = m_revocability.empty() ? nullptr : m_revocability.data(); + } + +private: + void SetModelPointers() + { + this->m_model.entityKeys = m_entityKeys.empty() ? nullptr : m_entityKeys.data(); + this->m_model.identifier = m_identifier.empty() ? nullptr : m_identifier.data(); + this->m_model.revocability = m_revocability.empty() ? nullptr : m_revocability.data(); + } + + ModelVector, Alloc> m_entityKeys; + String m_identifier; + String m_revocability; +}; + +template class Alloc = std::allocator> +class PFMultiplayerServerPartyNetworkConfigurationWrapper : public ModelWrapper +{ +public: + using ModelType = PFMultiplayerServerPartyNetworkConfiguration; + using String = typename std::basic_string, Alloc>; + template using Vector = typename std::vector>; + + PFMultiplayerServerPartyNetworkConfigurationWrapper() = default; + + PFMultiplayerServerPartyNetworkConfigurationWrapper(const PFMultiplayerServerPartyNetworkConfiguration& model) : + ModelWrapper{ model }, + m_directPeerConnectivityOptions{ SafeString(model.directPeerConnectivityOptions) }, + m_partyInvitationConfiguration{ model.partyInvitationConfiguration ? std::optional>{ *model.partyInvitationConfiguration } : std::nullopt } + { + SetModelPointers(); + } + + PFMultiplayerServerPartyNetworkConfigurationWrapper(const PFMultiplayerServerPartyNetworkConfigurationWrapper& src) : + PFMultiplayerServerPartyNetworkConfigurationWrapper{ src.Model() } + { + } + + PFMultiplayerServerPartyNetworkConfigurationWrapper(PFMultiplayerServerPartyNetworkConfigurationWrapper&& src) : + PFMultiplayerServerPartyNetworkConfigurationWrapper{} + { + swap(*this, src); + } + + PFMultiplayerServerPartyNetworkConfigurationWrapper& operator=(PFMultiplayerServerPartyNetworkConfigurationWrapper src) + { + swap(*this, src); + return *this; + } + + virtual ~PFMultiplayerServerPartyNetworkConfigurationWrapper() = default; + + friend void swap(PFMultiplayerServerPartyNetworkConfigurationWrapper& lhs, PFMultiplayerServerPartyNetworkConfigurationWrapper& rhs) + { + using std::swap; + swap(lhs.m_model, rhs.m_model); + swap(lhs.m_directPeerConnectivityOptions, rhs.m_directPeerConnectivityOptions); + swap(lhs.m_partyInvitationConfiguration, rhs.m_partyInvitationConfiguration); + lhs.SetModelPointers(); + rhs.SetModelPointers(); + } + + void SetDirectPeerConnectivityOptions(String value) + { + m_directPeerConnectivityOptions = std::move(value); + this->m_model.directPeerConnectivityOptions = m_directPeerConnectivityOptions.empty() ? nullptr : m_directPeerConnectivityOptions.data(); + } + + void SetMaxDevices(uint32_t value) + { + this->m_model.maxDevices = value; + } + + void SetMaxDevicesPerUser(uint32_t value) + { + this->m_model.maxDevicesPerUser = value; + } + + void SetMaxEndpointsPerDevice(uint32_t value) + { + this->m_model.maxEndpointsPerDevice = value; + } + + void SetMaxUsers(uint32_t value) + { + this->m_model.maxUsers = value; + } + + void SetMaxUsersPerDevice(uint32_t value) + { + this->m_model.maxUsersPerDevice = value; + } + + void SetPartyInvitationConfiguration(std::optional> value) + { + m_partyInvitationConfiguration = std::move(value); + this->m_model.partyInvitationConfiguration = m_partyInvitationConfiguration ? &m_partyInvitationConfiguration->Model() : nullptr; + } + +private: + void SetModelPointers() + { + this->m_model.directPeerConnectivityOptions = m_directPeerConnectivityOptions.empty() ? nullptr : m_directPeerConnectivityOptions.data(); + this->m_model.partyInvitationConfiguration = m_partyInvitationConfiguration ? &m_partyInvitationConfiguration->Model() : nullptr; + } + + String m_directPeerConnectivityOptions; + std::optional> m_partyInvitationConfiguration; +}; + +template class Alloc = std::allocator> +class PFMultiplayerServerRequestPartyServiceRequestWrapper : public ModelWrapper +{ +public: + using ModelType = PFMultiplayerServerRequestPartyServiceRequest; + using String = typename std::basic_string, Alloc>; + template using Vector = typename std::vector>; + + PFMultiplayerServerRequestPartyServiceRequestWrapper() = default; + + PFMultiplayerServerRequestPartyServiceRequestWrapper(const PFMultiplayerServerRequestPartyServiceRequest& model) : + ModelWrapper{ model }, + m_customTags{ model.customTags, model.customTags + model.customTagsCount }, + m_networkConfiguration{ model.networkConfiguration ? *model.networkConfiguration : decltype(*model.networkConfiguration){} }, + m_partyId{ SafeString(model.partyId) }, + m_preferredRegions{ model.preferredRegions, model.preferredRegions + model.preferredRegionsCount } + { + SetModelPointers(); + } + + PFMultiplayerServerRequestPartyServiceRequestWrapper(const PFMultiplayerServerRequestPartyServiceRequestWrapper& src) : + PFMultiplayerServerRequestPartyServiceRequestWrapper{ src.Model() } + { + } + + PFMultiplayerServerRequestPartyServiceRequestWrapper(PFMultiplayerServerRequestPartyServiceRequestWrapper&& src) : + PFMultiplayerServerRequestPartyServiceRequestWrapper{} + { + swap(*this, src); + } + + PFMultiplayerServerRequestPartyServiceRequestWrapper& operator=(PFMultiplayerServerRequestPartyServiceRequestWrapper src) + { + swap(*this, src); + return *this; + } + + virtual ~PFMultiplayerServerRequestPartyServiceRequestWrapper() = default; + + friend void swap(PFMultiplayerServerRequestPartyServiceRequestWrapper& lhs, PFMultiplayerServerRequestPartyServiceRequestWrapper& rhs) + { + using std::swap; + swap(lhs.m_model, rhs.m_model); + swap(lhs.m_customTags, rhs.m_customTags); + swap(lhs.m_networkConfiguration, rhs.m_networkConfiguration); + swap(lhs.m_partyId, rhs.m_partyId); + swap(lhs.m_preferredRegions, rhs.m_preferredRegions); + lhs.SetModelPointers(); + rhs.SetModelPointers(); + } + + void SetCustomTags(StringDictionaryEntryVector value) + { + m_customTags = std::move(value); + this->m_model.customTags = m_customTags.empty() ? nullptr : m_customTags.data(); + this->m_model.customTagsCount = static_cast(m_customTags.size()); + } + + void SetNetworkConfiguration(PFMultiplayerServerPartyNetworkConfigurationWrapper value) + { + m_networkConfiguration = std::move(value); + this->m_model.networkConfiguration = &m_networkConfiguration.Model(); + } + + void SetPartyId(String value) + { + m_partyId = std::move(value); + this->m_model.partyId = m_partyId.empty() ? nullptr : m_partyId.data(); + } + + void SetPreferredRegions(CStringVector value) + { + m_preferredRegions = std::move(value); + this->m_model.preferredRegions = m_preferredRegions.empty() ? nullptr : m_preferredRegions.data(); + this->m_model.preferredRegionsCount = static_cast(m_preferredRegions.size()); + } + +private: + void SetModelPointers() + { + this->m_model.customTags = m_customTags.empty() ? nullptr : m_customTags.data(); + this->m_model.networkConfiguration = &m_networkConfiguration.Model(); + this->m_model.partyId = m_partyId.empty() ? nullptr : m_partyId.data(); + this->m_model.preferredRegions = m_preferredRegions.empty() ? nullptr : m_preferredRegions.data(); + } + + StringDictionaryEntryVector m_customTags; + PFMultiplayerServerPartyNetworkConfigurationWrapper m_networkConfiguration; + String m_partyId; + CStringVector m_preferredRegions; +}; + +template class Alloc = std::allocator> +class PFMultiplayerServerRequestPartyServiceResponseWrapper : public ModelWrapper +{ +public: + using ModelType = PFMultiplayerServerRequestPartyServiceResponse; + using String = typename std::basic_string, Alloc>; + template using Vector = typename std::vector>; + + PFMultiplayerServerRequestPartyServiceResponseWrapper() = default; + + PFMultiplayerServerRequestPartyServiceResponseWrapper(const PFMultiplayerServerRequestPartyServiceResponse& model) : + ModelWrapper{ model }, + m_invitationId{ SafeString(model.invitationId) }, + m_partyId{ SafeString(model.partyId) }, + m_serializedNetworkDescriptor{ SafeString(model.serializedNetworkDescriptor) } + { + SetModelPointers(); + } + + PFMultiplayerServerRequestPartyServiceResponseWrapper(const PFMultiplayerServerRequestPartyServiceResponseWrapper& src) : + PFMultiplayerServerRequestPartyServiceResponseWrapper{ src.Model() } + { + } + + PFMultiplayerServerRequestPartyServiceResponseWrapper(PFMultiplayerServerRequestPartyServiceResponseWrapper&& src) : + PFMultiplayerServerRequestPartyServiceResponseWrapper{} + { + swap(*this, src); + } + + PFMultiplayerServerRequestPartyServiceResponseWrapper& operator=(PFMultiplayerServerRequestPartyServiceResponseWrapper src) + { + swap(*this, src); + return *this; + } + + virtual ~PFMultiplayerServerRequestPartyServiceResponseWrapper() = default; + + friend void swap(PFMultiplayerServerRequestPartyServiceResponseWrapper& lhs, PFMultiplayerServerRequestPartyServiceResponseWrapper& rhs) + { + using std::swap; + swap(lhs.m_model, rhs.m_model); + swap(lhs.m_invitationId, rhs.m_invitationId); + swap(lhs.m_partyId, rhs.m_partyId); + swap(lhs.m_serializedNetworkDescriptor, rhs.m_serializedNetworkDescriptor); + lhs.SetModelPointers(); + rhs.SetModelPointers(); + } + + void SetInvitationId(String value) + { + m_invitationId = std::move(value); + this->m_model.invitationId = m_invitationId.empty() ? nullptr : m_invitationId.data(); + } + + void SetPartyId(String value) + { + m_partyId = std::move(value); + this->m_model.partyId = m_partyId.empty() ? nullptr : m_partyId.data(); + } + + void SetSerializedNetworkDescriptor(String value) + { + m_serializedNetworkDescriptor = std::move(value); + this->m_model.serializedNetworkDescriptor = m_serializedNetworkDescriptor.empty() ? nullptr : m_serializedNetworkDescriptor.data(); + } + +private: + void SetModelPointers() + { + this->m_model.invitationId = m_invitationId.empty() ? nullptr : m_invitationId.data(); + this->m_model.partyId = m_partyId.empty() ? nullptr : m_partyId.data(); + this->m_model.serializedNetworkDescriptor = m_serializedNetworkDescriptor.empty() ? nullptr : m_serializedNetworkDescriptor.data(); + } + + String m_invitationId; + String m_partyId; + String m_serializedNetworkDescriptor; +}; + } // namespace Wrappers } // namespace PlayFab diff --git a/Source/PlayFabServices/Include/Generated/playfab/services/cpp/ProfilesTypeWrappers.h b/Source/PlayFabServices/Include/Generated/playfab/services/cpp/ProfilesTypeWrappers.h index e57a97d..2f7f249 100644 --- a/Source/PlayFabServices/Include/Generated/playfab/services/cpp/ProfilesTypeWrappers.h +++ b/Source/PlayFabServices/Include/Generated/playfab/services/cpp/ProfilesTypeWrappers.h @@ -363,6 +363,88 @@ class PFProfilesEntityPermissionStatementWrapper : public ModelWrapper class Alloc = std::allocator> +class PFProfilesEntityStatisticAttributeValueWrapper : public ModelWrapper +{ +public: + using ModelType = PFProfilesEntityStatisticAttributeValue; + using DictionaryEntryType = PFProfilesEntityStatisticAttributeValueDictionaryEntry; + using String = typename std::basic_string, Alloc>; + template using Vector = typename std::vector>; + + PFProfilesEntityStatisticAttributeValueWrapper() = default; + + PFProfilesEntityStatisticAttributeValueWrapper(const PFProfilesEntityStatisticAttributeValue& model) : + ModelWrapper{ model }, + m_metadata{ SafeString(model.metadata) }, + m_name{ SafeString(model.name) }, + m_scores{ model.scores, model.scores + model.scoresCount } + { + SetModelPointers(); + } + + PFProfilesEntityStatisticAttributeValueWrapper(const PFProfilesEntityStatisticAttributeValueWrapper& src) : + PFProfilesEntityStatisticAttributeValueWrapper{ src.Model() } + { + } + + PFProfilesEntityStatisticAttributeValueWrapper(PFProfilesEntityStatisticAttributeValueWrapper&& src) : + PFProfilesEntityStatisticAttributeValueWrapper{} + { + swap(*this, src); + } + + PFProfilesEntityStatisticAttributeValueWrapper& operator=(PFProfilesEntityStatisticAttributeValueWrapper src) + { + swap(*this, src); + return *this; + } + + virtual ~PFProfilesEntityStatisticAttributeValueWrapper() = default; + + friend void swap(PFProfilesEntityStatisticAttributeValueWrapper& lhs, PFProfilesEntityStatisticAttributeValueWrapper& rhs) + { + using std::swap; + swap(lhs.m_model, rhs.m_model); + swap(lhs.m_metadata, rhs.m_metadata); + swap(lhs.m_name, rhs.m_name); + swap(lhs.m_scores, rhs.m_scores); + lhs.SetModelPointers(); + rhs.SetModelPointers(); + } + + void SetMetadata(String value) + { + m_metadata = std::move(value); + this->m_model.metadata = m_metadata.empty() ? nullptr : m_metadata.data(); + } + + void SetName(String value) + { + m_name = std::move(value); + this->m_model.name = m_name.empty() ? nullptr : m_name.data(); + } + + void SetScores(CStringVector value) + { + m_scores = std::move(value); + this->m_model.scores = m_scores.empty() ? nullptr : m_scores.data(); + this->m_model.scoresCount = static_cast(m_scores.size()); + } + +private: + void SetModelPointers() + { + this->m_model.metadata = m_metadata.empty() ? nullptr : m_metadata.data(); + this->m_model.name = m_name.empty() ? nullptr : m_name.data(); + this->m_model.scores = m_scores.empty() ? nullptr : m_scores.data(); + } + + String m_metadata; + String m_name; + CStringVector m_scores; +}; + template class Alloc = std::allocator> class PFProfilesEntityStatisticValueWrapper : public ModelWrapper { @@ -376,8 +458,10 @@ class PFProfilesEntityStatisticValueWrapper : public ModelWrapper{ model }, + m_attributeStatistics{ model.attributeStatistics, model.attributeStatistics + model.attributeStatisticsCount }, m_metadata{ SafeString(model.metadata) }, m_name{ SafeString(model.name) }, + m_scores{ model.scores, model.scores + model.scoresCount }, m_value{ model.value ? std::optional{ *model.value } : std::nullopt } { SetModelPointers(); @@ -406,13 +490,22 @@ class PFProfilesEntityStatisticValueWrapper : public ModelWrapper, Alloc> value) + { + m_attributeStatistics = std::move(value); + this->m_model.attributeStatistics = m_attributeStatistics.empty() ? nullptr : m_attributeStatistics.data(); + this->m_model.attributeStatisticsCount = static_cast(m_attributeStatistics.size()); + } + void SetMetadata(String value) { m_metadata = std::move(value); @@ -425,6 +518,13 @@ class PFProfilesEntityStatisticValueWrapper : public ModelWrapperm_model.name = m_name.empty() ? nullptr : m_name.data(); } + void SetScores(CStringVector value) + { + m_scores = std::move(value); + this->m_model.scores = m_scores.empty() ? nullptr : m_scores.data(); + this->m_model.scoresCount = static_cast(m_scores.size()); + } + void SetValue(std::optional value) { m_value = std::move(value); @@ -439,13 +539,17 @@ class PFProfilesEntityStatisticValueWrapper : public ModelWrapperm_model.attributeStatistics = m_attributeStatistics.empty() ? nullptr : m_attributeStatistics.data(); this->m_model.metadata = m_metadata.empty() ? nullptr : m_metadata.data(); this->m_model.name = m_name.empty() ? nullptr : m_name.data(); + this->m_model.scores = m_scores.empty() ? nullptr : m_scores.data(); this->m_model.value = m_value ? m_value.operator->() : nullptr; } + ModelDictionaryEntryVector, Alloc> m_attributeStatistics; String m_metadata; String m_name; + CStringVector m_scores; std::optional m_value; }; diff --git a/Source/PlayFabServices/Source/Generated/AccountManagement.cpp b/Source/PlayFabServices/Source/Generated/AccountManagement.cpp index bbaf5b3..9d975bb 100644 --- a/Source/PlayFabServices/Source/Generated/AccountManagement.cpp +++ b/Source/PlayFabServices/Source/Generated/AccountManagement.cpp @@ -2450,6 +2450,39 @@ AsyncOp AccountManagementAPI::ServerLinkNintendoServiceAccount( }); } +AsyncOp AccountManagementAPI::ServerLinkNintendoServiceAccountSubject( + Entity const& entity, + const LinkNintendoServiceAccountSubjectRequest& request, + RunContext rc +) +{ + const char* path{ "/Server/LinkNintendoServiceAccountSubject" }; + JsonValue requestBody{ request.ToJson() }; + + auto requestOp = ServicesHttpClient::MakeSecretKeyRequest( + ServicesCacheId::AccountManagementServerLinkNintendoServiceAccountSubject, + entity, + path, + requestBody, + std::move(rc) + ); + + return requestOp.Then([](Result result) -> Result + { + RETURN_IF_FAILED(result.hr); + + auto serviceResponse = result.ExtractPayload(); + if (serviceResponse.HttpCode >= 200 && serviceResponse.HttpCode < 300) + { + return S_OK; + } + else + { + return Result{ ServiceErrorToHR(serviceResponse.ErrorCode), std::move(serviceResponse.ErrorMessage) }; + } + }); +} + AsyncOp AccountManagementAPI::ServerLinkNintendoSwitchDeviceId( Entity const& entity, const ServerLinkNintendoSwitchDeviceIdRequest& request, diff --git a/Source/PlayFabServices/Source/Generated/AccountManagement.h b/Source/PlayFabServices/Source/Generated/AccountManagement.h index 243aa8d..3d60d35 100644 --- a/Source/PlayFabServices/Source/Generated/AccountManagement.h +++ b/Source/PlayFabServices/Source/Generated/AccountManagement.h @@ -92,6 +92,7 @@ class AccountManagementAPI static AsyncOp ServerGetUserAccountInfo(Entity const& entity, const GetUserAccountInfoRequest& request, RunContext rc); static AsyncOp ServerGetUserBans(Entity const& entity, const GetUserBansRequest& request, RunContext rc); static AsyncOp ServerLinkNintendoServiceAccount(Entity const& entity, const ServerLinkNintendoServiceAccountRequest& request, RunContext rc); + static AsyncOp ServerLinkNintendoServiceAccountSubject(Entity const& entity, const LinkNintendoServiceAccountSubjectRequest& request, RunContext rc); static AsyncOp ServerLinkNintendoSwitchDeviceId(Entity const& entity, const ServerLinkNintendoSwitchDeviceIdRequest& request, RunContext rc); static AsyncOp ServerLinkPSNAccount(Entity const& entity, const ServerLinkPSNAccountRequest& request, RunContext rc); static AsyncOp ServerLinkPSNId(Entity const& entity, const LinkPSNIdRequest& request, RunContext rc); diff --git a/Source/PlayFabServices/Source/Generated/AccountManagementTypes.cpp b/Source/PlayFabServices/Source/Generated/AccountManagementTypes.cpp index 4595fbe..6fe9b29 100644 --- a/Source/PlayFabServices/Source/Generated/AccountManagementTypes.cpp +++ b/Source/PlayFabServices/Source/Generated/AccountManagementTypes.cpp @@ -2552,6 +2552,21 @@ JsonValue ServerLinkNintendoServiceAccountRequest::ToJson(const PFAccountManagem return output; } +JsonValue LinkNintendoServiceAccountSubjectRequest::ToJson() const +{ + return LinkNintendoServiceAccountSubjectRequest::ToJson(this->Model()); +} + +JsonValue LinkNintendoServiceAccountSubjectRequest::ToJson(const PFAccountManagementLinkNintendoServiceAccountSubjectRequest& input) +{ + JsonValue output{ rapidjson::kObjectType }; + JsonUtils::ObjectAddMemberDictionary(output, "CustomTags", input.customTags, input.customTagsCount); + JsonUtils::ObjectAddMember(output, "ForceLink", input.forceLink); + JsonUtils::ObjectAddMember(output, "PlayFabId", input.playFabId); + JsonUtils::ObjectAddMember(output, "Subject", input.subject); + return output; +} + JsonValue ServerLinkNintendoSwitchDeviceIdRequest::ToJson() const { return ServerLinkNintendoSwitchDeviceIdRequest::ToJson(this->Model()); diff --git a/Source/PlayFabServices/Source/Generated/AccountManagementTypes.h b/Source/PlayFabServices/Source/Generated/AccountManagementTypes.h index 81e4293..d54dec7 100644 --- a/Source/PlayFabServices/Source/Generated/AccountManagementTypes.h +++ b/Source/PlayFabServices/Source/Generated/AccountManagementTypes.h @@ -1576,6 +1576,20 @@ class ServerLinkNintendoServiceAccountRequest : public Wrappers::PFAccountManage static JsonValue ToJson(const PFAccountManagementServerLinkNintendoServiceAccountRequest& input); }; +class LinkNintendoServiceAccountSubjectRequest : public Wrappers::PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper, public InputModel +{ +public: + using ModelWrapperType = typename Wrappers::PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper; + using ModelWrapperType::ModelType; + + // Constructors + using ModelWrapperType::ModelWrapperType; + + // InputModel + JsonValue ToJson() const override; + static JsonValue ToJson(const PFAccountManagementLinkNintendoServiceAccountSubjectRequest& input); +}; + class ServerLinkNintendoSwitchDeviceIdRequest : public Wrappers::PFAccountManagementServerLinkNintendoSwitchDeviceIdRequestWrapper, public InputModel { public: diff --git a/Source/PlayFabServices/Source/Generated/CacheId.h b/Source/PlayFabServices/Source/Generated/CacheId.h index 62b07c1..29706fe 100644 --- a/Source/PlayFabServices/Source/Generated/CacheId.h +++ b/Source/PlayFabServices/Source/Generated/CacheId.h @@ -95,160 +95,162 @@ enum class ServicesCacheId : uint32_t AccountManagementServerGetUserAccountInfo = 2078, AccountManagementServerGetUserBans = 2079, AccountManagementServerLinkNintendoServiceAccount = 2080, - AccountManagementServerLinkNintendoSwitchDeviceId = 2081, - AccountManagementServerLinkPSNAccount = 2082, - AccountManagementServerLinkPSNId = 2083, - AccountManagementServerLinkServerCustomId = 2084, - AccountManagementServerLinkSteamId = 2085, - AccountManagementServerLinkXboxAccount = 2086, - AccountManagementServerRevokeAllBansForUser = 2087, - AccountManagementServerRevokeBans = 2088, - AccountManagementServerSendCustomAccountRecoveryEmail = 2089, - AccountManagementServerSendEmailFromTemplate = 2090, - AccountManagementServerUnlinkNintendoServiceAccount = 2091, - AccountManagementServerUnlinkNintendoSwitchDeviceId = 2092, - AccountManagementServerUnlinkPSNAccount = 2093, - AccountManagementServerUnlinkServerCustomId = 2094, - AccountManagementServerUnlinkSteamId = 2095, - AccountManagementServerUnlinkXboxAccount = 2096, - AccountManagementServerUpdateAvatarUrl = 2097, - AccountManagementServerUpdateBans = 2098, - AccountManagementGetTitlePlayersFromXboxLiveIDs = 2099, - PlatformSpecificClientAndroidDevicePushNotificationRegistration = 2100, - PlatformSpecificClientRefreshPSNAuthToken = 2101, - PlatformSpecificClientRegisterForIOSPushNotification = 2102, - PlatformSpecificServerAwardSteamAchievement = 2103, - CloudScriptClientExecuteCloudScript = 2104, - CloudScriptServerExecuteCloudScript = 2105, - CloudScriptExecuteEntityCloudScript = 2106, - CloudScriptExecuteFunction = 2107, - SegmentsClientGetPlayerSegments = 2108, - SegmentsClientGetPlayerTags = 2109, - SegmentsServerAddPlayerTag = 2110, - SegmentsServerGetAllSegments = 2111, - SegmentsServerGetPlayerSegments = 2112, - SegmentsServerGetPlayersInSegment = 2113, - SegmentsServerGetPlayerTags = 2114, - SegmentsServerRemovePlayerTag = 2115, - TitleDataManagementClientGetPublisherData = 2116, - TitleDataManagementClientGetTime = 2117, - TitleDataManagementClientGetTitleData = 2118, - TitleDataManagementClientGetTitleNews = 2119, - TitleDataManagementServerGetPublisherData = 2120, - TitleDataManagementServerGetTime = 2121, - TitleDataManagementServerGetTitleData = 2122, - TitleDataManagementServerGetTitleInternalData = 2123, - TitleDataManagementServerGetTitleNews = 2124, - TitleDataManagementServerSetPublisherData = 2125, - TitleDataManagementServerSetTitleData = 2126, - TitleDataManagementServerSetTitleInternalData = 2127, - PlayerDataManagementClientGetUserData = 2128, - PlayerDataManagementClientGetUserPublisherData = 2129, - PlayerDataManagementClientGetUserPublisherReadOnlyData = 2130, - PlayerDataManagementClientGetUserReadOnlyData = 2131, - PlayerDataManagementClientUpdateUserData = 2132, - PlayerDataManagementClientUpdateUserPublisherData = 2133, - PlayerDataManagementServerGetUserData = 2134, - PlayerDataManagementServerGetUserInternalData = 2135, - PlayerDataManagementServerGetUserPublisherData = 2136, - PlayerDataManagementServerGetUserPublisherInternalData = 2137, - PlayerDataManagementServerGetUserPublisherReadOnlyData = 2138, - PlayerDataManagementServerGetUserReadOnlyData = 2139, - PlayerDataManagementServerUpdateUserData = 2140, - PlayerDataManagementServerUpdateUserInternalData = 2141, - PlayerDataManagementServerUpdateUserPublisherData = 2142, - PlayerDataManagementServerUpdateUserPublisherInternalData = 2143, - PlayerDataManagementServerUpdateUserPublisherReadOnlyData = 2144, - PlayerDataManagementServerUpdateUserReadOnlyData = 2145, - PushNotificationsServerSendPushNotification = 2146, - PushNotificationsServerSendPushNotificationFromTemplate = 2147, - DataAbortFileUploads = 2148, - DataDeleteFiles = 2149, - DataFinalizeFileUploads = 2150, - DataGetFiles = 2151, - DataGetObjects = 2152, - DataInitiateFileUploads = 2153, - DataSetObjects = 2154, - InventoryAddInventoryItems = 2155, - InventoryDeleteInventoryCollection = 2156, - InventoryDeleteInventoryItems = 2157, - InventoryExecuteInventoryOperations = 2158, - InventoryGetInventoryCollectionIds = 2159, - InventoryGetInventoryItems = 2160, - InventoryGetMicrosoftStoreAccessTokens = 2161, - InventoryGetTransactionHistory = 2162, - InventoryPurchaseInventoryItems = 2163, - InventoryRedeemAppleAppStoreInventoryItems = 2164, - InventoryRedeemGooglePlayInventoryItems = 2165, - InventoryRedeemMicrosoftStoreInventoryItems = 2166, - InventoryRedeemNintendoEShopInventoryItems = 2167, - InventoryRedeemPlayStationStoreInventoryItems = 2168, - InventoryRedeemSteamInventoryItems = 2169, - InventorySubtractInventoryItems = 2170, - InventoryTransferInventoryItems = 2171, - InventoryUpdateInventoryItems = 2172, - CatalogCreateDraftItem = 2173, - CatalogCreateUploadUrls = 2174, - CatalogDeleteEntityItemReviews = 2175, - CatalogDeleteItem = 2176, - CatalogGetCatalogConfig = 2177, - CatalogGetDraftItem = 2178, - CatalogGetDraftItems = 2179, - CatalogGetEntityDraftItems = 2180, - CatalogGetEntityItemReview = 2181, - CatalogGetItem = 2182, - CatalogGetItemContainers = 2183, - CatalogGetItemModerationState = 2184, - CatalogGetItemPublishStatus = 2185, - CatalogGetItemReviews = 2186, - CatalogGetItemReviewSummary = 2187, - CatalogGetItems = 2188, - CatalogPublishDraftItem = 2189, - CatalogReportItem = 2190, - CatalogReportItemReview = 2191, - CatalogReviewItem = 2192, - CatalogSearchItems = 2193, - CatalogSetItemModerationState = 2194, - CatalogSubmitItemReviewVote = 2195, - CatalogTakedownItemReviews = 2196, - CatalogUpdateCatalogConfig = 2197, - CatalogUpdateDraftItem = 2198, - ExperimentationGetTreatmentAssignment = 2199, - GroupsAcceptGroupApplication = 2200, - GroupsAcceptGroupInvitation = 2201, - GroupsAddMembers = 2202, - GroupsApplyToGroup = 2203, - GroupsBlockEntity = 2204, - GroupsChangeMemberRole = 2205, - GroupsCreateGroup = 2206, - GroupsCreateRole = 2207, - GroupsDeleteGroup = 2208, - GroupsDeleteRole = 2209, - GroupsGetGroup = 2210, - GroupsInviteToGroup = 2211, - GroupsIsMember = 2212, - GroupsListGroupApplications = 2213, - GroupsListGroupBlocks = 2214, - GroupsListGroupInvitations = 2215, - GroupsListGroupMembers = 2216, - GroupsListMembership = 2217, - GroupsListMembershipOpportunities = 2218, - GroupsRemoveGroupApplication = 2219, - GroupsRemoveGroupInvitation = 2220, - GroupsRemoveMembers = 2221, - GroupsUnblockEntity = 2222, - GroupsUpdateGroup = 2223, - GroupsUpdateRole = 2224, - LocalizationGetLanguageList = 2225, - MultiplayerServerListBuildAliases = 2226, - MultiplayerServerListBuildSummariesV2 = 2227, - MultiplayerServerListQosServersForTitle = 2228, - MultiplayerServerRequestMultiplayerServer = 2229, - ProfilesGetProfile = 2230, - ProfilesGetProfiles = 2231, - ProfilesGetTitlePlayersFromMasterPlayerAccountIds = 2232, - ProfilesSetProfileLanguage = 2233, - ProfilesSetProfilePolicy = 2234, + AccountManagementServerLinkNintendoServiceAccountSubject = 2081, + AccountManagementServerLinkNintendoSwitchDeviceId = 2082, + AccountManagementServerLinkPSNAccount = 2083, + AccountManagementServerLinkPSNId = 2084, + AccountManagementServerLinkServerCustomId = 2085, + AccountManagementServerLinkSteamId = 2086, + AccountManagementServerLinkXboxAccount = 2087, + AccountManagementServerRevokeAllBansForUser = 2088, + AccountManagementServerRevokeBans = 2089, + AccountManagementServerSendCustomAccountRecoveryEmail = 2090, + AccountManagementServerSendEmailFromTemplate = 2091, + AccountManagementServerUnlinkNintendoServiceAccount = 2092, + AccountManagementServerUnlinkNintendoSwitchDeviceId = 2093, + AccountManagementServerUnlinkPSNAccount = 2094, + AccountManagementServerUnlinkServerCustomId = 2095, + AccountManagementServerUnlinkSteamId = 2096, + AccountManagementServerUnlinkXboxAccount = 2097, + AccountManagementServerUpdateAvatarUrl = 2098, + AccountManagementServerUpdateBans = 2099, + AccountManagementGetTitlePlayersFromXboxLiveIDs = 2100, + PlatformSpecificClientAndroidDevicePushNotificationRegistration = 2101, + PlatformSpecificClientRefreshPSNAuthToken = 2102, + PlatformSpecificClientRegisterForIOSPushNotification = 2103, + PlatformSpecificServerAwardSteamAchievement = 2104, + CloudScriptClientExecuteCloudScript = 2105, + CloudScriptServerExecuteCloudScript = 2106, + CloudScriptExecuteEntityCloudScript = 2107, + CloudScriptExecuteFunction = 2108, + SegmentsClientGetPlayerSegments = 2109, + SegmentsClientGetPlayerTags = 2110, + SegmentsServerAddPlayerTag = 2111, + SegmentsServerGetAllSegments = 2112, + SegmentsServerGetPlayerSegments = 2113, + SegmentsServerGetPlayersInSegment = 2114, + SegmentsServerGetPlayerTags = 2115, + SegmentsServerRemovePlayerTag = 2116, + TitleDataManagementClientGetPublisherData = 2117, + TitleDataManagementClientGetTime = 2118, + TitleDataManagementClientGetTitleData = 2119, + TitleDataManagementClientGetTitleNews = 2120, + TitleDataManagementServerGetPublisherData = 2121, + TitleDataManagementServerGetTime = 2122, + TitleDataManagementServerGetTitleData = 2123, + TitleDataManagementServerGetTitleInternalData = 2124, + TitleDataManagementServerGetTitleNews = 2125, + TitleDataManagementServerSetPublisherData = 2126, + TitleDataManagementServerSetTitleData = 2127, + TitleDataManagementServerSetTitleInternalData = 2128, + PlayerDataManagementClientGetUserData = 2129, + PlayerDataManagementClientGetUserPublisherData = 2130, + PlayerDataManagementClientGetUserPublisherReadOnlyData = 2131, + PlayerDataManagementClientGetUserReadOnlyData = 2132, + PlayerDataManagementClientUpdateUserData = 2133, + PlayerDataManagementClientUpdateUserPublisherData = 2134, + PlayerDataManagementServerGetUserData = 2135, + PlayerDataManagementServerGetUserInternalData = 2136, + PlayerDataManagementServerGetUserPublisherData = 2137, + PlayerDataManagementServerGetUserPublisherInternalData = 2138, + PlayerDataManagementServerGetUserPublisherReadOnlyData = 2139, + PlayerDataManagementServerGetUserReadOnlyData = 2140, + PlayerDataManagementServerUpdateUserData = 2141, + PlayerDataManagementServerUpdateUserInternalData = 2142, + PlayerDataManagementServerUpdateUserPublisherData = 2143, + PlayerDataManagementServerUpdateUserPublisherInternalData = 2144, + PlayerDataManagementServerUpdateUserPublisherReadOnlyData = 2145, + PlayerDataManagementServerUpdateUserReadOnlyData = 2146, + PushNotificationsServerSendPushNotification = 2147, + PushNotificationsServerSendPushNotificationFromTemplate = 2148, + DataAbortFileUploads = 2149, + DataDeleteFiles = 2150, + DataFinalizeFileUploads = 2151, + DataGetFiles = 2152, + DataGetObjects = 2153, + DataInitiateFileUploads = 2154, + DataSetObjects = 2155, + InventoryAddInventoryItems = 2156, + InventoryDeleteInventoryCollection = 2157, + InventoryDeleteInventoryItems = 2158, + InventoryExecuteInventoryOperations = 2159, + InventoryGetInventoryCollectionIds = 2160, + InventoryGetInventoryItems = 2161, + InventoryGetMicrosoftStoreAccessTokens = 2162, + InventoryGetTransactionHistory = 2163, + InventoryPurchaseInventoryItems = 2164, + InventoryRedeemAppleAppStoreInventoryItems = 2165, + InventoryRedeemGooglePlayInventoryItems = 2166, + InventoryRedeemMicrosoftStoreInventoryItems = 2167, + InventoryRedeemNintendoEShopInventoryItems = 2168, + InventoryRedeemPlayStationStoreInventoryItems = 2169, + InventoryRedeemSteamInventoryItems = 2170, + InventorySubtractInventoryItems = 2171, + InventoryTransferInventoryItems = 2172, + InventoryUpdateInventoryItems = 2173, + CatalogCreateDraftItem = 2174, + CatalogCreateUploadUrls = 2175, + CatalogDeleteEntityItemReviews = 2176, + CatalogDeleteItem = 2177, + CatalogGetCatalogConfig = 2178, + CatalogGetDraftItem = 2179, + CatalogGetDraftItems = 2180, + CatalogGetEntityDraftItems = 2181, + CatalogGetEntityItemReview = 2182, + CatalogGetItem = 2183, + CatalogGetItemContainers = 2184, + CatalogGetItemModerationState = 2185, + CatalogGetItemPublishStatus = 2186, + CatalogGetItemReviews = 2187, + CatalogGetItemReviewSummary = 2188, + CatalogGetItems = 2189, + CatalogPublishDraftItem = 2190, + CatalogReportItem = 2191, + CatalogReportItemReview = 2192, + CatalogReviewItem = 2193, + CatalogSearchItems = 2194, + CatalogSetItemModerationState = 2195, + CatalogSubmitItemReviewVote = 2196, + CatalogTakedownItemReviews = 2197, + CatalogUpdateCatalogConfig = 2198, + CatalogUpdateDraftItem = 2199, + ExperimentationGetTreatmentAssignment = 2200, + GroupsAcceptGroupApplication = 2201, + GroupsAcceptGroupInvitation = 2202, + GroupsAddMembers = 2203, + GroupsApplyToGroup = 2204, + GroupsBlockEntity = 2205, + GroupsChangeMemberRole = 2206, + GroupsCreateGroup = 2207, + GroupsCreateRole = 2208, + GroupsDeleteGroup = 2209, + GroupsDeleteRole = 2210, + GroupsGetGroup = 2211, + GroupsInviteToGroup = 2212, + GroupsIsMember = 2213, + GroupsListGroupApplications = 2214, + GroupsListGroupBlocks = 2215, + GroupsListGroupInvitations = 2216, + GroupsListGroupMembers = 2217, + GroupsListMembership = 2218, + GroupsListMembershipOpportunities = 2219, + GroupsRemoveGroupApplication = 2220, + GroupsRemoveGroupInvitation = 2221, + GroupsRemoveMembers = 2222, + GroupsUnblockEntity = 2223, + GroupsUpdateGroup = 2224, + GroupsUpdateRole = 2225, + LocalizationGetLanguageList = 2226, + MultiplayerServerListBuildAliases = 2227, + MultiplayerServerListBuildSummariesV2 = 2228, + MultiplayerServerListQosServersForTitle = 2229, + MultiplayerServerRequestMultiplayerServer = 2230, + MultiplayerServerRequestPartyService = 2231, + ProfilesGetProfile = 2232, + ProfilesGetProfiles = 2233, + ProfilesGetTitlePlayersFromMasterPlayerAccountIds = 2234, + ProfilesSetProfileLanguage = 2235, + ProfilesSetProfilePolicy = 2236, }; } // namespace PlayFab \ No newline at end of file diff --git a/Source/PlayFabServices/Source/Generated/MultiplayerServer.cpp b/Source/PlayFabServices/Source/Generated/MultiplayerServer.cpp index 2020fec..16ffae4 100644 --- a/Source/PlayFabServices/Source/Generated/MultiplayerServer.cpp +++ b/Source/PlayFabServices/Source/Generated/MultiplayerServer.cpp @@ -148,5 +148,40 @@ AsyncOp MultiplayerServerAPI::RequestMultiplay }); } +AsyncOp MultiplayerServerAPI::RequestPartyService( + Entity const& entity, + const RequestPartyServiceRequest& request, + RunContext rc +) +{ + const char* path{ "/Party/RequestPartyService" }; + JsonValue requestBody{ request.ToJson() }; + + auto requestOp = ServicesHttpClient::MakeEntityRequest( + ServicesCacheId::MultiplayerServerRequestPartyService, + entity, + path, + requestBody, + std::move(rc) + ); + + return requestOp.Then([](Result result) -> Result + { + RETURN_IF_FAILED(result.hr); + + auto serviceResponse = result.ExtractPayload(); + if (serviceResponse.HttpCode >= 200 && serviceResponse.HttpCode < 300) + { + RequestPartyServiceResponse resultModel; + RETURN_IF_FAILED(resultModel.FromJson(serviceResponse.Data)); + return resultModel; + } + else + { + return Result{ ServiceErrorToHR(serviceResponse.ErrorCode), std::move(serviceResponse.ErrorMessage) }; + } + }); +} + } // namespace MultiplayerServer } // namespace PlayFab diff --git a/Source/PlayFabServices/Source/Generated/MultiplayerServer.h b/Source/PlayFabServices/Source/Generated/MultiplayerServer.h index 4b7a910..7a02800 100644 --- a/Source/PlayFabServices/Source/Generated/MultiplayerServer.h +++ b/Source/PlayFabServices/Source/Generated/MultiplayerServer.h @@ -24,6 +24,7 @@ class MultiplayerServerAPI static AsyncOp ListBuildSummariesV2(Entity const& entity, const ListBuildSummariesRequest& request, RunContext rc); static AsyncOp ListQosServersForTitle(Entity const& entity, const ListQosServersForTitleRequest& request, RunContext rc); static AsyncOp RequestMultiplayerServer(Entity const& entity, const RequestMultiplayerServerRequest& request, RunContext rc); + static AsyncOp RequestPartyService(Entity const& entity, const RequestPartyServiceRequest& request, RunContext rc); }; } // namespace MultiplayerServer diff --git a/Source/PlayFabServices/Source/Generated/MultiplayerServerTypes.cpp b/Source/PlayFabServices/Source/Generated/MultiplayerServerTypes.cpp index 98e583e..caf3a51 100644 --- a/Source/PlayFabServices/Source/Generated/MultiplayerServerTypes.cpp +++ b/Source/PlayFabServices/Source/Generated/MultiplayerServerTypes.cpp @@ -1189,5 +1189,118 @@ HRESULT RequestMultiplayerServerResponse::Copy(const PFMultiplayerServerRequestM return S_OK; } +JsonValue PartyInvitationConfiguration::ToJson() const +{ + return PartyInvitationConfiguration::ToJson(this->Model()); +} + +JsonValue PartyInvitationConfiguration::ToJson(const PFMultiplayerServerPartyInvitationConfiguration& input) +{ + JsonValue output{ rapidjson::kObjectType }; + JsonUtils::ObjectAddMemberArray(output, "EntityKeys", input.entityKeys, input.entityKeysCount); + JsonUtils::ObjectAddMember(output, "Identifier", input.identifier); + JsonUtils::ObjectAddMember(output, "Revocability", input.revocability); + return output; +} + +JsonValue PartyNetworkConfiguration::ToJson() const +{ + return PartyNetworkConfiguration::ToJson(this->Model()); +} + +JsonValue PartyNetworkConfiguration::ToJson(const PFMultiplayerServerPartyNetworkConfiguration& input) +{ + JsonValue output{ rapidjson::kObjectType }; + JsonUtils::ObjectAddMember(output, "DirectPeerConnectivityOptions", input.directPeerConnectivityOptions); + JsonUtils::ObjectAddMember(output, "MaxDevices", input.maxDevices); + JsonUtils::ObjectAddMember(output, "MaxDevicesPerUser", input.maxDevicesPerUser); + JsonUtils::ObjectAddMember(output, "MaxEndpointsPerDevice", input.maxEndpointsPerDevice); + JsonUtils::ObjectAddMember(output, "MaxUsers", input.maxUsers); + JsonUtils::ObjectAddMember(output, "MaxUsersPerDevice", input.maxUsersPerDevice); + JsonUtils::ObjectAddMember(output, "PartyInvitationConfiguration", input.partyInvitationConfiguration); + return output; +} + +JsonValue RequestPartyServiceRequest::ToJson() const +{ + return RequestPartyServiceRequest::ToJson(this->Model()); +} + +JsonValue RequestPartyServiceRequest::ToJson(const PFMultiplayerServerRequestPartyServiceRequest& input) +{ + JsonValue output{ rapidjson::kObjectType }; + JsonUtils::ObjectAddMemberDictionary(output, "CustomTags", input.customTags, input.customTagsCount); + JsonUtils::ObjectAddMember(output, "NetworkConfiguration", input.networkConfiguration); + JsonUtils::ObjectAddMember(output, "PartyId", input.partyId); + JsonUtils::ObjectAddMemberArray(output, "PreferredRegions", input.preferredRegions, input.preferredRegionsCount); + return output; +} + +HRESULT RequestPartyServiceResponse::FromJson(const JsonValue& input) +{ + String invitationId{}; + RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "InvitationId", invitationId)); + this->SetInvitationId(std::move(invitationId)); + + String partyId{}; + RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "PartyId", partyId)); + this->SetPartyId(std::move(partyId)); + + String serializedNetworkDescriptor{}; + RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "SerializedNetworkDescriptor", serializedNetworkDescriptor)); + this->SetSerializedNetworkDescriptor(std::move(serializedNetworkDescriptor)); + + return S_OK; +} + +size_t RequestPartyServiceResponse::RequiredBufferSize() const +{ + return RequiredBufferSize(this->Model()); +} + +Result RequestPartyServiceResponse::Copy(ModelBuffer& buffer) const +{ + return buffer.CopyTo(&this->Model()); +} + +size_t RequestPartyServiceResponse::RequiredBufferSize(const PFMultiplayerServerRequestPartyServiceResponse& model) +{ + size_t requiredSize{ alignof(ModelType) + sizeof(ModelType) }; + if (model.invitationId) + { + requiredSize += (std::strlen(model.invitationId) + 1); + } + if (model.partyId) + { + requiredSize += (std::strlen(model.partyId) + 1); + } + if (model.serializedNetworkDescriptor) + { + requiredSize += (std::strlen(model.serializedNetworkDescriptor) + 1); + } + return requiredSize; +} + +HRESULT RequestPartyServiceResponse::Copy(const PFMultiplayerServerRequestPartyServiceResponse& input, PFMultiplayerServerRequestPartyServiceResponse& output, ModelBuffer& buffer) +{ + output = input; + { + auto propCopyResult = buffer.CopyTo(input.invitationId); + RETURN_IF_FAILED(propCopyResult.hr); + output.invitationId = propCopyResult.ExtractPayload(); + } + { + auto propCopyResult = buffer.CopyTo(input.partyId); + RETURN_IF_FAILED(propCopyResult.hr); + output.partyId = propCopyResult.ExtractPayload(); + } + { + auto propCopyResult = buffer.CopyTo(input.serializedNetworkDescriptor); + RETURN_IF_FAILED(propCopyResult.hr); + output.serializedNetworkDescriptor = propCopyResult.ExtractPayload(); + } + return S_OK; +} + } // namespace MultiplayerServer } // namespace PlayFab diff --git a/Source/PlayFabServices/Source/Generated/MultiplayerServerTypes.h b/Source/PlayFabServices/Source/Generated/MultiplayerServerTypes.h index c1af908..1b4f363 100644 --- a/Source/PlayFabServices/Source/Generated/MultiplayerServerTypes.h +++ b/Source/PlayFabServices/Source/Generated/MultiplayerServerTypes.h @@ -403,6 +403,67 @@ class RequestMultiplayerServerResponse : public Wrappers::PFMultiplayerServerReq static HRESULT Copy(const PFMultiplayerServerRequestMultiplayerServerResponse& input, PFMultiplayerServerRequestMultiplayerServerResponse& output, ModelBuffer& buffer); }; +class PartyInvitationConfiguration : public Wrappers::PFMultiplayerServerPartyInvitationConfigurationWrapper, public InputModel +{ +public: + using ModelWrapperType = typename Wrappers::PFMultiplayerServerPartyInvitationConfigurationWrapper; + using ModelWrapperType::ModelType; + + // Constructors + using ModelWrapperType::ModelWrapperType; + + // InputModel + JsonValue ToJson() const override; + static JsonValue ToJson(const PFMultiplayerServerPartyInvitationConfiguration& input); +}; + +class PartyNetworkConfiguration : public Wrappers::PFMultiplayerServerPartyNetworkConfigurationWrapper, public InputModel +{ +public: + using ModelWrapperType = typename Wrappers::PFMultiplayerServerPartyNetworkConfigurationWrapper; + using ModelWrapperType::ModelType; + + // Constructors + using ModelWrapperType::ModelWrapperType; + + // InputModel + JsonValue ToJson() const override; + static JsonValue ToJson(const PFMultiplayerServerPartyNetworkConfiguration& input); +}; + +class RequestPartyServiceRequest : public Wrappers::PFMultiplayerServerRequestPartyServiceRequestWrapper, public InputModel +{ +public: + using ModelWrapperType = typename Wrappers::PFMultiplayerServerRequestPartyServiceRequestWrapper; + using ModelWrapperType::ModelType; + + // Constructors + using ModelWrapperType::ModelWrapperType; + + // InputModel + JsonValue ToJson() const override; + static JsonValue ToJson(const PFMultiplayerServerRequestPartyServiceRequest& input); +}; + +class RequestPartyServiceResponse : public Wrappers::PFMultiplayerServerRequestPartyServiceResponseWrapper, public ServiceOutputModel, public ClientOutputModel +{ +public: + using ModelWrapperType = typename Wrappers::PFMultiplayerServerRequestPartyServiceResponseWrapper; + using ModelWrapperType::ModelType; + + // Constructors + using ModelWrapperType::ModelWrapperType; + + // ServiceOutputModel + HRESULT FromJson(const JsonValue& input) override; + // ClientOutputModel + size_t RequiredBufferSize() const override; + Result Copy(ModelBuffer& buffer) const override; + + static size_t RequiredBufferSize(const PFMultiplayerServerRequestPartyServiceResponse& model); + static HRESULT Copy(const PFMultiplayerServerRequestPartyServiceResponse& input, PFMultiplayerServerRequestPartyServiceResponse& output, ModelBuffer& buffer); +}; + } // namespace MultiplayerServer // EnumRange definitions used for Enum (de)serialization diff --git a/Source/PlayFabServices/Source/Generated/PFAccountManagement.cpp b/Source/PlayFabServices/Source/Generated/PFAccountManagement.cpp index 3458a8a..d084768 100644 --- a/Source/PlayFabServices/Source/Generated/PFAccountManagement.cpp +++ b/Source/PlayFabServices/Source/Generated/PFAccountManagement.cpp @@ -2326,6 +2326,28 @@ PF_API PFAccountManagementServerLinkNintendoServiceAccountAsync( } #endif +#if HC_PLATFORM == HC_PLATFORM_WIN32 +PF_API PFAccountManagementServerLinkNintendoServiceAccountSubjectAsync( + _In_ PFEntityHandle contextHandle, + _In_ const PFAccountManagementLinkNintendoServiceAccountSubjectRequest* request, + _In_ XAsyncBlock* async +) noexcept +{ + RETURN_HR_INVALIDARG_IF_NULL(request); + + SharedPtr state{ nullptr }; + RETURN_IF_FAILED(GlobalState::Get(state)); + + auto provider = MakeProvider( + state->RunContext().DeriveOnQueue(async->queue), + async, + XASYNC_IDENTITY(PFAccountManagementServerLinkNintendoServiceAccountSubjectAsync), + std::bind(&AccountManagementAPI::ServerLinkNintendoServiceAccountSubject, Entity::Duplicate(contextHandle), *request, std::placeholders::_1) + ); + return XAsyncProviderBase::Run(std::move(provider)); +} +#endif + #if HC_PLATFORM == HC_PLATFORM_WIN32 PF_API PFAccountManagementServerLinkNintendoSwitchDeviceIdAsync( _In_ PFEntityHandle contextHandle, diff --git a/Source/PlayFabServices/Source/Generated/PFMultiplayerServer.cpp b/Source/PlayFabServices/Source/Generated/PFMultiplayerServer.cpp index d9f1a1d..835e488 100644 --- a/Source/PlayFabServices/Source/Generated/PFMultiplayerServer.cpp +++ b/Source/PlayFabServices/Source/Generated/PFMultiplayerServer.cpp @@ -184,3 +184,49 @@ PF_API PFMultiplayerServerRequestMultiplayerServerGetResult( return S_OK; } +#if 0 +PF_API PFMultiplayerServerRequestPartyServiceAsync( + _In_ PFEntityHandle contextHandle, + _In_ const PFMultiplayerServerRequestPartyServiceRequest* request, + _In_ XAsyncBlock* async +) noexcept +{ + RETURN_HR_INVALIDARG_IF_NULL(request); + + SharedPtr state{ nullptr }; + RETURN_IF_FAILED(GlobalState::Get(state)); + + auto provider = MakeProvider( + state->RunContext().DeriveOnQueue(async->queue), + async, + XASYNC_IDENTITY(PFMultiplayerServerRequestPartyServiceAsync), + std::bind(&MultiplayerServerAPI::RequestPartyService, Entity::Duplicate(contextHandle), *request, std::placeholders::_1) + ); + return XAsyncProviderBase::Run(std::move(provider)); +} + +PF_API PFMultiplayerServerRequestPartyServiceGetResultSize( + _In_ XAsyncBlock* async, + _Out_ size_t* bufferSize +) noexcept +{ + return XAsyncGetResultSize(async, bufferSize); +} + +PF_API PFMultiplayerServerRequestPartyServiceGetResult( + _In_ XAsyncBlock* async, + _In_ size_t bufferSize, + _Out_writes_bytes_to_(bufferSize, *bufferUsed) void* buffer, + _Outptr_ PFMultiplayerServerRequestPartyServiceResponse** result, + _Out_opt_ size_t* bufferUsed +) noexcept +{ + RETURN_HR_INVALIDARG_IF_NULL(result); + + RETURN_IF_FAILED(XAsyncGetResult(async, nullptr, bufferSize, buffer, bufferUsed)); + *result = static_cast(buffer); + + return S_OK; +} +#endif + diff --git a/Source/PlayFabServices/Source/Generated/ProfilesTypes.cpp b/Source/PlayFabServices/Source/Generated/ProfilesTypes.cpp index c06afb3..f88c03a 100644 --- a/Source/PlayFabServices/Source/Generated/ProfilesTypes.cpp +++ b/Source/PlayFabServices/Source/Generated/ProfilesTypes.cpp @@ -256,8 +256,79 @@ HRESULT EntityPermissionStatement::Copy(const PFProfilesEntityPermissionStatemen return S_OK; } +HRESULT EntityStatisticAttributeValue::FromJson(const JsonValue& input) +{ + String metadata{}; + RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "Metadata", metadata)); + this->SetMetadata(std::move(metadata)); + + String name{}; + RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "Name", name)); + this->SetName(std::move(name)); + + CStringVector scores{}; + RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "Scores", scores)); + this->SetScores(std::move(scores)); + + return S_OK; +} + +size_t EntityStatisticAttributeValue::RequiredBufferSize() const +{ + return RequiredBufferSize(this->Model()); +} + +Result EntityStatisticAttributeValue::Copy(ModelBuffer& buffer) const +{ + return buffer.CopyTo(&this->Model()); +} + +size_t EntityStatisticAttributeValue::RequiredBufferSize(const PFProfilesEntityStatisticAttributeValue& model) +{ + size_t requiredSize{ alignof(ModelType) + sizeof(ModelType) }; + if (model.metadata) + { + requiredSize += (std::strlen(model.metadata) + 1); + } + if (model.name) + { + requiredSize += (std::strlen(model.name) + 1); + } + requiredSize += (alignof(char*) + sizeof(char*) * model.scoresCount); + for (size_t i = 0; i < model.scoresCount; ++i) + { + requiredSize += (std::strlen(model.scores[i]) + 1); + } + return requiredSize; +} + +HRESULT EntityStatisticAttributeValue::Copy(const PFProfilesEntityStatisticAttributeValue& input, PFProfilesEntityStatisticAttributeValue& output, ModelBuffer& buffer) +{ + output = input; + { + auto propCopyResult = buffer.CopyTo(input.metadata); + RETURN_IF_FAILED(propCopyResult.hr); + output.metadata = propCopyResult.ExtractPayload(); + } + { + auto propCopyResult = buffer.CopyTo(input.name); + RETURN_IF_FAILED(propCopyResult.hr); + output.name = propCopyResult.ExtractPayload(); + } + { + auto propCopyResult = buffer.CopyToArray(input.scores, input.scoresCount); + RETURN_IF_FAILED(propCopyResult.hr); + output.scores = propCopyResult.ExtractPayload(); + } + return S_OK; +} + HRESULT EntityStatisticValue::FromJson(const JsonValue& input) { + ModelDictionaryEntryVector attributeStatistics{}; + RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "AttributeStatistics", attributeStatistics)); + this->SetAttributeStatistics(std::move(attributeStatistics)); + String metadata{}; RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "Metadata", metadata)); this->SetMetadata(std::move(metadata)); @@ -266,6 +337,10 @@ HRESULT EntityStatisticValue::FromJson(const JsonValue& input) RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "Name", name)); this->SetName(std::move(name)); + CStringVector scores{}; + RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "Scores", scores)); + this->SetScores(std::move(scores)); + std::optional value{}; RETURN_IF_FAILED(JsonUtils::ObjectGetMember(input, "Value", value)); this->SetValue(std::move(value)); @@ -288,6 +363,12 @@ Result EntityStatisticValue::Copy(ModelBu size_t EntityStatisticValue::RequiredBufferSize(const PFProfilesEntityStatisticValue& model) { size_t requiredSize{ alignof(ModelType) + sizeof(ModelType) }; + requiredSize += (alignof(PFProfilesEntityStatisticAttributeValueDictionaryEntry) + sizeof(PFProfilesEntityStatisticAttributeValueDictionaryEntry) * model.attributeStatisticsCount); + for (size_t i = 0; i < model.attributeStatisticsCount; ++i) + { + requiredSize += (std::strlen(model.attributeStatistics[i].key) + 1); + requiredSize += EntityStatisticAttributeValue::RequiredBufferSize(*model.attributeStatistics[i].value); + } if (model.metadata) { requiredSize += (std::strlen(model.metadata) + 1); @@ -296,6 +377,11 @@ size_t EntityStatisticValue::RequiredBufferSize(const PFProfilesEntityStatisticV { requiredSize += (std::strlen(model.name) + 1); } + requiredSize += (alignof(char*) + sizeof(char*) * model.scoresCount); + for (size_t i = 0; i < model.scoresCount; ++i) + { + requiredSize += (std::strlen(model.scores[i]) + 1); + } if (model.value) { requiredSize += (alignof(int32_t) + sizeof(int32_t)); @@ -306,6 +392,11 @@ size_t EntityStatisticValue::RequiredBufferSize(const PFProfilesEntityStatisticV HRESULT EntityStatisticValue::Copy(const PFProfilesEntityStatisticValue& input, PFProfilesEntityStatisticValue& output, ModelBuffer& buffer) { output = input; + { + auto propCopyResult = buffer.CopyToDictionary(input.attributeStatistics, input.attributeStatisticsCount); + RETURN_IF_FAILED(propCopyResult.hr); + output.attributeStatistics = propCopyResult.ExtractPayload(); + } { auto propCopyResult = buffer.CopyTo(input.metadata); RETURN_IF_FAILED(propCopyResult.hr); @@ -316,6 +407,11 @@ HRESULT EntityStatisticValue::Copy(const PFProfilesEntityStatisticValue& input, RETURN_IF_FAILED(propCopyResult.hr); output.name = propCopyResult.ExtractPayload(); } + { + auto propCopyResult = buffer.CopyToArray(input.scores, input.scoresCount); + RETURN_IF_FAILED(propCopyResult.hr); + output.scores = propCopyResult.ExtractPayload(); + } { auto propCopyResult = buffer.CopyTo(input.value); RETURN_IF_FAILED(propCopyResult.hr); diff --git a/Source/PlayFabServices/Source/Generated/ProfilesTypes.h b/Source/PlayFabServices/Source/Generated/ProfilesTypes.h index 5d2dad0..0e1e9d9 100644 --- a/Source/PlayFabServices/Source/Generated/ProfilesTypes.h +++ b/Source/PlayFabServices/Source/Generated/ProfilesTypes.h @@ -86,6 +86,26 @@ class EntityPermissionStatement : public Wrappers::PFProfilesEntityPermissionSta static HRESULT Copy(const PFProfilesEntityPermissionStatement& input, PFProfilesEntityPermissionStatement& output, ModelBuffer& buffer); }; +class EntityStatisticAttributeValue : public Wrappers::PFProfilesEntityStatisticAttributeValueWrapper, public ServiceOutputModel, public ClientOutputModel +{ +public: + using ModelWrapperType = typename Wrappers::PFProfilesEntityStatisticAttributeValueWrapper; + using ModelWrapperType::ModelType; + using DictionaryEntryType = ModelWrapperType::DictionaryEntryType; + + // Constructors + using ModelWrapperType::ModelWrapperType; + + // ServiceOutputModel + HRESULT FromJson(const JsonValue& input) override; + // ClientOutputModel + size_t RequiredBufferSize() const override; + Result Copy(ModelBuffer& buffer) const override; + + static size_t RequiredBufferSize(const PFProfilesEntityStatisticAttributeValue& model); + static HRESULT Copy(const PFProfilesEntityStatisticAttributeValue& input, PFProfilesEntityStatisticAttributeValue& output, ModelBuffer& buffer); +}; + class EntityStatisticValue : public Wrappers::PFProfilesEntityStatisticValueWrapper, public ServiceOutputModel, public ClientOutputModel { public: diff --git a/Source/PlayFabSharedInternal/Include/Generated/Error.h b/Source/PlayFabSharedInternal/Include/Generated/Error.h index 77c1915..8d9853f 100644 --- a/Source/PlayFabSharedInternal/Include/Generated/Error.h +++ b/Source/PlayFabSharedInternal/Include/Generated/Error.h @@ -559,6 +559,7 @@ enum class ServiceErrorCode InvalidServiceConfiguration = 1560, InvalidNamespaceMismatch = 1561, LeaderboardColumnLengthMismatch = 1562, + InvalidStatisticScore = 1563, MatchmakingEntityInvalid = 2001, MatchmakingPlayerAttributesInvalid = 2002, MatchmakingQueueNotFound = 2016, diff --git a/Source/PlayFabSharedInternal/Include/SdkVersion.h b/Source/PlayFabSharedInternal/Include/SdkVersion.h index 788c285..a503f5f 100644 --- a/Source/PlayFabSharedInternal/Include/SdkVersion.h +++ b/Source/PlayFabSharedInternal/Include/SdkVersion.h @@ -2,7 +2,7 @@ namespace PlayFab { -constexpr char sdkVersion[] = "2310.0.0.230922"; // format: release YYMM.release qfe#.date in YYMMDD +constexpr char sdkVersion[] = "2310.0.1.230927"; // format: release YYMM.release qfe#.date in YYMMDD constexpr char versionString[] = "PFCSdk-"; constexpr char userAgent[] = "PFCSdk/"; } diff --git a/Source/PlayFabSharedInternal/Source/Generated/Error.cpp b/Source/PlayFabSharedInternal/Source/Generated/Error.cpp index 59ff241..99b7149 100644 --- a/Source/PlayFabSharedInternal/Source/Generated/Error.cpp +++ b/Source/PlayFabSharedInternal/Source/Generated/Error.cpp @@ -559,6 +559,7 @@ HRESULT ServiceErrorToHR(ServiceErrorCode errorCode) case ServiceErrorCode::InvalidServiceConfiguration: return E_PF_INVALID_SERVICE_CONFIGURATION; case ServiceErrorCode::InvalidNamespaceMismatch: return E_PF_INVALID_NAMESPACE_MISMATCH; case ServiceErrorCode::LeaderboardColumnLengthMismatch: return E_PF_LEADERBOARD_COLUMN_LENGTH_MISMATCH; + case ServiceErrorCode::InvalidStatisticScore: return E_PF_INVALID_STATISTIC_SCORE; case ServiceErrorCode::MatchmakingEntityInvalid: return E_PF_MATCHMAKING_ENTITY_INVALID; case ServiceErrorCode::MatchmakingPlayerAttributesInvalid: return E_PF_MATCHMAKING_PLAYER_ATTRIBUTES_INVALID; case ServiceErrorCode::MatchmakingQueueNotFound: return E_PF_MATCHMAKING_QUEUE_NOT_FOUND; diff --git a/Source/PlayFabSharedInternal/Source/HttpRequest.cpp b/Source/PlayFabSharedInternal/Source/HttpRequest.cpp index 61a62d2..c70e5b9 100644 --- a/Source/PlayFabSharedInternal/Source/HttpRequest.cpp +++ b/Source/PlayFabSharedInternal/Source/HttpRequest.cpp @@ -113,7 +113,7 @@ HRESULT HCHttpCall::OnStarted(XAsyncBlock* async) noexcept RETURN_IF_FAILED(PFHCHttpCallRequestSetUrl(m_callHandle, m_method.data(), m_url.data())); RETURN_IF_FAILED(PFHCHttpCallResponseSetResponseBodyWriteFunction(m_callHandle, HCHttpCall::HCResponseBodyWrite, this)); -#if HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM == HC_PLATFORM_GDK +#if HC_PLATFORM == HC_PLATFORM_WIN32 || HC_PLATFORM == HC_PLATFORM_GDK || HC_PLATFORM == HC_PLATFORM_NINTENDO_SWITCH // Setup Compression level RETURN_IF_FAILED(PFHCHttpCallRequestEnableGzipCompression(m_callHandle, m_compressionLevel)); #else diff --git a/Test/PlayFabServices.GeneratedApiWrappers/AccountManagementOperations.cpp b/Test/PlayFabServices.GeneratedApiWrappers/AccountManagementOperations.cpp index b873735..f656127 100644 --- a/Test/PlayFabServices.GeneratedApiWrappers/AccountManagementOperations.cpp +++ b/Test/PlayFabServices.GeneratedApiWrappers/AccountManagementOperations.cpp @@ -1788,6 +1788,27 @@ HRESULT ServerLinkNintendoServiceAccountOperation::OnStarted(XAsyncBlock* async) #if HC_PLATFORM == HC_PLATFORM_WIN32 +ServerLinkNintendoServiceAccountSubjectOperation::ServerLinkNintendoServiceAccountSubjectOperation(Entity entity, RequestType request, PlayFab::RunContext rc) : + XAsyncOperation{ std::move(rc) }, + m_entity{ std::move(entity) }, + m_request{ std::move(request) } +{ +} + +AsyncOp ServerLinkNintendoServiceAccountSubjectOperation::Run(Entity entity, RequestType request, PlayFab::RunContext rc) noexcept +{ + return RunOperation(MakeUnique(std::move(entity), std::move(request), std::move(rc))); +} + +HRESULT ServerLinkNintendoServiceAccountSubjectOperation::OnStarted(XAsyncBlock* async) noexcept +{ + return PFAccountManagementServerLinkNintendoServiceAccountSubjectAsync(m_entity.Handle(), &m_request.Model(), async); +} + +#endif + +#if HC_PLATFORM == HC_PLATFORM_WIN32 + ServerLinkNintendoSwitchDeviceIdOperation::ServerLinkNintendoSwitchDeviceIdOperation(Entity entity, RequestType request, PlayFab::RunContext rc) : XAsyncOperation{ std::move(rc) }, m_entity{ std::move(entity) }, diff --git a/Test/PlayFabServices.GeneratedApiWrappers/AccountManagementOperations.h b/Test/PlayFabServices.GeneratedApiWrappers/AccountManagementOperations.h index 51bfc64..81637f9 100644 --- a/Test/PlayFabServices.GeneratedApiWrappers/AccountManagementOperations.h +++ b/Test/PlayFabServices.GeneratedApiWrappers/AccountManagementOperations.h @@ -1350,6 +1350,24 @@ class ServerLinkNintendoServiceAccountOperation : public XAsyncOperation }; #endif +#if HC_PLATFORM == HC_PLATFORM_WIN32 +class ServerLinkNintendoServiceAccountSubjectOperation : public XAsyncOperation +{ +public: + using RequestType = Wrappers::PFAccountManagementLinkNintendoServiceAccountSubjectRequestWrapper; + + ServerLinkNintendoServiceAccountSubjectOperation(Entity entity, RequestType request, PlayFab::RunContext rc); + + static AsyncOp Run(Entity entity, RequestType request, PlayFab::RunContext rc) noexcept; + +private: + HRESULT OnStarted(XAsyncBlock* async) noexcept override; + + Entity m_entity; + RequestType m_request; +}; +#endif + #if HC_PLATFORM == HC_PLATFORM_WIN32 class ServerLinkNintendoSwitchDeviceIdOperation : public XAsyncOperation { diff --git a/Test/PlayFabServices.GeneratedApiWrappers/MultiplayerServerOperations.cpp b/Test/PlayFabServices.GeneratedApiWrappers/MultiplayerServerOperations.cpp index c2b2928..fc0985c 100644 --- a/Test/PlayFabServices.GeneratedApiWrappers/MultiplayerServerOperations.cpp +++ b/Test/PlayFabServices.GeneratedApiWrappers/MultiplayerServerOperations.cpp @@ -119,5 +119,35 @@ Result RequestMultiplayerServerOp return ResultType{ *result }; } +#if 0 + +RequestPartyServiceOperation::RequestPartyServiceOperation(Entity entity, RequestType request, PlayFab::RunContext rc) : + XAsyncOperation{ std::move(rc) }, + m_entity{ std::move(entity) }, + m_request{ std::move(request) } +{ +} + +AsyncOp RequestPartyServiceOperation::Run(Entity entity, RequestType request, PlayFab::RunContext rc) noexcept +{ + return RunOperation(MakeUnique(std::move(entity), std::move(request), std::move(rc))); +} + +HRESULT RequestPartyServiceOperation::OnStarted(XAsyncBlock* async) noexcept +{ + return PFMultiplayerServerRequestPartyServiceAsync(m_entity.Handle(), &m_request.Model(), async); +} + +Result RequestPartyServiceOperation::GetResult(XAsyncBlock* async) noexcept +{ + size_t resultSize; + RETURN_IF_FAILED(PFMultiplayerServerRequestPartyServiceGetResultSize(async, &resultSize)); + Vector resultBuffer(resultSize); + PFMultiplayerServerRequestPartyServiceResponse* result; + RETURN_IF_FAILED(PFMultiplayerServerRequestPartyServiceGetResult(async, resultBuffer.size(), resultBuffer.data(), &result, nullptr)); + return ResultType{ *result }; +} +#endif + } } diff --git a/Test/PlayFabServices.GeneratedApiWrappers/MultiplayerServerOperations.h b/Test/PlayFabServices.GeneratedApiWrappers/MultiplayerServerOperations.h index 4cab465..f8f9271 100644 --- a/Test/PlayFabServices.GeneratedApiWrappers/MultiplayerServerOperations.h +++ b/Test/PlayFabServices.GeneratedApiWrappers/MultiplayerServerOperations.h @@ -80,5 +80,25 @@ class RequestMultiplayerServerOperation : public XAsyncOperation> +{ +public: + using RequestType = Wrappers::PFMultiplayerServerRequestPartyServiceRequestWrapper; + using ResultType = Wrappers::PFMultiplayerServerRequestPartyServiceResponseWrapper; + + RequestPartyServiceOperation(Entity entity, RequestType request, PlayFab::RunContext rc); + + static AsyncOp> Run(Entity entity, RequestType request, PlayFab::RunContext rc) noexcept; + +private: + HRESULT OnStarted(XAsyncBlock* async) noexcept override; + Result GetResult(XAsyncBlock* async) noexcept override; + + Entity m_entity; + RequestType m_request; +}; +#endif + } } diff --git a/Test/PlayFabServices.GeneratedTests/AccountManagementTests.cpp b/Test/PlayFabServices.GeneratedTests/AccountManagementTests.cpp index 189957c..d6de754 100644 --- a/Test/PlayFabServices.GeneratedTests/AccountManagementTests.cpp +++ b/Test/PlayFabServices.GeneratedTests/AccountManagementTests.cpp @@ -206,6 +206,9 @@ void AccountManagementTests::AddTests() #if HC_PLATFORM == HC_PLATFORM_WIN32 AddTest("TestServerLinkNintendoServiceAccount", &AccountManagementTests::TestServerLinkNintendoServiceAccount); #endif +#if HC_PLATFORM == HC_PLATFORM_WIN32 + AddTest("TestServerLinkNintendoServiceAccountSubject", &AccountManagementTests::TestServerLinkNintendoServiceAccountSubject); +#endif #if HC_PLATFORM == HC_PLATFORM_WIN32 AddTest("TestServerLinkNintendoSwitchDeviceId", &AccountManagementTests::TestServerLinkNintendoSwitchDeviceId); #endif diff --git a/Test/PlayFabServices.GeneratedTests/AccountManagementTests.h b/Test/PlayFabServices.GeneratedTests/AccountManagementTests.h index 6079aa1..c281a11 100644 --- a/Test/PlayFabServices.GeneratedTests/AccountManagementTests.h +++ b/Test/PlayFabServices.GeneratedTests/AccountManagementTests.h @@ -220,6 +220,9 @@ class AccountManagementTests : public ServicesTestClass #if HC_PLATFORM == HC_PLATFORM_WIN32 void TestServerLinkNintendoServiceAccount(TestContext& testContext); #endif +#if HC_PLATFORM == HC_PLATFORM_WIN32 + void TestServerLinkNintendoServiceAccountSubject(TestContext& testContext); +#endif #if HC_PLATFORM == HC_PLATFORM_WIN32 void TestServerLinkNintendoSwitchDeviceId(TestContext& testContext); #endif diff --git a/Test/PlayFabServices.GeneratedTests/AccountManagementTestsImpl.stubs b/Test/PlayFabServices.GeneratedTests/AccountManagementTestsImpl.stubs index b0419b6..2f3694e 100644 --- a/Test/PlayFabServices.GeneratedTests/AccountManagementTestsImpl.stubs +++ b/Test/PlayFabServices.GeneratedTests/AccountManagementTestsImpl.stubs @@ -503,6 +503,13 @@ void AccountManagementTests::TestServerLinkNintendoServiceAccount(TestContext& t } #endif +#if HC_PLATFORM == HC_PLATFORM_WIN32 +void AccountManagementTests::TestServerLinkNintendoServiceAccountSubject(TestContext& tc) +{ + tc.Skip(); +} +#endif + #if HC_PLATFORM == HC_PLATFORM_WIN32 void AccountManagementTests::TestServerLinkNintendoSwitchDeviceId(TestContext& tc) { diff --git a/Test/PlayFabServices.GeneratedTests/MultiplayerServerTests.cpp b/Test/PlayFabServices.GeneratedTests/MultiplayerServerTests.cpp index 9771258..45ad107 100644 --- a/Test/PlayFabServices.GeneratedTests/MultiplayerServerTests.cpp +++ b/Test/PlayFabServices.GeneratedTests/MultiplayerServerTests.cpp @@ -12,6 +12,9 @@ void MultiplayerServerTests::AddTests() AddTest("TestListBuildSummariesV2", &MultiplayerServerTests::TestListBuildSummariesV2); AddTest("TestListQosServersForTitle", &MultiplayerServerTests::TestListQosServersForTitle); AddTest("TestRequestMultiplayerServer", &MultiplayerServerTests::TestRequestMultiplayerServer); +#if 0 + AddTest("TestRequestPartyService", &MultiplayerServerTests::TestRequestPartyService); +#endif } diff --git a/Test/PlayFabServices.GeneratedTests/MultiplayerServerTests.h b/Test/PlayFabServices.GeneratedTests/MultiplayerServerTests.h index cbf6aed..00f4276 100644 --- a/Test/PlayFabServices.GeneratedTests/MultiplayerServerTests.h +++ b/Test/PlayFabServices.GeneratedTests/MultiplayerServerTests.h @@ -26,6 +26,9 @@ class MultiplayerServerTests : public ServicesTestClass void TestListBuildSummariesV2(TestContext& testContext); void TestListQosServersForTitle(TestContext& testContext); void TestRequestMultiplayerServer(TestContext& testContext); +#if 0 + void TestRequestPartyService(TestContext& testContext); +#endif }; diff --git a/Test/PlayFabServices.GeneratedTests/MultiplayerServerTestsImpl.stubs b/Test/PlayFabServices.GeneratedTests/MultiplayerServerTestsImpl.stubs index 444b4b1..a789bc8 100644 --- a/Test/PlayFabServices.GeneratedTests/MultiplayerServerTestsImpl.stubs +++ b/Test/PlayFabServices.GeneratedTests/MultiplayerServerTestsImpl.stubs @@ -37,6 +37,13 @@ void MultiplayerServerTests::TestRequestMultiplayerServer(TestContext& tc) tc.Skip(); } +#if 0 +void MultiplayerServerTests::TestRequestPartyService(TestContext& tc) +{ + tc.Skip(); +} +#endif + } } diff --git a/Test/PlayFabServicesTestApp/Tests/Services/AccountManagementTestsImpl.cpp b/Test/PlayFabServicesTestApp/Tests/Services/AccountManagementTestsImpl.cpp index d18147a..e1f94d6 100644 --- a/Test/PlayFabServicesTestApp/Tests/Services/AccountManagementTestsImpl.cpp +++ b/Test/PlayFabServicesTestApp/Tests/Services/AccountManagementTestsImpl.cpp @@ -1402,6 +1402,30 @@ void AccountManagementTests::TestServerLinkNintendoServiceAccount(TestContext& t } #endif +#if HC_PLATFORM == HC_PLATFORM_WIN32 +void AccountManagementTests::TestServerLinkNintendoServiceAccountSubject(TestContext& tc) +{ + ServerLinkNintendoServiceAccountSubjectOperation::RequestType request; + request.SetSubject("testSubject"); + request.SetPlayFabId(DefaultTitlePlayerId()); + request.SetForceLink(true); + + ServerLinkNintendoServiceAccountSubjectOperation::Run(TitleEntity(), request, RunContext()).Then([&](Result result) -> AsyncOp + { + RETURN_IF_FAILED_PLAYFAB(result); + + ServerUnlinkNintendoServiceAccountOperation::RequestType request; + request.SetPlayFabId(DefaultTitlePlayerId()); + + return ServerUnlinkNintendoServiceAccountOperation::Run(TitleEntity(), request, RunContext()); + }) + .Finally([&](Result result) + { + tc.EndTest(std::move(result)); + }); +} +#endif + #if HC_PLATFORM == HC_PLATFORM_WIN32 void AccountManagementTests::TestServerLinkNintendoSwitchDeviceId(TestContext& tc) { @@ -1628,19 +1652,8 @@ void AccountManagementTests::TestServerSendEmailFromTemplate(TestContext& tc) #if HC_PLATFORM == HC_PLATFORM_WIN32 void AccountManagementTests::TestServerUnlinkNintendoServiceAccount(TestContext& tc) { - ServerUnlinkNintendoServiceAccountOperation::RequestType request; - request.SetPlayFabId(DefaultTitlePlayerId()); - - ServerUnlinkNintendoServiceAccountOperation::Run(TitleEntity(), request, RunContext()).Then([&](Result result) -> Result - { - tc.AssertEqual(E_PF_ACCOUNT_NOT_LINKED, result.hr, "errorName"); - - return S_OK; - }) - .Finally([&](Result result) - { - tc.EndTest(std::move(result)); - }); + // Covered by TestServerLinkNintendoServiceAccountSubject + tc.EndTest(S_OK); } #endif diff --git a/Test/PlayFabServicesTestApp/Tests/Services/SegmentsTestsImpl.cpp b/Test/PlayFabServicesTestApp/Tests/Services/SegmentsTestsImpl.cpp index a5b8174..b96cf35 100644 --- a/Test/PlayFabServicesTestApp/Tests/Services/SegmentsTestsImpl.cpp +++ b/Test/PlayFabServicesTestApp/Tests/Services/SegmentsTestsImpl.cpp @@ -1,6 +1,7 @@ #include "TestAppPch.h" #include "SegmentsTests.h" #include "SegmentsOperations.h" +#include "Platform/PlatformUtils.h" namespace PlayFab { @@ -74,9 +75,6 @@ void SegmentsTests::TestClientGetPlayerTags(TestContext& tc) #if HC_PLATFORM == HC_PLATFORM_WIN32 void SegmentsTests::TestServerAddPlayerTag(TestContext& tc) { - // Skipping test since it's not stable at this point. ADO Bug: 46466089 - tc.Skip(); -#if 0 ServerAddPlayerTagOperation::RequestType request; request.SetPlayFabId(DefaultTitlePlayerId()); request.SetTagName(testTag); @@ -86,6 +84,9 @@ void SegmentsTests::TestServerAddPlayerTag(TestContext& tc) ServerGetPlayerTagsOperation::RequestType request; request.SetPlayFabId(DefaultTitlePlayerId()); + // Delay before getting player tags to let them load in fully, otherwise it may return no tags. + Platform::Sleep(5000); + return ServerGetPlayerTagsOperation::Run(TitleEntity(), request, RunContext()); }) .Then([&](Result result) -> AsyncOp @@ -114,7 +115,6 @@ void SegmentsTests::TestServerAddPlayerTag(TestContext& tc) { tc.EndTest(std::move(result)); }); -#endif } #endif