



  

<!DOCTYPE html>
<html
  lang="en"
  
  data-color-mode="auto" data-light-theme="light" data-dark-theme="dark"
  data-a11y-animated-images="system" data-a11y-link-underlines="true"
  
  >




  <head>
    <meta charset="utf-8">
  <link rel="dns-prefetch" href="https://github.githubassets.com">
  <link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
  <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
  <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
  <link rel="preconnect" href="https://github.githubassets.com" crossorigin>
  <link rel="preconnect" href="https://avatars.githubusercontent.com">

<script type="importmap">{"imports":{"react":"https://github.githubassets.com/assets/react-e27d1b3e03961e68.js","react-dom":"https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js","react-dom/client":"https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js","react-is":"https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js","react-reconciler":"https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js","react/compiler-runtime":"https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js","react/jsx-dev-runtime":"https://github.githubassets.com/assets/react-jsx-dev-runtime-ea55d68667d559e5.js","react/jsx-runtime":"https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js","scheduler":"https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js"}}</script>
<meta name="react-profiling" content="0" data-turbo-transient="true" />
<meta name="react-import-map" content="react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@777f63f87cd0" data-turbo-track="reload" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-e27d1b3e03961e68.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-compiler-runtime-4610bd6d3de9c049.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/scheduler-58b860b049ca307c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-e5fd46a22d5c4058.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-dom-client-1b4a3ee065998cea.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-is-e0b593954b4706d8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-jsx-runtime-4915cb0f5b3aff04.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-reconciler-8e99e505c4429605.js" />

  


  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-79ad2ace604703b3.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css" /><link data-color-theme="light" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light-99f877e9ddfc0e51.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-48fdd0811afbab3c.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f4bf1142976e4bbf.css" /><link data-color-theme="light_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind_high_contrast-f661b49995ba0bd8.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-0b38d22346321c92.css" /><link data-color-theme="light_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia_high_contrast-f1c62c9e70259b9f.css" /><link data-color-theme="dark" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark-79ad2ace604703b3.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-24484a076f02295f.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-f50cacf0a86b9929.css" /><link data-color-theme="dark_colorblind_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind_high_contrast-e61d4f4ca17852c2.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-39c10993d5603fac.css" /><link data-color-theme="dark_tritanopia_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia_high_contrast-73236c840c0c7d90.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-0de76f07cc035b10.css" /><link data-color-theme="dark_dimmed_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed_high_contrast-fd1500c8744e40d6.css" />

  <style type="text/css">
    :root {
      --tab-size-preference: 4;
    }

    pre, code {
      tab-size: var(--tab-size-preference);
    }
  </style>

    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-ed9ca172356fd545.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-1d2c7f7b52a6068b.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-54ba76e934a49d7c.css" />
    <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-88fc7764b4deb69a.css" />
  <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-11ee8a031c040c1a.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-2d56bdb0166c0238.css" />

  

  <script type="application/json" id="client-env">{"locale":"en","featureFlags":["actions_enable_background_steps","actions_new_hosted_runner_image_select_sizes_and_versions","activity_diff_file_tree","activity_repos_file_tree","activity_repos_overview_header","activity_repos_overview_sidebar","agent_author_search_expansion","agent_author_search_expansion_ui_pulls","alternate_user_config_repo","async_conversion_coverage_enabled","billing_billable_licenses_cost_center_bucket_fix","billing_budget_expiration","billing_cost_center_list_assigned_resources","billing_discount_threshold_notification","code_quality_enablement_banner_targeting","code_quality_remove_preview","code_view_raf_sticky_lines","codespaces_prebuild_region_target_update","coding_agent_third_party_model_ui","copilot_agent_snippy","copilot_api_agentic_issue_marshal_yaml","copilot_automations_pagination","copilot_chat_clear_model_selection_for_default_change","copilot_chat_compact_tables","copilot_chat_header_reorder","copilot_chat_max_upsell","copilot_chat_minimize_contextual","copilot_chat_model_picker_promotions","copilot_chat_models_browser_cache","copilot_chat_new_topic_nudge","copilot_chat_reduce_quota_checks","copilot_chat_vision_dotcom_chat_ga_gate","copilot_chat_vision_preview_gate","copilot_css_textarea_autosize","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_removal_on_marketplace","copilot_fix_failed_workflows_all_skus","copilot_ftp_hyperspace_upgrade_prompt","copilot_hide_hovercard","copilot_immersive_code_block_transition_wrap","copilot_immersive_embedded_draggable","copilot_immersive_embedded_header_button","copilot_immersive_file_block_transition_open","copilot_immersive_file_preview_keep_mounted","copilot_immersive_suggestion_pills","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_agent_merge_fix_ci","copilot_mission_control_agent_merge_resolve_conflicts","copilot_mission_control_agents_repository_enablement","copilot_mission_control_early_stop","copilot_mission_control_environment_list_icons","copilot_mission_control_managed_sandbox_environments","copilot_mission_control_needs_attention","copilot_mission_control_reasoning_effort","copilot_mission_control_repo_hovercards","copilot_mission_control_sandbox_client_side_clone","copilot_mission_control_sandbox_remote_bypass","copilot_mission_control_session_filters","copilot_mission_control_task_alive_updates","copilot_mission_control_task_sharing","copilot_org_policy_page_focus_mode","copilot_pr_chat_enhancements","copilot_prominent_upgrade_button","copilot_resource_panel","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spark_handle_nil_friendly_name","copilot_swe_agent_authorization_status_ui","copilot_swe_agent_automation_resource_scoped_writes","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_issue_comment_trigger","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_pull_request_comment_trigger","copilot_swe_agent_pull_request_merged_trigger","copilot_swe_agent_pull_request_opened_trigger","copilot_swe_agent_pull_request_synchronize_trigger","copilot_swe_agent_use_subagents","copilot_task_api_github_rest_style","copilot_task_scoped_alive_channel","copilot_token_based_billing","copilot_unconfigured_is_inherited","copilot_user_can_upgrade_plan_field","copilot_workbench_sunset","copilot_workbench_sunset_redirect","copilot_workbench_ubb","dashboard_indexeddb_caching","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_suite_disable_river_accordion_dither","glc_code_quality_repo_settings_workflow_config","hide_github_models_ui","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","hyperspace_2025_logged_out_batch_3","in_product_messaging_datadog_monitoring","ipm_global_transactional_message_copilot","ipm_global_transactional_message_issues","ipm_global_transactional_message_prs","ipm_global_transactional_message_repos","ipm_global_transactional_message_spaces","ipm_ubb_individual_budget_banner","issue_fields_multi_select","issue_inline_avatars","issue_pinned_views","issue_pinned_views_optimistic_updates","issue_relative_time_micro","issues_dashboard_sso_structured_errors","issues_expanded_file_types","issues_hide_closed_sub_issues","issues_lazy_load_comment_box_suggestions","issues_react_chrome_container_query_fix","labels_archiving","labels_archiving_info","landing_pages_ninetailed","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_lazy_hydrate_agent_tasks","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","memex_remove_deprecated_type_issue","merge_queue_restricted_pushers_warning","merge_status_checks_refetch_dedupe","merge_status_header_feedback","oauth_authorize_clickjacking_protection","octocaptcha_origin_optimization","primer_react_css_anchor_positioning","primer_react_merged_forwarded_refs","prs_copilot_app_open_action","prs_css_anchor_positioning","pull_request_copilot_attribution_header","pull_request_overview_panel_edit_description","pull_request_persister","pull_request_stacks_feedback_dialog","pull_request_stacks_rebase_conflict_instructions","pull_request_virtualization_image_estimate","pull_request_virtualization_scroll_compensation","pull_request_virtualization_scroll_intent","pulls_dashboard_sidebar_layout","quick_search_lazy_suggestions","react_blob_isolate_code_lines","react_blob_ssr_content_visibility","react_data_router_tanstack_allowed","react_query_props_with_key","react_sandbox_future_tanstack","repo_app_turbo","repo_issues_sidebar_layout","repo_overview_ask_copilot","repo_pulls_dashboard_persistence","repos_contributors_limited_default_range","review_involves_filter","rule_ignored_file_paths","rulesets_actor_list_editor","sample_network_conn_type","security_center_artifact_filters_popover","see_who_reacted","semantic_similarity_duplicate_issue_detection","session_logs_ungroup_reasoning_text","set_sha256_on_repo_creation_form","site_banner_desktop_copilot_app","site_ghca_pixel_mona","site_github_app_ga_page","site_github_app_ga_page_highlight","site_github_app_mobile_native_share","site_global_banner_dev_days_attendee","site_global_banner_learn_copilot_sdk","site_global_nav_spark_models_removed","spark_prompt_secret_scanning","spark_server_connection_status","suggest_custom_property_values_copilot","suppress_automated_browser_vitals","swp_forms_disable_octocaptcha","thread_resolution_reason","ui_service_referrer_metrics","ui_service_staleness_detection","update_issue_suggestions","user_code_paste_ux","viewscreen_sandbox","warn_inaccessible_attachments","webp_support","workbench_store_readonly","workstream_plugin_bootstrap"],"githubDomain":"https://github.com","copilotApiOverrideUrl":"https://api.githubcopilot.com","cmcApiUrl":"https://api.github.com/cmc_internal/api"}</script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/high-contrast-cookie-e3d808ee18eb9784.js"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-runtime-a6f5162eb7706e5f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-foundation-74e9766bd696d26a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/app-runtime-09f79a16809ec6e2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fetch-utilities-5305162aa9984914.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ser-564408e9198dff6d.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/environment-b4b94a9d78e8fe5c.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/app-runtime.08555632b8b4c82c.module.css" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/catalyst-86a8f5de995615f8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/selector-observer-e88088f989b27670.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/relative-time-element-7cdf4e0db98b997c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/by-6b3c07383371bf58.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ja9-36f036c13c2e3a4c.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/kw-866fd9513ae95106.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/r1-b075aab3204f32f9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/jz5-7c5d1669717041f8.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hj-5126390ff433704d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j05-dce4d588268f0f7e.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/github-elements-72b6fc9b35990d66.js" defer="defer"></script>
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/element-registry-8852a79c78994c6d.js" defer="defer"></script>
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/runtime-helpers-6df03a157bacbc44.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/aria-live-76b18916d0c8ec4d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hotkey-5109c77d7ac61078.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/react-core-5275d21716062494.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/04-a76c47ec12c12e01.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ur-024971cb63acad59.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4t-364e19c63d726e9a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/6ny-c969fbae697a356f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/yhq-3a209035a30b1a09.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/z1v-da5b33b877bfa358.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wo-09f85d22a6c8931b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/9y-81cfe57dc9040f3e.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j0-41a4cf04cbd99503.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0p-81491ed0d9d666e2.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/behaviors-316319fd8b42004a.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/react-core.49521432a04bd65d.module.css" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-menu-3333cddb0403dfb0.js" defer="defer"></script>
  
  <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/primer-react-050aafaffcbc0f54.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ncx-9a860680a5f230b9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j6-363f0ebf4f62f310.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/t7l-bf6f21d7e7a43c35.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fe-7576d9b281e2106a.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wsr-5fd3071e5a9061ab.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0n-ecadb2ffe6b01ba2.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xv-51cb34754bda73a9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/n4u-6317ce1c31aed1db.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/j8s-d90ce3a169b741ed.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/la-de176c4ee471f2b3.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/43-6eded7522a998126.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sd-6d34c0043618d320.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/d6-43637518e8caa698.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ly-b96260703f546e4d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/mgq-93f58f229b2328b4.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/on-95be29ba1ef725d9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bi0-e2f78de823e39ca9.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b1-1dbc371cef78c3c1.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0l5-629d8eb51aea8084.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/c2z-c92998400310b94b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/f9-038758dcbfe08dab.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/0k-b7df0a74912a42bf.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/sp-2bbb73a69162e23b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/og-93ae8b358505d372.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/b9-69d9b60a1b1fcd59.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ec-ec74cb1fa6c31a3f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/du-bbe0f39cd2abe9a0.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ql0-6accb9e40c25a6a5.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/20-32a6db98bc57337d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/dsj-cb1e4ddbce4f007b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/wp-9f5235d335ab624b.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/ko6-9e80f7ac359e3c43.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/uw-8c275f7ac25b7cf6.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/bsb-4f4ac8c20da73fac.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/w5-b6a7935106c47137.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fm-9c354123d8e37e4d.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/z-1081c2a87e2eaecc.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/h0-010921512138e12f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/5p-a62c030e16a2f31f.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/8vq-06b01e9bf76d46df.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/g5-a1435d76691f5658.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/xc-f5d51b571cd317cb.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/arw-51e8918a1b75a80f.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/code-view-ddfbda5275b5e61d.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.7c5f404947919942.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/ql0.bd9e6b542f167fd8.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/z.6ca215cd00aa635b.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/xc.13e027137438fd9f.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-view.fe864f77158f5a44.module.css" />

  <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/hu-1fc0b2a167afc025.js" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fbr-ac48bf596ce02661.js" />
<script crossorigin="anonymous" type="module" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-1e4c5224dc34277d.js" defer="defer"></script>
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.7c5f404947919942.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.70b3f4b2dbe27eee.module.css" />


  <title>APIJSON/Document.md at master · APIJSON/APIJSON · GitHub</title>



  <meta name="route-pattern" content="/:user_id/:repository/blob/*name(/*path)" data-turbo-transient>
  <meta name="route-controller" content="blob" data-turbo-transient>
  <meta name="route-action" content="show" data-turbo-transient>
  <meta name="fetch-nonce" content="v2:1bffb53d-f999-2193-c4e2-ddbb010df135">

    
  <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb">


  <meta name="request-id" content="CFF4:3370D:95E61C7:87D8955:6AAA56E1" data-pjax-transient="true"/><meta name="html-safe-nonce" content="9e10c3cbf9546289b152d2c78d47afa0486d843e7b9aed69611d78366dade299" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDRkY0OjMzNzBEOjk1RTYxQzc6ODdEODk1NTo2QUFBNTZFMSIsInZpc2l0b3JfaWQiOiI1NDMzMDM4Njg2NjgyNTAyODgxIiwicmVnaW9uX2VkZ2UiOiJmcmEiLCJyZWdpb25fcmVuZGVyIjoiZnJhIn0=" data-pjax-transient="true"/><meta name="visitor-hmac" content="0048716f1621c37c32ea6fa023705d7b57f0b2160465d4dd960373ac66e2cc18" data-pjax-transient="true"/>


    <meta name="hovercard-subject-tag" content="repository:74359442" data-turbo-transient>


  <meta name="github-keyboard-shortcuts" content="repository,source-code,file-tree,copilot" data-turbo-transient="true" />
  

  <meta name="selected-link" value="repo_source" data-turbo-transient>
  <link rel="assets" href="https://github.githubassets.com/">

    <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I">

<meta name="octolytics-url" content="https://collector.github.com/github/collect" />





  <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-turbo-transient="true" />

  




    <meta name="user-login" content="">

  

    <meta name="viewport" content="width=device-width">

    

      <meta name="description" content="🏆 Real-Time no-code, powerful and secure ORM 🚀  providing APIs and Docs without coding by Backend, and Frontend(Client) can customize response JSONs 🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码，前端(客户端) 定制返回 JSON 的数据和结构 - APIJSON/Document.md at master · APIJSON/APIJSON">

      <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">

    <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
    <meta property="fb:app_id" content="1401488693436528">
    <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/APIJSON/APIJSON/blob/master/Document.md" />

      <meta name="twitter:image" content="https://opengraph.githubassets.com/958762237a844195a17718e8ab114c9193a5aa0fd0adaf7dd5b77823e406128c/APIJSON/APIJSON" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="APIJSON/Document.md at master · APIJSON/APIJSON" /><meta name="twitter:description" content="🏆 Real-Time no-code, powerful and secure ORM 🚀  providing APIs and Docs without coding by Backend, and Frontend(Client) can customize response JSONs 🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码，前端(客户端) 定制返回..." />
  <meta property="og:image" content="https://opengraph.githubassets.com/958762237a844195a17718e8ab114c9193a5aa0fd0adaf7dd5b77823e406128c/APIJSON/APIJSON" /><meta property="og:image:alt" content="🏆 Real-Time no-code, powerful and secure ORM 🚀  providing APIs and Docs without coding by Backend, and Frontend(Client) can customize response JSONs 🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码，前端(客户端) 定制返回..." /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="APIJSON/Document.md at master · APIJSON/APIJSON" /><meta property="og:url" content="https://github.com/APIJSON/APIJSON/blob/master/Document.md" /><meta property="og:description" content="🏆 Real-Time no-code, powerful and secure ORM 🚀  providing APIs and Docs without coding by Backend, and Frontend(Client) can customize response JSONs 🏆 实时 零代码、全功能、强安全 ORM 库 🚀 后端接口和文档零代码，前端(客户端) 定制返回..." />
  




      <meta name="hostname" content="github.com">



        <meta name="expected-hostname" content="github.com">


  <meta http-equiv="x-pjax-version" content="5f9fa649d4eacbfae5f05360f3f8dd687701e8721cbce308f95cad2a473e2065" data-turbo-track="reload">
  <meta http-equiv="x-pjax-csp-version" content="0c5c6e5334a905d8f9521e09eadcffba484d422e0d262e07ff922e6bc18b2ac6" data-turbo-track="reload">
  <meta http-equiv="x-pjax-css-version" content="fd80f4397e6b366d79cd8ab0cc06c0f64e6a731ebf6ac8fbb538416234459325" data-turbo-track="reload">
  <meta http-equiv="x-pjax-js-version" content="cb4333e08bad333f45d753129ad4fbbcd35205e499dcca30e8afdd343d6ce163" data-turbo-track="reload">

  <meta name="turbo-cache-control" content="no-preview" data-turbo-transient="">

      <meta name="turbo-cache-control" content="no-cache" data-turbo-transient>

    <meta data-hydrostats="publish">

  <meta name="go-import" content="github.com/APIJSON/APIJSON git https://github.com/APIJSON/APIJSON.git">

  <meta name="octolytics-dimension-user_id" content="41146037" /><meta name="octolytics-dimension-user_login" content="APIJSON" /><meta name="octolytics-dimension-repository_id" content="74359442" /><meta name="octolytics-dimension-repository_nwo" content="APIJSON/APIJSON" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="74359442" /><meta name="octolytics-dimension-repository_network_root_nwo" content="APIJSON/APIJSON" />
  



    

    <meta name="turbo-body-classes" content="logged-out env-production page-responsive">
  <meta name="disable-turbo" content="false">


  <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">


  <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

  <meta name="release" content="27d4c5a6f3af61284b6a2724c5e92cfa93bfc20a" data-turbo-track="reload">
  <meta name="ui-target" content="full">

  <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000">
  <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
  <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon">

<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark" />


  <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

  </head>

  <body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
    <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;" >
      <div id="__primerPortalRoot__" style="z-index: 1000; position: absolute; width: 100%;" data-turbo-permanent></div>
      

    <div class="position-relative header-wrapper js-header-wrapper ">
      <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 tmp-py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>

      <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full">
    <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span>
</span>      
      <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/l7j-2ddd8b435dadae28.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-519724b6393c76a4.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.7c5f404947919942.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/keyboard-shortcuts-dialog.45822eed595db106.module.css" />

<react-partial
  partial-name="keyboard-shortcuts-dialog"
  data-ssr="false"
  data-attempted-ssr="false"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script>
  <div data-target="react-partial.reactRoot"></div>
</react-partial>





      

          
          

                <link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/2l-a4cd948f93d92068.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/i26-234b338a64a2997c.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/fz5-23f28c0f388769c9.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/lht-26506ea833dda5be.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/p1-76a75a6081059b19.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/3d-82c347d20a13fb90.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/tua-c4ca62c5e0e0318e.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/4s-d5f4a92616cf44ce.js" fetchpriority="low" />
<link crossorigin="anonymous" rel="modulepreload" href="https://github.githubassets.com/assets/marketing-header-7c5596e9b81c5c52.js" fetchpriority="low" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-css.7c5f404947919942.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react-brand-css.6a01c236ff527e7e.module.css" />
<link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/4s.f5f0f10079b3ce36.module.css" />

<react-partial
  partial-name="marketing-header"
  data-ssr="true"
  data-attempted-ssr="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-partial.embeddedData">{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2Fgithub.com%2FAPIJSON%2FAPIJSON%2Fblob%2Fmaster%2FDocument.md","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow\u0026source=header-repo\u0026source_repo=APIJSON%2FAPIJSON","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://github.com/APIJSON/APIJSON/blob/master/Document.md\",\"user_id\":null}}","auth_hydro_click_hmac":"d8c68d6584ddb1d74dbca0cae0996d90ff7a168998db0111de9816314d9be67b","overlay":false,"fixed":false}}</script>
  <div data-target="react-partial.reactRoot"><div data-color-mode="dark" data-light-theme="light" data-dark-theme="dark"><header class="MarketingHeader-module__root__Tk7n3 HeaderMktg header-logged-out" role="banner" data-marketing-header="true" data-color-mode="dark" data-light-theme="light" data-dark-theme="dark" data-is-top="true"><h2 class="MarketingHeader-module__visuallyHidden__sqKsl">Navigation Menu</h2><button type="button" class="MarketingHeader-module__backdrop__sw4RU" aria-label="Close navigation menu"></button><div class="MarketingHeader-module__bar__mBSyE"><div class="MarketingHeader-module__topRow__yeury"><div class="MarketingHeader-module__toggleSlot__hDxbh"><button type="button" class="HeaderMenuToggle-module__toggle__i8EiC" aria-label="Toggle navigation" aria-expanded="false"><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span><span class="HeaderMenuToggle-module__toggleBar__jVN0H"></span></button></div><a href="/" aria-label="Homepage" class="HeaderLogo-module__logo__UFyHI" data-analytics-event="{&quot;action&quot;:&quot;homepage&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;logo&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;homepage_link_logo_header&quot;}"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github" viewBox="0 0 24 24" width="32" height="32" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path></svg></a><div class="AuthCTAs-module__mobileActions__NNzeV"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/login?return_to=https%3A%2F%2Fgithub.com%2FAPIJSON%2FAPIJSON%2Fblob%2Fmaster%2FDocument.md" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/APIJSON/APIJSON/blob/master/Document.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d8c68d6584ddb1d74dbca0cae0996d90ff7a168998db0111de9816314d9be67b"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_3dd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_3dd_">Appearance settings</div></div></div><div class="MarketingHeader-module__menu__GIy3y"><div class="MarketingHeader-module__menuWrapper__owstH"><nav class="MarketingNavigation-module__nav__W0KYY" aria-label="Global"><ul class="MarketingNavigation-module__list__tFbMb"><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_nd_">Platform<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5knd_">AI CODE CREATION</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot" data-analytics-event="{&quot;action&quot;:&quot;github_copilot&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>GitHub Copilot</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Write better code with AI</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/ai/github-app" data-analytics-event="{&quot;action&quot;:&quot;github_copilot_app&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_copilot_app_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mark-github NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.766 11.328c-2.063-.25-3.516-1.734-3.516-3.656 0-.781.281-1.625.75-2.188-.203-.515-.172-1.609.063-2.062.625-.078 1.468.25 1.968.703.594-.187 1.219-.281 1.985-.281.765 0 1.39.094 1.953.265.484-.437 1.344-.765 1.969-.687.218.422.25 1.515.046 2.047.5.593.766 1.39.766 2.203 0 1.922-1.453 3.375-3.547 3.64.531.344.89 1.094.89 1.954v1.625c0 .468.391.734.86.547C13.781 14.359 16 11.53 16 8.03 16 3.61 12.406 0 7.984 0 3.563 0 0 3.61 0 8.031a7.88 7.88 0 0 0 5.172 7.422c.422.156.828-.125.828-.547v-1.25c-.219.094-.5.156-.75.156-1.031 0-1.64-.562-2.078-1.609-.172-.422-.36-.672-.719-.719-.187-.015-.25-.093-.25-.187 0-.188.313-.328.625-.328.453 0 .844.281 1.25.86.313.452.64.655 1.031.655s.641-.14 1-.5c.266-.265.47-.5.657-.656"></path></svg>GitHub Copilot app</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Direct agents from issue to merge</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/mcp" data-analytics-event="{&quot;action&quot;:&quot;mcp_registry&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;mcp_registry_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-mcp NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.52 1.12a3.578 3.578 0 0 1 6.078 2.98 3.578 3.578 0 0 1 2.982 6.08l-3.292 3.293a.252.252 0 0 0 0 .354l.843.843a.749.749 0 1 1-1.06 1.06l-.844-.843a1.75 1.75 0 0 1 0-2.474L13.52 9.12a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0L7.731 9.03A.75.75 0 0 1 6.67 7.97l2.85-2.85a2.08 2.08 0 0 0 0-2.94 2.08 2.08 0 0 0-2.94 0l-4.799 4.8A.75.75 0 0 1 .72 5.92Z"></path><path d="M7.52 3.12a.749.749 0 1 1 1.06 1.06L5.731 7.03A2.079 2.079 0 0 0 8.67 9.97l2.85-2.85a.749.749 0 1 1 1.06 1.06l-2.849 2.85A3.578 3.578 0 0 1 4.67 5.97Z"></path></svg>MCP Registry</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Integrate external tools</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9knd_">DEVELOPER WORKFLOWS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9knd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/actions" data-analytics-event="{&quot;action&quot;:&quot;actions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;actions_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-workflow NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path></svg>Actions</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Automate any workflow</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/codespaces" data-analytics-event="{&quot;action&quot;:&quot;codespaces&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;codespaces_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codespaces NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg>Codespaces</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Instant dev environments</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/issues" data-analytics-event="{&quot;action&quot;:&quot;issues&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;issues_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-issue-opened NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path></svg>Issues</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Plan and track work</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-review" data-analytics-event="{&quot;action&quot;:&quot;code_review&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_review_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg>Code Review</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Manage code changes</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/code-quality" data-analytics-event="{&quot;action&quot;:&quot;code_quality&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_quality_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-codescan-checkmark NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.28 6.28a.75.75 0 1 0-1.06-1.06L6.25 8.19l-.97-.97a.75.75 0 0 0-1.06 1.06l1.5 1.5a.75.75 0 0 0 1.06 0l3.5-3.5Z"></path><path d="M7.5 15a7.5 7.5 0 1 1 5.807-2.754l2.473 2.474a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2.474-2.473A7.472 7.472 0 0 1 7.5 15Zm0-13.5a6 6 0 1 0 4.094 10.386.748.748 0 0 1 .293-.292 6.002 6.002 0 0 0 1.117-6.486A6.002 6.002 0 0 0 7.5 1.5Z"></path></svg>Code Quality</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enforce quality at merge</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dknd_">APPLICATION SECURITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Find and fix vulnerabilities</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/code-security" data-analytics-event="{&quot;action&quot;:&quot;code_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;code_security_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-code-square NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>Code security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Secure your code as you build</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security/secret-protection" data-analytics-event="{&quot;action&quot;:&quot;secret_protection&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;secret_protection_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-lock NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M4 4a4 4 0 0 1 8 0v2h.25c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 12.25 15h-8.5A1.75 1.75 0 0 1 2 13.25v-5.5C2 6.784 2.784 6 3.75 6H4Zm8.25 3.5h-8.5a.25.25 0 0 0-.25.25v5.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25ZM10.5 6V4a2.5 2.5 0 1 0-5 0v2Z"></path></svg>Secret protection</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Stop leaks before they start</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ NavGroup-module__hasSeparator__FnMrN"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_hknd_">EXPLORE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_hknd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/why-github" data-analytics-event="{&quot;action&quot;:&quot;why_github&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;why_github_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Why GitHub</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog" data-analytics-event="{&quot;action&quot;:&quot;blog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;blog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Blog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://github.blog/changelog" data-analytics-event="{&quot;action&quot;:&quot;changelog&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;changelog_link_platform_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Changelog</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/marketplace" data-analytics-event="{&quot;action&quot;:&quot;marketplace&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;marketplace_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Marketplace</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/features" data-analytics-event="{&quot;action&quot;:&quot;view_all_features&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;platform&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_features_link_platform_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all features</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_17d_">Solutions<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_17d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5l7d_">BY COMPANY SIZE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprises&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Enterprises</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/team" data-analytics-event="{&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Small and medium teams</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/enterprise/startups" data-analytics-event="{&quot;action&quot;:&quot;startups&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Startups</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/nonprofits" data-analytics-event="{&quot;action&quot;:&quot;nonprofits&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Nonprofits</span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9l7d_">BY USE CASE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9l7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/app-modernization" data-analytics-event="{&quot;action&quot;:&quot;app_modernization&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;app_modernization_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">App Modernization</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devsecops" data-analytics-event="{&quot;action&quot;:&quot;devsecops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevSecOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/use-case/ci-cd" data-analytics-event="{&quot;action&quot;:&quot;ci/cd&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ci/cd_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">CI/CD</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/use-case" data-analytics-event="{&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all use cases</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dl7d_">BY INDUSTRY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dl7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/healthcare" data-analytics-event="{&quot;action&quot;:&quot;healthcare&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Healthcare</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/financial-services" data-analytics-event="{&quot;action&quot;:&quot;financial_services&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Financial services</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/manufacturing" data-analytics-event="{&quot;action&quot;:&quot;manufacturing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Manufacturing</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/industry/government" data-analytics-event="{&quot;action&quot;:&quot;government&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Government</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions/industry" data-analytics-event="{&quot;action&quot;:&quot;view_all_industries&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all industries</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/solutions" data-analytics-event="{&quot;action&quot;:&quot;view_all_solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_solutions_link_solutions_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all solutions</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_1nd_">Resources<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_1nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5lnd_">EXPLORE BY TOPIC</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=ai" data-analytics-event="{&quot;action&quot;:&quot;ai&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">AI</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=software-development" data-analytics-event="{&quot;action&quot;:&quot;software_development&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Software Development</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=devops" data-analytics-event="{&quot;action&quot;:&quot;devops&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">DevOps</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/articles?topic=security" data-analytics-event="{&quot;action&quot;:&quot;security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources/articles" data-analytics-event="{&quot;action&quot;:&quot;view_all_topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_topics_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all topics</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9lnd_">EXPLORE BY TYPE</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9lnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/customer-stories" data-analytics-event="{&quot;action&quot;:&quot;customer_stories&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer stories</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/events" data-analytics-event="{&quot;action&quot;:&quot;events__webinars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;events__webinars_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Events &amp; webinars</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/resources/whitepapers" data-analytics-event="{&quot;action&quot;:&quot;ebooks__reports&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;ebooks__reports_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Ebooks &amp; reports</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/solutions/executive-insights" data-analytics-event="{&quot;action&quot;:&quot;business_insights&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;business_insights_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Business insights</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://skills.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_skills&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_skills_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Skills</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dlnd_">SUPPORT &amp; SERVICES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dlnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://docs.github.com" data-analytics-event="{&quot;action&quot;:&quot;documentation&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;documentation_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Documentation</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://support.github.com" data-analytics-event="{&quot;action&quot;:&quot;customer_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;customer_support_link_resources_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Customer support</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/orgs/community/discussions" data-analytics-event="{&quot;action&quot;:&quot;community_forum&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;community_forum_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Community forum</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trust-center" data-analytics-event="{&quot;action&quot;:&quot;trust_center&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trust_center_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trust center</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/partners" data-analytics-event="{&quot;action&quot;:&quot;partners&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Partners</span></a></li></ul></div></li></ul><div class="NavDropdown-module__trailingLinkContainer__VgJGL"><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--arrow-end___esdN8" href="https://github.com/resources" data-analytics-event="{&quot;action&quot;:&quot;view_all_resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;view_all_resources_link_resources_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">View all resources</span><svg class="Primer_Brand__ExpandableArrow-module__ExpandableArrow___aaZs9 Primer_Brand__Link-module__Link-arrow___yd78i" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true" focusable="false"><path fill="currentColor" d="M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z"></path><path class="Primer_Brand__ExpandableArrow-module__ExpandableArrow-stem___0K8Hz" stroke="currentColor" d="M1.75 8H11" stroke-width="1.5" stroke-linecap="round"></path></svg></a></div></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_27d_">Open Source<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_27d_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5m7d_">COMMUNITY</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/open-source/sponsors" data-analytics-event="{&quot;action&quot;:&quot;github_sponsors&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sponsor-tiers NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.586 1C12.268 1 13.5 2.37 13.5 4.25c0 1.745-.996 3.359-2.622 4.831-.166.15-.336.297-.509.438l1.116 5.584a.75.75 0 0 1-.991.852l-2.409-.876a.25.25 0 0 0-.17 0l-2.409.876a.75.75 0 0 1-.991-.852L5.63 9.519a13.78 13.78 0 0 1-.51-.438C3.497 7.609 2.5 5.995 2.5 4.25 2.5 2.37 3.732 1 5.414 1c.963 0 1.843.403 2.474 1.073L8 2.198l.112-.125a3.385 3.385 0 0 1 2.283-1.068L10.586 1Zm-3.621 9.495-.718 3.594 1.155-.42a1.75 1.75 0 0 1 1.028-.051l.168.051 1.154.42-.718-3.592c-.199.13-.37.235-.505.314l-.169.097a.75.75 0 0 1-.72 0 9.54 9.54 0 0 1-.515-.308l-.16-.105ZM10.586 2.5c-.863 0-1.611.58-1.866 1.459-.209.721-1.231.721-1.44 0C7.025 3.08 6.277 2.5 5.414 2.5 4.598 2.5 4 3.165 4 4.25c0 1.23.786 2.504 2.128 3.719.49.443 1.018.846 1.546 1.198l.325.21.076-.047.251-.163a13.341 13.341 0 0 0 1.546-1.198C11.214 6.754 12 5.479 12 4.25c0-1.085-.598-1.75-1.414-1.75Z"></path></svg>GitHub Sponsors</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Fund open source developers</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9m7d_">PROGRAMS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9m7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://securitylab.github.com" data-analytics-event="{&quot;action&quot;:&quot;security_lab&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;security_lab_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Security Lab</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://maintainers.github.com" data-analytics-event="{&quot;action&quot;:&quot;maintainer_community&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;maintainer_community_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Maintainer Community</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://stars.github.com" data-analytics-event="{&quot;action&quot;:&quot;github_stars&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_stars_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">GitHub Stars</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 Primer_Brand__Link-module__Link--is-external___xsncV" href="https://archiveprogram.github.com" data-analytics-event="{&quot;action&quot;:&quot;archive_program&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;archive_program_link_open_source_navbar&quot;}" target="_blank" rel="noreferrer"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Archive Program</span><svg data-component="Octicon" focusable="false" aria-label="External link" class="octicon octicon-link-external" role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_dm7d_">REPOSITORIES</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_dm7d_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/topics" data-analytics-event="{&quot;action&quot;:&quot;topics&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Topics</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/trending" data-analytics-event="{&quot;action&quot;:&quot;trending&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Trending</span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0" href="https://github.com/collections" data-analytics-event="{&quot;action&quot;:&quot;collections&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty">Collections</span></a></li></ul></div></li></ul></div></div></li><li><div class="NavDropdown-module__container__l2YeI"><button type="button" class="NavDropdown-module__button__PEHWX" aria-expanded="false" aria-controls="_R_2nd_">Enterprise<svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-right NavDropdown-module__buttonIcon__Tkl8_" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m6.427 4.427 3.396 3.396a.25.25 0 0 1 0 .354l-3.396 3.396A.25.25 0 0 1 6 11.396V4.604a.25.25 0 0 1 .427-.177Z"></path></svg></button><div id="_R_2nd_" class="NavDropdown-module__dropdown__xm1jd"><ul class="NavDropdown-module__list__zuCgG"><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_5mnd_">ENTERPRISE SOLUTIONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_5mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise" data-analytics-event="{&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-stack NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.122.392a1.75 1.75 0 0 1 1.756 0l5.003 2.902c.83.481.83 1.68 0 2.162L8.878 8.358a1.75 1.75 0 0 1-1.756 0L2.119 5.456a1.251 1.251 0 0 1 0-2.162ZM8.125 1.69a.248.248 0 0 0-.25 0l-4.63 2.685 4.63 2.685a.248.248 0 0 0 .25 0l4.63-2.685ZM1.601 7.789a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0L1.874 8.814A.75.75 0 0 1 1.6 7.789Zm0 3.5a.75.75 0 0 1 1.025-.273l5.249 3.044a.248.248 0 0 0 .25 0l5.249-3.044a.75.75 0 0 1 .752 1.298l-5.248 3.044a1.75 1.75 0 0 1-1.756 0l-5.248-3.044a.75.75 0 0 1-.273-1.025Z"></path></svg>Enterprise platform</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">AI-powered developer platform</span></span></a></li></ul></div></li><li><div class="NavGroup-module__group__W8SqJ"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--monospace___QXHDQ Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavGroup-module__title__Wzxz2" id="_R_9mnd_">AVAILABLE ADD-ONS</span><ul class="NavGroup-module__list__UCOFy" aria-labelledby="_R_9mnd_"><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/security/advanced-security" data-analytics-event="{&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-shield-check NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>GitHub Advanced Security</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade security features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/features/copilot/copilot-business" data-analytics-event="{&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copilot NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path></svg>Copilot for Business</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade AI features</span></span></a></li><li><a class="Primer_Brand__Link-module__Link___lF11y Primer_Brand__Link-module__Link--default___VRVW0 NavLink-module__link__EG3d4" href="https://github.com/enterprise/premium-support" data-analytics-event="{&quot;action&quot;:&quot;premium_support&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Link-module__Link--label___jM8Ty"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS Primer_Brand__Text-module__Text--weight-medium___qJKf_ NavLink-module__title__Q7t0p"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-comment-discussion NavLink-module__icon__ltGNM" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path></svg>Premium Support</span><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--muted___rE6mh Primer_Brand__Text-module__Text--200____P1wy Primer_Brand__Text-module__Text--antialiased___TYoXS NavLink-module__subtitle__X4gkW">Enterprise-grade 24/7 support</span></span></a></li></ul></div></li></ul></div></div></li><li><a href="https://github.com/pricing" data-analytics-event="{&quot;action&quot;:&quot;pricing&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;pricing&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;pricing_link_pricing_navbar&quot;}" class="MarketingNavigation-module__navLink__hUomM">Pricing</a></li></ul></nav><div class="MarketingHeader-module__ctaContainer__tBmPz"><div class="HeaderSearch-module__searchSlot__oVOUS"><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderSearch-module__trigger__zsF9q" type="button" aria-haspopup="dialog" aria-expanded="false" aria-label="Search or jump to, type / to search" data-analytics-event="{&quot;action&quot;:&quot;searchbar&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;context&quot;:&quot;global&quot;,&quot;location&quot;:&quot;navbar&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"><span class="HeaderSearch-module__content__kMpxU"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search HeaderSearch-module__icon__wcrHX" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg><span class="HeaderSearch-module__label__d1iWG">Search</span><kbd class="HeaderSearch-module__kbd__HNG0o" aria-hidden="true">/</kbd></span></span></span></button><div class="d-none"></div></div><div class="AuthCTAs-module__signInWrap__q2P60"><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq AuthCTAs-module__desktopActionGap__UZuXT AuthCTAs-module__hiddenBelowLg__BfKBw" href="/login?return_to=https%3A%2F%2Fgithub.com%2FAPIJSON%2FAPIJSON%2Fblob%2Fmaster%2FDocument.md" data-analytics-event="{&quot;action&quot;:&quot;sign_in&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_in_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/APIJSON/APIJSON/blob/master/Document.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d8c68d6584ddb1d74dbca0cae0996d90ff7a168998db0111de9816314d9be67b"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH">Sign in</span></span></a></div><a class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--secondary___gHnw_ Primer_Brand__Button-module__Button--size-small___zQrEw AuthCTAs-module__cta__WpwQq" href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;source=header-repo&amp;source_repo=APIJSON%2FAPIJSON" data-analytics-event="{&quot;action&quot;:&quot;sign_up&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;context&quot;:&quot;auth_cta&quot;,&quot;location&quot;:&quot;header&quot;,&quot;label&quot;:&quot;sign_up_link_auth_cta_header&quot;}" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/APIJSON/APIJSON/blob/master/Document.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="d8c68d6584ddb1d74dbca0cae0996d90ff7a168998db0111de9816314d9be67b"><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-secondary___eJ0_a">Sign up</span></span></a><button class="Primer_Brand__Button-module__Button___scH9Z Primer_Brand__Button-module__Button--subtle___F7pEE Primer_Brand__Button-module__Button--size-small___zQrEw HeaderAppearanceSettings-module__trigger__hUheK" type="button" aria-haspopup="dialog" aria-labelledby="_R_fbd_"><span class="Primer_Brand__Button-module__Button__leading-visual___jjtTe" data-testid="Button-leading-visual"><svg data-component="Octicon" focusable="false" aria-hidden="true" class="octicon octicon-sliders Primer_Brand__Button-module__Button__icon-visual____qybb" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M15 2.75a.75.75 0 0 1-.75.75h-4a.75.75 0 0 1 0-1.5h4a.75.75 0 0 1 .75.75Zm-8.5.75v1.25a.75.75 0 0 0 1.5 0v-4a.75.75 0 0 0-1.5 0V2H1.75a.75.75 0 0 0 0 1.5H6.5Zm1.25 5.25a.75.75 0 0 0 0-1.5h-6a.75.75 0 0 0 0 1.5h6ZM15 8a.75.75 0 0 1-.75.75H11.5V10a.75.75 0 1 1-1.5 0V6a.75.75 0 0 1 1.5 0v1.25h2.75A.75.75 0 0 1 15 8Zm-9 5.25v-2a.75.75 0 0 0-1.5 0v1.25H1.75a.75.75 0 0 0 0 1.5H4.5v1.25a.75.75 0 0 0 1.5 0v-2Zm9 0a.75.75 0 0 1-.75.75h-6a.75.75 0 0 1 0-1.5h6a.75.75 0 0 1 .75.75Z"></path></svg></span><span class="Primer_Brand__Button-module__Button__text___ED0bX"><span class="Primer_Brand__Text-module__Text___XeGJJ Primer_Brand__Text-module__Text-font--mona-sans___a8XJD Primer_Brand__Text-module__Text--default___GhPh_ Primer_Brand__Text-module__Text--100___B2ueX Primer_Brand__Text-module__Text--weight-medium___qJKf_ Primer_Brand__Button-module__Button--label___qrkyz Primer_Brand__Button-module__Button--label-subtle___8ndWH"></span></span></button><div class="Primer_Brand__Tooltip-module__Tooltip___0Eipx" data-direction="s" aria-hidden="true" id="_R_fbd_">Appearance settings</div></div></div></div></div><div class="MarketingHeader-module__bottomBorder__uZT38" aria-hidden="true"></div></header></div></div>
</react-partial>



      <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full">
  
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>
        <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span>

    <button id="icon-button-66d01d08-7baa-474c-bd2d-722ebab983fb" aria-labelledby="tooltip-207e7482-3de4-4bde-b02e-87c9077b3826" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close">  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
</button><tool-tip id="tooltip-207e7482-3de4-4bde-b02e-87c9077b3826" for="icon-button-66d01d08-7baa-474c-bd2d-722ebab983fb" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip>


  
</div>
    </div>

  <div id="start-of-content" class="show-on-focus"></div>








    <div id="js-flash-container" class="flash-container" data-turbo-replace>





  <template class="js-flash-template">
    
<div class="flash flash-full   {{ className }}">
  <div >
    <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    <div aria-atomic="true" role="alert" class="js-flash-alert">
      
      <div>{{ message }}</div>

    </div>
  </div>
</div>
  </template>
</div>


    






  <div
    class="application-main "
    data-commit-hovercards-enabled
    data-discussion-hovercards-enabled
    data-issue-and-pr-hovercards-enabled
    data-project-hovercards-enabled
  >
        <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
    <main id="js-repo-pjax-container" >
      
      
    

      <include-fragment src="/in-product-messaging/budget-threshold-banner?organization=APIJSON" data-nonce="v2:1bffb53d-f999-2193-c4e2-ddbb010df135" data-view-component="true">
  
  <div data-show-on-forbidden-error hidden>
    <div class="Box">
  <div class="blankslate-container">
    <div data-view-component="true" class="blankslate blankslate-spacious color-bg-default rounded-2">
      

      <h3 data-view-component="true" class="blankslate-heading">        Uh oh!
</h3>
      <p data-view-component="true" class="blankslate-description">        <p class="color-fg-muted my-2 mb-2 ws-normal">There was an error while loading. <a class="Link--inTextBlock" data-turbo="false" href="" aria-label="Please reload this page">Please reload this page</a>.</p>
</p>

</div>  </div>
</div>  </div>
</include-fragment>

    








  

    <div id="repository-container-header"  class="tmp-pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace>

        <div class="d-flex flex-nowrap flex-justify-end tmp-mb-3  tmp-px-3 tmp-px-lg-5" style="gap: 1rem;">

          <div class="flex-auto min-width-0 width-fit">
              
  <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2 tmp-mr-2">
    <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path>
</svg>
    
    <span class="author flex-self-stretch" itemprop="author">
      <a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/APIJSON/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/APIJSON">
        APIJSON
</a>    </span>
    <span class="mx-1 flex-self-stretch color-fg-muted">/</span>
    <strong itemprop="name" class="mr-2 flex-self-stretch">
      <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/APIJSON/APIJSON">APIJSON</a>
    </strong>

    <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span>
  </div>


          </div>

          <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;">
              <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
    
      

  <li>
            <a href="/login?return_to=%2FAPIJSON%2FAPIJSON" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/APIJSON/APIJSON/blob/master/Document.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c26cc4f50a61c3e4dc1863f466398e6ff6dce2aa9f02fc8587f72271f1eb6b7b" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn">    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2 tmp-mr-2">
    <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path>
</svg>Notifications
</a>    <tool-tip id="tooltip-6beb6070-b6bd-4545-a4be-2719f3897719" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip>

  </li>

  <li>
          <a icon="repo-forked" id="fork-button" href="/login?return_to=%2FAPIJSON%2FAPIJSON" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:74359442,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/APIJSON/APIJSON/blob/master/Document.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="8c5eccba01dc5e57b5111e85a80fa9d2af757242a436fdd65db05058f9359f6a" data-view-component="true" class="btn-sm btn">    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2 tmp-mr-2">
    <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path>
</svg>Fork
    <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="2,273" data-view-component="true" class="Counter">2.3k</span>
</a>
  </li>

  <li>
        <div data-view-component="true" class="BtnGroup d-flex">
        <a href="/login?return_to=%2FAPIJSON%2FAPIJSON" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:74359442,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/APIJSON/APIJSON/blob/master/Document.md&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="5186553a39f3a40a55185db3ad10b97fb6995fb7227db4f64fb5a4a4466f2123" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn">    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2 tmp-mr-2">
    <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path>
</svg><span data-view-component="true" class="d-inline">
          Star
</span>          <span id="repo-stars-counter-star" aria-label="18405 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="18,405" data-view-component="true" class="Counter js-social-count">18.4k</span>
</a></div>
  </li>

</ul>

          </div>
        </div>

          <div id="responsive-meta-container" data-turbo-replace>
</div>


            <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 tmp-px-3 px-md-4 tmp-px-md-4 px-lg-5 tmp-px-lg-5">

  <ul data-view-component="true" class="UnderlineNav-body list-style-none">
      <li data-view-component="true" class="d-inline-flex">
  <a id="code-tab" href="/APIJSON/APIJSON/tree/master" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /APIJSON/APIJSON/tree/master" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-command-id="repositories:go-to-code" data-react-nav="code-view" data-react-nav-anchor="code-view-repo-link" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline">
    <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path>
</svg>
        <span data-content="Code">Code</span>
          <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="issues-tab" href="/APIJSON/APIJSON/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /APIJSON/APIJSON/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-command-id="repositories:go-to-issues" data-react-nav="issues-react" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Issues&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline">
    <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path>
</svg>
        <span data-content="Issues">Issues</span>
          <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="236" data-view-component="true" class="Counter">236</span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="pull-requests-tab" href="/APIJSON/APIJSON/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /APIJSON/APIJSON/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-command-id="repositories:go-to-pull-requests" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline">
    <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path>
</svg>
        <span data-content="Pull requests">Pull requests</span>
          <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="actions-tab" href="/APIJSON/APIJSON/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /APIJSON/APIJSON/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-command-id="repositories:go-to-actions" data-react-nav="actions-workflows" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline">
    <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path>
</svg>
        <span data-content="Actions">Actions</span>
          <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="wiki-tab" href="/APIJSON/APIJSON/wiki" data-tab-item="i4wiki-tab" data-selected-links="repo_wiki /APIJSON/APIJSON/wiki" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g w" data-command-id="repositories:go-to-wiki" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Wiki&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book UnderlineNav-octicon d-none d-sm-inline">
    <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path>
</svg>
        <span data-content="Wiki">Wiki</span>
          <span id="wiki-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="security-and-quality-tab" href="/APIJSON/APIJSON/security" data-tab-item="i5security-and-quality-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /APIJSON/APIJSON/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-command-id="repositories:go-to-security" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security and quality&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline">
    <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        <span data-content="Security and quality">Security and quality</span>
          <span id="security-and-quality-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>


    
</a></li>
      <li data-view-component="true" class="d-inline-flex">
  <a id="insights-tab" href="/APIJSON/APIJSON/pulse" data-tab-item="i6insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /APIJSON/APIJSON/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-command-id="repositories:go-to-insights" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">
    
              <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline">
    <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path>
</svg>
        <span data-content="Insights">Insights</span>
          <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span>


    
</a></li>
</ul>
    <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 tmp-pr-3 pr-md-4 tmp-pr-md-4 pr-lg-5 tmp-pr-lg-5 right-0">      <action-menu data-select-variant="none" data-view-component="true">
  <focus-group direction="vertical" mnemonics retain>
    <button id="action-menu-ee7bc117-b7fa-4c20-b209-a2fa515e3a72-button" popovertarget="action-menu-ee7bc117-b7fa-4c20-b209-a2fa515e3a72-overlay" aria-controls="action-menu-ee7bc117-b7fa-4c20-b209-a2fa515e3a72-list" aria-haspopup="true" aria-labelledby="tooltip-d99d439b-188a-480d-b2c6-0843c0efa869" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item">  <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual">
    <path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path>
</svg>
</button><tool-tip id="tooltip-d99d439b-188a-480d-b2c6-0843c0efa869" for="action-menu-ee7bc117-b7fa-4c20-b209-a2fa515e3a72-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip>


<anchored-position data-target="action-menu.overlay" id="action-menu-ee7bc117-b7fa-4c20-b209-a2fa515e3a72-overlay" anchor="action-menu-ee7bc117-b7fa-4c20-b209-a2fa515e3a72-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true">
  <div data-view-component="true" class="Overlay Overlay--size-auto">
    
      <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone">          <action-list>
  <div data-view-component="true">
    <ul aria-labelledby="action-menu-ee7bc117-b7fa-4c20-b209-a2fa515e3a72-button" id="action-menu-ee7bc117-b7fa-4c20-b209-a2fa515e3a72-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap">
        <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-8cef126d-497a-47ec-beca-8c0570b800f7" href="/APIJSON/APIJSON/tree/master" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code">
    <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Code
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i1issues-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-856b38c8-9f47-45b3-859e-c2ff367492c4" href="/APIJSON/APIJSON/issues" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened">
    <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Issues
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i2pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-04e4f5e2-32d5-4197-aa06-6c9769ebdd0b" href="/APIJSON/APIJSON/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request">
    <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Pull requests
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i3actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-72197b98-be00-4568-ac35-85c5e201129c" href="/APIJSON/APIJSON/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play">
    <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Actions
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i4wiki-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-9b70dea1-efc3-433b-97c0-ff430ff9de38" href="/APIJSON/APIJSON/wiki" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book">
    <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Wiki
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i5security-and-quality-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-bb163450-4561-40a9-97de-c264cee97c60" href="/APIJSON/APIJSON/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield">
    <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Security and quality
</span>      
</a>
  
</li>
        <li hidden="hidden" data-menu-item="i6insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem">
    
    
    <a tabindex="-1" id="item-076a8ac7-08c3-4c13-a48f-71447267a4a7" href="/APIJSON/APIJSON/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16">
        <span class="ActionListItem-visual ActionListItem-visual--leading">
          <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph">
    <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path>
</svg>
        </span>
      
        <span data-view-component="true" class="ActionListItem-label">
          Insights
</span>      
</a>
  
</li>
</ul>    
</div></action-list>


</div>
      
</div></anchored-position>  </focus-group>
</action-menu></div>
</nav>

    </div>
  



<turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class="">
    <div id="repo-content-pjax-container" class="repository-content " >
    



    
      
    








<react-app
  app-name="code-view"
  initial-path="/APIJSON/APIJSON/blob/master/Document.md"
  style="display: block; min-height: calc(100vh - 64px);"
  data-attempted-ssr="true"
  data-ssr="true"
  data-lazy="false"
  data-alternate="false"
  data-data-router-enabled="true"
  data-react-profiling="false"
>
  
  <script type="application/json" data-target="react-app.embeddedData">{"payload":{"codeViewBlobRoute":{"csv":null,"csvError":null,"headerInfo":{"toc":[{"level":2,"text":"English | 中文","anchor":"english--中文","htmlText":"English | 中文"},{"level":4,"text":"A better online document is available at https://apijsondocs.readthedocs.io","anchor":"a-better-online-document-is-available-at-httpsapijsondocsreadthedocsio","htmlText":"A better online document is available at https://apijsondocs.readthedocs.io"},{"level":3,"text":"Examples:","anchor":"examples","htmlText":"Examples:"},{"level":4,"text":"Get a User","anchor":"get-a-user","htmlText":"Get a User"},{"level":4,"text":"Get an array of Users","anchor":"get-an-array-of-users","htmlText":"Get an array of Users"},{"level":4,"text":"Get a Moment and its publisher","anchor":"get-a-moment-and-its-publisher","htmlText":"Get a Moment and its publisher"},{"level":4,"text":"Get a Moment list like Twitter tweets","anchor":"get-a-moment-list-like-twitter-tweets","htmlText":"Get a Moment list like Twitter tweets"},{"level":2,"text":"API Design Rules","anchor":"api-design-rules","htmlText":"API Design Rules"},{"level":3,"text":"1. Methods and API endpoints","anchor":"1-methods-and-api-endpoints","htmlText":"1. Methods and API endpoints"},{"level":3,"text":"2. Keyswords in URL parameters","anchor":"2-keyswords-in-url-parameters","htmlText":"2. Keyswords in URL parameters"}]},"issueTemplate":null,"discussionTemplate":null,"richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eEnglish | \u003ca href=\"/APIJSON/APIJSON/blob/master/Document-Chinese.md\"\u003e中文\u003c/a\u003e\u003c/h2\u003e\u003ca id=\"user-content-english--中文\" class=\"anchor\" aria-label=\"Permalink: English | 中文\" href=\"#english--中文\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eA better online document is available at \u003ca href=\"https://apijsondocs.readthedocs.io\" rel=\"nofollow\"\u003ehttps://apijsondocs.readthedocs.io\u003c/a\u003e\u003c/h4\u003e\u003ca id=\"user-content-a-better-online-document-is-available-at-httpsapijsondocsreadthedocsio\" class=\"anchor\" aria-label=\"Permalink: A better online document is available at https://apijsondocs.readthedocs.io\" href=\"#a-better-online-document-is-available-at-httpsapijsondocsreadthedocsio\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eExamples:\u003c/h3\u003e\u003ca id=\"user-content-examples\" class=\"anchor\" aria-label=\"Permalink: Examples:\" href=\"#examples\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGet a User\u003c/h4\u003e\u003ca id=\"user-content-get-a-user\" class=\"anchor\" aria-label=\"Permalink: Get a User\" href=\"#get-a-user\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRequest:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"{\n  \u0026quot;User\u0026quot;:{\n  }\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e{\n  \"User\":{\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%22:%7B%7D%7D\" rel=\"nofollow\"\u003eClick here to test\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eResponse:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"{\n  \u0026quot;User\u0026quot;:{\n    \u0026quot;id\u0026quot;:38710,\n    \u0026quot;sex\u0026quot;:0,\n    \u0026quot;name\u0026quot;:\u0026quot;TommyLemon\u0026quot;,\n    \u0026quot;certified\u0026quot;:true,\n    \u0026quot;tag\u0026quot;:\u0026quot;Android\u0026amp;Java\u0026quot;,\n    \u0026quot;phone\u0026quot;:13000038710,\n    \u0026quot;head\u0026quot;:\u0026quot;http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\u0026quot;,\n    \u0026quot;date\u0026quot;:1485948110000,\n    \u0026quot;pictureList\u0026quot;:[\n      \u0026quot;http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\u0026quot;,\n      \u0026quot;http://common.cnblogs.com/images/icon_weibo_24.png\u0026quot;\n    ]\n  },\n  \u0026quot;code\u0026quot;:200,\n  \u0026quot;msg\u0026quot;:\u0026quot;success\u0026quot;\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e{\n  \"User\":{\n    \"id\":38710,\n    \"sex\":0,\n    \"name\":\"TommyLemon\",\n    \"certified\":true,\n    \"tag\":\"Android\u0026amp;Java\",\n    \"phone\":13000038710,\n    \"head\":\"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\",\n    \"date\":1485948110000,\n    \"pictureList\":[\n      \"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\",\n      \"http://common.cnblogs.com/images/icon_weibo_24.png\"\n    ]\n  },\n  \"code\":200,\n  \"msg\":\"success\"\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cbr\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003e\n  [GIF] APIJSON single objects: simple queries, statistics, groups, orders, aggregations, comparisons, filters, aliases, etc.\n\u003c/p\u003e \n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_single.gif\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_single.gif\" alt=\"\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGet an array of Users\u003c/h4\u003e\u003ca id=\"user-content-get-an-array-of-users\" class=\"anchor\" aria-label=\"Permalink: Get an array of Users\" href=\"#get-an-array-of-users\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRequest:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"{\n  \u0026quot;[]\u0026quot;:{\n    \u0026quot;count\u0026quot;:3, //just get 3 results\n    \u0026quot;User\u0026quot;:{\n      \u0026quot;@column\u0026quot;:\u0026quot;id,name\u0026quot; //just get ids and names\n    }\n  }\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e{\n  \"[]\":{\n    \"count\":3, //just get 3 results\n    \"User\":{\n      \"@column\":\"id,name\" //just get ids and names\n    }\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22@column%22:%22id,name%22%7D%7D%7D\" rel=\"nofollow\"\u003eClick here to test\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eResponse:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"{\n  \u0026quot;[]\u0026quot;:[\n    {\n      \u0026quot;User\u0026quot;:{\n        \u0026quot;id\u0026quot;:38710,\n        \u0026quot;name\u0026quot;:\u0026quot;TommyLemon\u0026quot;\n      }\n    },\n    {\n      \u0026quot;User\u0026quot;:{\n        \u0026quot;id\u0026quot;:70793,\n        \u0026quot;name\u0026quot;:\u0026quot;Strong\u0026quot;\n      }\n    },\n    {\n      \u0026quot;User\u0026quot;:{\n        \u0026quot;id\u0026quot;:82001,\n        \u0026quot;name\u0026quot;:\u0026quot;Android\u0026quot;\n      }\n    }\n  ],\n  \u0026quot;code\u0026quot;:200,\n  \u0026quot;msg\u0026quot;:\u0026quot;success\u0026quot;\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e{\n  \"[]\":[\n    {\n      \"User\":{\n        \"id\":38710,\n        \"name\":\"TommyLemon\"\n      }\n    },\n    {\n      \"User\":{\n        \"id\":70793,\n        \"name\":\"Strong\"\n      }\n    },\n    {\n      \"User\":{\n        \"id\":82001,\n        \"name\":\"Android\"\n      }\n    }\n  ],\n  \"code\":200,\n  \"msg\":\"success\"\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cbr\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003e\n  [GIF] APIJSON single arrays: simple queries, statistics, groups, orders, aggregations, paginations, searches, regexps, combinations, etc.\n\u003c/p\u003e \n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_array.gif\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_array.gif\" alt=\"\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGet a Moment and its publisher\u003c/h4\u003e\u003ca id=\"user-content-get-a-moment-and-its-publisher\" class=\"anchor\" aria-label=\"Permalink: Get a Moment and its publisher\" href=\"#get-a-moment-and-its-publisher\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRequest:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"{\n  \u0026quot;Moment\u0026quot;:{\n  },\n  \u0026quot;User\u0026quot;:{\n    \u0026quot;id@\u0026quot;:\u0026quot;Moment/userId\u0026quot;  //User.id = Moment.userId\n  }\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e{\n  \"Moment\":{\n  },\n  \"User\":{\n    \"id@\":\"Moment/userId\"  //User.id = Moment.userId\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22Moment%22:%7B%7D,%22User%22:%7B%22id@%22:%22Moment%252FuserId%22%7D%7D\" rel=\"nofollow\"\u003eClick here to test\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eResponse:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"{\n  \u0026quot;Moment\u0026quot;:{\n    \u0026quot;id\u0026quot;:12,\n    \u0026quot;userId\u0026quot;:70793,\n    \u0026quot;date\u0026quot;:\u0026quot;2017-02-08 16:06:11.0\u0026quot;,\n    \u0026quot;content\u0026quot;:\u0026quot;1111534034\u0026quot;\n  },\n  \u0026quot;User\u0026quot;:{\n    \u0026quot;id\u0026quot;:70793,\n    \u0026quot;sex\u0026quot;:0,\n    \u0026quot;name\u0026quot;:\u0026quot;Strong\u0026quot;,\n    \u0026quot;tag\u0026quot;:\u0026quot;djdj\u0026quot;,\n    \u0026quot;head\u0026quot;:\u0026quot;http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000\u0026quot;,\n    \u0026quot;contactIdList\u0026quot;:[\n      38710,\n      82002\n    ],\n    \u0026quot;date\u0026quot;:\u0026quot;2017-02-01 19:21:50.0\u0026quot;\n  },\n  \u0026quot;code\u0026quot;:200,\n  \u0026quot;msg\u0026quot;:\u0026quot;success\u0026quot;\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e{\n  \"Moment\":{\n    \"id\":12,\n    \"userId\":70793,\n    \"date\":\"2017-02-08 16:06:11.0\",\n    \"content\":\"1111534034\"\n  },\n  \"User\":{\n    \"id\":70793,\n    \"sex\":0,\n    \"name\":\"Strong\",\n    \"tag\":\"djdj\",\n    \"head\":\"http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000\",\n    \"contactIdList\":[\n      38710,\n      82002\n    ],\n    \"date\":\"2017-02-01 19:21:50.0\"\n  },\n  \"code\":200,\n  \"msg\":\"success\"\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGet a Moment list like Twitter tweets\u003c/h4\u003e\u003ca id=\"user-content-get-a-moment-list-like-twitter-tweets\" class=\"anchor\" aria-label=\"Permalink: Get a Moment list like Twitter tweets\" href=\"#get-a-moment-list-like-twitter-tweets\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRequest:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"{\n  \u0026quot;[]\u0026quot;:{                             //get an array\n    \u0026quot;page\u0026quot;:0,                        //pagination\n    \u0026quot;count\u0026quot;:2,\n    \u0026quot;Moment\u0026quot;:{                       //get a Moment\n      \u0026quot;content$\u0026quot;:\u0026quot;%a%\u0026quot;               //filter condition: content contains 'a'\n    },\n    \u0026quot;User\u0026quot;:{\n      \u0026quot;id@\u0026quot;:\u0026quot;/Moment/userId\u0026quot;,        //User.id = Moment.userId, short reference path，starts from grandparents path\n      \u0026quot;@column\u0026quot;:\u0026quot;id,name,head\u0026quot;       //get specified keys with the written order \n    },\n    \u0026quot;Comment[]\u0026quot;:{                    //get a Comment array, and unwrap Comment object\n      \u0026quot;count\u0026quot;:2,\n      \u0026quot;Comment\u0026quot;:{\n        \u0026quot;momentId@\u0026quot;:\u0026quot;[]/Moment/id\u0026quot;   //Comment.momentId = Moment.id, full reference path\n      }\n    }\n  }\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e{\n  \"[]\":{                             //get an array\n    \"page\":0,                        //pagination\n    \"count\":2,\n    \"Moment\":{                       //get a Moment\n      \"content$\":\"%a%\"               //filter condition: content contains 'a'\n    },\n    \"User\":{\n      \"id@\":\"/Moment/userId\",        //User.id = Moment.userId, short reference path，starts from grandparents path\n      \"@column\":\"id,name,head\"       //get specified keys with the written order \n    },\n    \"Comment[]\":{                    //get a Comment array, and unwrap Comment object\n      \"count\":2,\n      \"Comment\":{\n        \"momentId@\":\"[]/Moment/id\"   //Comment.momentId = Moment.id, full reference path\n      }\n    }\n  }\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22page%22:0,%22count%22:2,%22Moment%22:%7B%22content$%22:%22%2525a%2525%22%7D,%22User%22:%7B%22id@%22:%22%252FMoment%252FuserId%22,%22@column%22:%22id,name,head%22%7D,%22Comment%5B%5D%22:%7B%22count%22:2,%22Comment%22:%7B%22momentId@%22:%22%5B%5D%252FMoment%252Fid%22%7D%7D%7D%7D\" rel=\"nofollow\"\u003eClick here to test\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eResponse:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"{\n  \u0026quot;[]\u0026quot;:[\n    {\n      \u0026quot;Moment\u0026quot;:{\n        \u0026quot;id\u0026quot;:15,\n        \u0026quot;userId\u0026quot;:70793,\n        \u0026quot;date\u0026quot;:1486541171000,\n        \u0026quot;content\u0026quot;:\u0026quot;APIJSON is a JSON Transmission Protocol…\u0026quot;,\n        \u0026quot;praiseUserIdList\u0026quot;:[\n          82055,\n          82002,\n          82001\n        ],\n        \u0026quot;pictureList\u0026quot;:[\n          \u0026quot;http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\u0026quot;,\n          \u0026quot;http://common.cnblogs.com/images/icon_weibo_24.png\u0026quot;\n        ]\n      },\n      \u0026quot;User\u0026quot;:{\n        \u0026quot;id\u0026quot;:70793,\n        \u0026quot;name\u0026quot;:\u0026quot;Strong\u0026quot;,\n        \u0026quot;head\u0026quot;:\u0026quot;http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000\u0026quot;\n      },\n      \u0026quot;Comment[]\u0026quot;:[\n        {\n          \u0026quot;id\u0026quot;:176,\n          \u0026quot;toId\u0026quot;:166,\n          \u0026quot;userId\u0026quot;:38710,\n          \u0026quot;momentId\u0026quot;:15,\n          \u0026quot;date\u0026quot;:1490444883000,\n          \u0026quot;content\u0026quot;:\u0026quot;thank you\u0026quot;\n        },\n        {\n          \u0026quot;id\u0026quot;:1490863469638,\n          \u0026quot;toId\u0026quot;:0,\n          \u0026quot;userId\u0026quot;:82002,\n          \u0026quot;momentId\u0026quot;:15,\n          \u0026quot;date\u0026quot;:1490863469000,\n          \u0026quot;content\u0026quot;:\u0026quot;Just do it\u0026quot;\n        }\n      ]\n    },\n    {\n      \u0026quot;Moment\u0026quot;:{\n        \u0026quot;id\u0026quot;:58,\n        \u0026quot;userId\u0026quot;:90814,\n        \u0026quot;date\u0026quot;:1485947671000,\n        \u0026quot;content\u0026quot;:\u0026quot;This is a Content...-435\u0026quot;,\n        \u0026quot;praiseUserIdList\u0026quot;:[\n          38710,\n          82003,\n          82005,\n          93793,\n          82006,\n          82044,\n          82001\n        ],\n        \u0026quot;pictureList\u0026quot;:[\n          \u0026quot;http://static.oschina.net/uploads/img/201604/22172507_aMmH.jpg\u0026quot;\n        ]\n      },\n      \u0026quot;User\u0026quot;:{\n        \u0026quot;id\u0026quot;:90814,\n        \u0026quot;name\u0026quot;:7,\n        \u0026quot;head\u0026quot;:\u0026quot;http://static.oschina.net/uploads/user/51/102723_50.jpg?t=1449212504000\u0026quot;\n      },\n      \u0026quot;Comment[]\u0026quot;:[\n        {\n          \u0026quot;id\u0026quot;:13,\n          \u0026quot;toId\u0026quot;:0,\n          \u0026quot;userId\u0026quot;:82005,\n          \u0026quot;momentId\u0026quot;:58,\n          \u0026quot;date\u0026quot;:1485948050000,\n          \u0026quot;content\u0026quot;:\u0026quot;This is a Content...-13\u0026quot;\n        },\n        {\n          \u0026quot;id\u0026quot;:77,\n          \u0026quot;toId\u0026quot;:13,\n          \u0026quot;userId\u0026quot;:93793,\n          \u0026quot;momentId\u0026quot;:58,\n          \u0026quot;date\u0026quot;:1485948050000,\n          \u0026quot;content\u0026quot;:\u0026quot;This is a Content...-77\u0026quot;\n        }\n      ]\n    }\n  ],\n  \u0026quot;code\u0026quot;:200,\n  \u0026quot;msg\u0026quot;:\u0026quot;success\u0026quot;\n}\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003e{\n  \"[]\":[\n    {\n      \"Moment\":{\n        \"id\":15,\n        \"userId\":70793,\n        \"date\":1486541171000,\n        \"content\":\"APIJSON is a JSON Transmission Protocol…\",\n        \"praiseUserIdList\":[\n          82055,\n          82002,\n          82001\n        ],\n        \"pictureList\":[\n          \"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\",\n          \"http://common.cnblogs.com/images/icon_weibo_24.png\"\n        ]\n      },\n      \"User\":{\n        \"id\":70793,\n        \"name\":\"Strong\",\n        \"head\":\"http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000\"\n      },\n      \"Comment[]\":[\n        {\n          \"id\":176,\n          \"toId\":166,\n          \"userId\":38710,\n          \"momentId\":15,\n          \"date\":1490444883000,\n          \"content\":\"thank you\"\n        },\n        {\n          \"id\":1490863469638,\n          \"toId\":0,\n          \"userId\":82002,\n          \"momentId\":15,\n          \"date\":1490863469000,\n          \"content\":\"Just do it\"\n        }\n      ]\n    },\n    {\n      \"Moment\":{\n        \"id\":58,\n        \"userId\":90814,\n        \"date\":1485947671000,\n        \"content\":\"This is a Content...-435\",\n        \"praiseUserIdList\":[\n          38710,\n          82003,\n          82005,\n          93793,\n          82006,\n          82044,\n          82001\n        ],\n        \"pictureList\":[\n          \"http://static.oschina.net/uploads/img/201604/22172507_aMmH.jpg\"\n        ]\n      },\n      \"User\":{\n        \"id\":90814,\n        \"name\":7,\n        \"head\":\"http://static.oschina.net/uploads/user/51/102723_50.jpg?t=1449212504000\"\n      },\n      \"Comment[]\":[\n        {\n          \"id\":13,\n          \"toId\":0,\n          \"userId\":82005,\n          \"momentId\":58,\n          \"date\":1485948050000,\n          \"content\":\"This is a Content...-13\"\n        },\n        {\n          \"id\":77,\n          \"toId\":13,\n          \"userId\":93793,\n          \"momentId\":58,\n          \"date\":1485948050000,\n          \"content\":\"This is a Content...-77\"\n        }\n      ]\n    }\n  ],\n  \"code\":200,\n  \"msg\":\"success\"\n}\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003e\n  [GIF] APIJSON query multi related tables: one to one, one to many, many to one, various conditions, etc.\n\u003c/p\u003e \n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_associate.gif\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_associate.gif\" alt=\"\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cbr\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003e\n  [GIF] APIJSON joins: \u0026lt; LEFT JOIN, \u0026amp; INNER JOIN, etc.\n\u003c/p\u003e \n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_join.gif\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_join.gif\" alt=\"\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cbr\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003e\n  [GIF] APIJSON subqueries：@from@ FROM, key@ =, key\u0026gt;@ \u0026gt;, key{}@ IN, key}{@ EXISTS, etc.\n\u003c/p\u003e \n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_subquery.gif\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_subquery.gif\" alt=\"\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cbr\u003e\n\u003cp align=\"center\" dir=\"auto\"\u003e\n  [GIF] APIJSON: a set of some features, simple to complex\n\u003c/p\u003e \n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_summary.gif\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_summary.gif\" alt=\"\" data-animated-image=\"\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cbr\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"http://apijson.cn/api\" rel=\"nofollow\"\u003eTest it online\u003c/a\u003e\u003c/p\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAPI Design Rules\u003c/h2\u003e\u003ca id=\"user-content-api-design-rules\" class=\"anchor\" aria-label=\"Permalink: API Design Rules\" href=\"#api-design-rules\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e1. Methods and API endpoints\u003c/h3\u003e\u003ca id=\"user-content-1-methods-and-api-endpoints\" class=\"anchor\" aria-label=\"Permalink: 1. Methods and API endpoints\" href=\"#1-methods-and-api-endpoints\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eMethods\u003c/th\u003e\n\u003cth\u003eURL\u003c/th\u003e\n\u003cth\u003eRequest\u003c/th\u003e\n\u003cth\u003eResponse\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eGET\u003c/strong\u003e: \u003cbr\u003e A general way to get data.\u003cbr\u003e You can use dev tools to make edits in a web browser.\u003c/td\u003e\n\u003ctd\u003ebase_url/get/\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      //Add contiditions here.\u003cbr\u003e    }\u003cbr\u003e} \u003cbr\u003e \u003cbr\u003e Eg. To get a Moment with \u003ccode\u003eid = 235\u003c/code\u003e：\u003cbr\u003e{\u003cbr\u003e    \"Moment\":{\u003cbr\u003e      \"id\":235\u003cbr\u003e    }\u003cbr\u003e}\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      ...\u003cbr\u003e    },\u003cbr\u003e    \"code\":200,\u003cbr\u003e    \"msg\":\"success\"\u003cbr\u003e}\u003cbr\u003eEg.\u003cbr\u003e{\u003cbr\u003e    \"Moment\":{\u003cbr\u003e      \"id\":235,\u003cbr\u003e      \"userId\":38710,\u003cbr\u003e      \"content\":\"APIJSON is the real-time coding-free, powerful and secure ORM\"\u003cbr\u003e    },\u003cbr\u003e    \"code\":200,\u003cbr\u003e    \"msg\":\"success\"\u003cbr\u003e }\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eHEAD\u003c/strong\u003e: \u003cbr\u003e A general way to get counts.\u003cbr\u003e You can use dev tools to make edits in a web browser.\u003c/td\u003e\n\u003ctd\u003ebase_url/head/\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      …\u003cbr\u003e    }\u003cbr\u003e } \u003cbr\u003e {…} are conditions. \u003cbr\u003e\u003cbr\u003e Eg. Get the number of Moments posted by the user with \u003ccode\u003eid = 38710\u003c/code\u003e：\u003cbr\u003e{\u003cbr\u003e    \"Moment\":{\u003cbr\u003e      \"userId\":38710\u003cbr\u003e    }\u003cbr\u003e}\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      \"code\":200,\u003cbr\u003e      \"msg\":\"success\",\u003cbr\u003e      \"count\":10\u003cbr\u003e    },\u003cbr\u003e    \"code\":200,\u003cbr\u003e    \"msg\":\"success\"\u003cbr\u003e} \u003cbr\u003e Eg.\u003cbr\u003e{\u003cbr\u003e    \"Moment\":{\u003cbr\u003e      \"code\":200,\u003cbr\u003e      \"msg\":\"success\",\u003cbr\u003e      \"count\":10\u003cbr\u003e    },\u003cbr\u003e    \"code\":200,\u003cbr\u003e     \"msg\":\"success\"\u003cbr\u003e}\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eGETS\u003c/strong\u003e: \u003cbr\u003e Get data with high security and confidentiality.\u003cbr\u003e Eg. bank accounts, birth date.\u003c/td\u003e\n\u003ctd\u003ebase_url/gets/\u003c/td\u003e\n\u003ctd\u003eYou need to add \u003ccode\u003e\"tag\":tag\u003c/code\u003e with the same level of \u003ccode\u003eMoment:{}\u003c/code\u003e. Others are the same as \u003cstrong\u003eGET\u003c/strong\u003e.\u003c/td\u003e\n\u003ctd\u003eSame as \u003cstrong\u003eGET\u003c/strong\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eHEADS\u003c/strong\u003e: \u003cbr\u003e Get counts of confidential data(eg. bank account).\u003c/td\u003e\n\u003ctd\u003ebase_url/heads/\u003c/td\u003e\n\u003ctd\u003eYou need to add  \u003ccode\u003e\"tag\":tag\u003c/code\u003e with the same level of \u003ccode\u003eMoment:{}\u003c/code\u003e. Others are the same as \u003cstrong\u003eHEAD\u003c/strong\u003e.\u003c/td\u003e\n\u003ctd\u003eSame as \u003cstrong\u003eHEAD\u003c/strong\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePOST\u003c/strong\u003e: \u003cbr\u003e Add new data.\u003c/td\u003e\n\u003ctd\u003ebase_url/post/\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      …\u003cbr\u003e    },\u003cbr\u003e    \"tag\":tag\u003cbr\u003e} \u003cbr\u003e The id in {...} is generated automatically when table is built and can’t be set by the user. \u003cbr\u003e\u003cbr\u003eEg. A user with \u003ccode\u003eid = 38710\u003c/code\u003e posts a new Moment：\u003cbr\u003e{\u003cbr\u003e    \"Moment\":{\u003cbr\u003e      \"userId\":38710,\u003cbr\u003e      \"content\":\"APIJSON is the real-time coding-free, powerful and secure ORM\"\u003cbr\u003e    },\u003cbr\u003e    \"tag\":\"Moment\"\u003cbr\u003e}\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      \"code\":200,\u003cbr\u003e      \"msg\":\"success\",\u003cbr\u003e      \"id\":38710\u003cbr\u003e    },\u003cbr\u003e    \"code\":200,\u003cbr\u003e    \"msg\":\"success\"\u003cbr\u003e}\u003cbr\u003eEg.\u003cbr\u003e{\u003cbr\u003e    \"Moment\":{\u003cbr\u003e      \"code\":200,\u003cbr\u003e      \"msg\":\"success\",\u003cbr\u003e      \"id\":120\u003cbr\u003e    },\u003cbr\u003e    \"code\":200,\u003cbr\u003e    \"msg\":\"success\"\u003cbr\u003e}\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePUT\u003c/strong\u003e: \u003cbr\u003e Make changes to a specific item.\u003cbr\u003e Only change the part sent to server.\u003c/td\u003e\n\u003ctd\u003ebase_url/put/\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      \"id\":id,\u003cbr\u003e      …\u003cbr\u003e    },\u003cbr\u003e    \"tag\":tag\u003cbr\u003e} \u003cbr\u003e  You can also add multiple id as \u003ccode\u003eid{}\u003c/code\u003e.\u003cbr\u003e\u003cbr\u003eEg. Make changes to Moment's content with id= 235:\u003cbr\u003e{\u003cbr\u003e    \"Moment\":{\u003cbr\u003e      \"id\":235,\u003cbr\u003e      \"content\":\"APIJSON is the real-time coding-free, powerful and secure ORM\"\u003cbr\u003e    },\u003cbr\u003e    \"tag\":\"Moment\"\u003cbr\u003e}\u003c/td\u003e\n\u003ctd\u003eSame as \u003cstrong\u003ePOST\u003c/strong\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eDELETE\u003c/strong\u003e: \u003cbr\u003e Delete data.\u003c/td\u003e\n\u003ctd\u003ebase_url/delete/\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      \"id\":id\u003cbr\u003e    },\u003cbr\u003e    \"tag\":tag\u003cbr\u003e} \u003cbr\u003e You can also add multiple id as \u003ccode\u003eid{}\u003c/code\u003e. \u003cbr\u003e\u003cbr\u003e Or Delete contents with multiple id：\u003cbr\u003e{\u003cbr\u003e    \"Comment\":{\u003cbr\u003e      \"id{}\":[100,110,120]\u003cbr\u003e    },\u003cbr\u003e    \"tag\":\"Comment[]\"\u003cbr\u003e}\u003c/td\u003e\n\u003ctd\u003e{\u003cbr\u003e    TableName:{\u003cbr\u003e      \"code\":200,\u003cbr\u003e      \"msg\":\"success\",\u003cbr\u003e      \"id[]\":[100,110,120]\u003cbr\u003e      \"count\":3\u003cbr\u003e    },\u003cbr\u003e    \"code\":200,\u003cbr\u003e    \"msg\":\"success\"\u003cbr\u003e}\u003cbr\u003eEg.\u003cbr\u003e{\u003cbr\u003e   \"Comment\":{\u003cbr\u003e      \"code\":200,\u003cbr\u003e      \"msg\":\"success\",\u003cbr\u003e      \"id[]\":[100,110,120],\u003cbr\u003e      \"count\":3\u003cbr\u003e   },\u003cbr\u003e   \"code\":200,\u003cbr\u003e   \"msg\":\"success\"\u003cbr\u003e}\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eNote\u003c/strong\u003e:\u003cbr\u003e\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003eTableName means the name of the table where you get data. It’ll respond with a JSON Object(the form is {....})with columns inside.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e\"tag\":tag\u003c/code\u003e is needed when methods are not GET or HEAD. The tag after the colon is the key in JSON Object of making requests. Generally, it’s the name of the table you’re looking for.\u003c/li\u003e\n\u003cli\u003eGET, HEAD are methods for general data requests.They support versatile JSON Object structure. Other methods are used for requesting confidential data and the requesting JSON Object needs to be in the same form/order as that in the database. Otherwise, the request shall be denied.\u003c/li\u003e\n\u003cli\u003eGETS and GET, HEADS and HEAD return the same type of data. But the request form is a little different.\u003c/li\u003e\n\u003cli\u003eFor HTTP, all API methods (get,gets,head,heads,post,put,delete) make requests with HTTP POST.\u003c/li\u003e\n\u003cli\u003eAll JSON Objects here are with {...} form. You can put items or objects in it.\u003c/li\u003e\n\u003cli\u003eEach object in the database has a unique address.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cbr\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e2. Keyswords in URL parameters\u003c/h3\u003e\u003ca id=\"user-content-2-keyswords-in-url-parameters\" class=\"anchor\" aria-label=\"Permalink: 2. Keyswords in URL parameters\" href=\"#2-keyswords-in-url-parameters\"\u003e\u003csvg data-component=\"Octicon\" class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFunctions\u003c/th\u003e\n\u003cth\u003eKey-value pairs\u003c/th\u003e\n\u003cth\u003eExamples\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003eGet data in arrays\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key[]\":{}\u003c/code\u003e\u003cbr\u003e The part after the colon is a JSONObject. \u003cem\u003ekey\u003c/em\u003e is optional. When \u003cem\u003ekey\u003c/em\u003e is the same as the table name , the JSONObject will be in a simplified form. For example,  \u003ccode\u003e{Table:{Content}}\u003c/code\u003e will be written as \u003ccode\u003e{Content}\u003c/code\u003e.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%7D%7D%7D\" rel=\"nofollow\"\u003e{\"User[]\":{\"User\":{}}}\u003c/a\u003e \u003cbr\u003eIt is used for getting data from a user. Here, key and tablename are all \"User\", then \u003cbr\u003e\u003ccode\u003e{\"User\":{\"id\", ...}}\u003c/code\u003e \u003cbr\u003ewill be written as \u003cbr\u003e \u003ccode\u003e{\"id\", ...}\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGet data that meets specific conditions\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key{}\":[]\u003c/code\u003e \u003cbr\u003eThe part after the colon is a JSONArray with conditions inside.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22id%7B%7D%22:%5B38710,82001,70793%5D%7D%7D%7D\" rel=\"nofollow\"\u003e\"id{}\":[38710,82001,70793]\u003c/a\u003e \u003cbr\u003eIn SQL, this would be \u003ccode\u003eid IN(38710,82001,70793)\u003c/code\u003e. \u003cbr\u003eIt means getting data with id equals 38710,82001,70793.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGet data with comparison operation\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key{}\":\"condition0,condition1...\"\u003c/code\u003e\u003cbr\u003eConditions can be any SQL comparision operation. Use''to include any non-number characters.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22id%7B%7D%22:%22%3C=80000,%3E90000%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"id{}\":\"\u0026lt;=80000,\u0026gt;90000\"\u003c/a\u003e \u003cbr\u003eIn SQL, it'd be \u003cbr\u003e \u003ccode\u003eid\u0026lt;=80000 OR id\u0026gt;90000\u003c/code\u003e, \u003cbr\u003ewhich means get User array with id\u0026lt;=80000 | id\u0026gt;90000\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGet data that contains an element\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key\u0026lt;\u0026gt;\":Object\u003c/code\u003e  =\u0026gt;  \u003ccode\u003e\"key\u0026lt;\u0026gt;\":[Object]\u003c/code\u003e \u003cbr\u003e \u003cem\u003ekey\u003c/em\u003e must be a JSONArray while \u003cem\u003eObject\u003c/em\u003e cannot be JSON.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22contactIdList%3C%3E%22:38710%7D%7D%7D\" rel=\"nofollow\"\u003e\"contactIdList\u0026lt;\u0026gt;\":38710\u003c/a\u003e \u003cbr\u003eIn SQL, this would be \u003cbr\u003e\u003ccode\u003ejson_contains(contactIdList,38710)\u003c/code\u003e. \u003cbr\u003eIt means find data of the User whose contactList contains 38710.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSee if it exists\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key}{@\":{\u003c/code\u003e\u003cbr\u003e    \u003ccode\u003e\"from\":\"Table\",\u003c/code\u003e\u003cbr\u003e    \u003ccode\u003e\"Table\":{ ... }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e}\u003c/code\u003e\u003cbr\u003e\u003cbr\u003e}{ means EXISTS.\u003cbr\u003e \u003cem\u003ekey\u003c/em\u003e is the one you want to check. \u003cbr\u003eHere is a \u003cem\u003eSubquery\u003c/em\u003e in it, see specifications below for more information.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%22:%7B%22id%7D%7B@%22:%7B%22from%22:%22Comment%22,%22Comment%22:%7B%22momentId%22:15%7D%7D%7D%7D\" rel=\"nofollow\"\u003e\"id}{@\":{\u003cbr\u003e    \"from\":\"Comment\",\u003cbr\u003e    \"Comment\":{\u003cbr\u003e        \"momentId\":15 \u003cbr\u003e    }\u003cbr\u003e}\u003c/a\u003e\u003cbr\u003e WHERE EXISTS(SELECT * FROM Comment WHERE momentId=15)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eInclude functions in parameters\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key()\":\"function (key0,key1...)\"\u003c/code\u003e\u003cbr\u003eThis will trigger the back-end \u003cbr\u003e \u003ccode\u003efunction(JSONObject request, String key0, String key1...)\u003c/code\u003e \u003cbr\u003eto get or testify data.\u003cbr\u003e Use - and + to show the order of priority: analyze key-() \u0026gt; analyze the current object \u0026gt; analyze key() \u0026gt; analyze child object \u0026gt; analyze key+()\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22Moment%22:%7B%22id%22:301,%22isPraised()%22:%22isContain(praiseUserIdList,userId)%22%7D%7D\" rel=\"nofollow\"\u003e\"isPraised()\":\"isContain(praiseUserIdList,userId)\"\u003c/a\u003e \u003cbr\u003eThis will use function boolean isContain(JSONObject request, String array, String value). In this case, client will get \"isPraised\":true(In this case, client use function to testify if a user clicked ‘like’ button for a Moment.)\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eRefer a value\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key@\":\"key0/key1/.../refKey\"\u003c/code\u003e\u003cbr\u003eUse / to show path. The part before the colon is the key that wants to refer. The path after the colon starts with the parent level of the key.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22Moment%22:%7B%22userId%22:38710%7D,%22User%22:%7B%22id@%22:%22%252FMoment%252FuserId%22%7D%7D\" rel=\"nofollow\"\u003e\"Moment\":{\u003cbr\u003e    \"userId\":38710\u003cbr\u003e},\u003cbr\u003e\"User\":{\u003cbr\u003e    \"id@\":\"/Moment/userId\"\u003cbr\u003e}\u003c/a\u003e\u003cbr\u003e In this example, the value of id in User refer to the \u003cem\u003euserId\u003c/em\u003e in \u003cem\u003eMoment\u003c/em\u003e, which means \u003cbr\u003e\u003ccode\u003eUser.id = Moment.userId\u003c/code\u003e. \u003cbr\u003eAfter the request is sent, \u003cbr\u003e\u003ccode\u003e\"id@\":\"/Moment/userId\"\u003c/code\u003e will be \u003ccode\u003e\"id\":38710\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eSubquery\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key@\":{\u003c/code\u003e\u003cbr\u003e    \u003ccode\u003e\"range\":\"ALL\",\u003c/code\u003e \u003cbr\u003e    \u003ccode\u003e\"from\":\"Table\",\u003c/code\u003e\u003cbr\u003e    \u003ccode\u003e\"Table\":{ ... }\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e}\u003c/code\u003e\u003cbr\u003e\u003cem\u003erange\u003c/em\u003e can be ALL, ANY.\u003cbr\u003e\u003cem\u003efrom\u003c/em\u003e means which table you want to query. \u003cbr\u003eIt’s very similar to how you query in SQL. \u003cbr\u003eYou can also use \u003cem\u003ecount\u003c/em\u003e, \u003cem\u003ejoin\u003c/em\u003e, etc.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%22:%7B%22id@%22:%7B%22from%22:%22Comment%22,%22Comment%22:%7B%22@column%22:%22min(userId)%22%7D%7D%7D%7D\" rel=\"nofollow\"\u003e\"id@\":{\u003cbr\u003e    \"from\":\"Comment\",\u003cbr\u003e    \"Comment\":{\u003cbr\u003e        \"@column\":\"min(userId)\" \u003cbr\u003e    }\u003cbr\u003e}\u003c/a\u003e\u003cbr\u003e \u003ccode\u003eWHERE id=(SELECT min(userId) FROM Comment)\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eFuzzy matching\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key$\":\"SQL search expressions\"\u003c/code\u003e  =\u0026gt;  \u003ccode\u003e\"key$\":[\"SQL search expressions\"]\u003c/code\u003e\u003cbr\u003eAny SQL search expressions.Eg.%key%(include key), key%(start with key),%k%e%y%(include k, e, y). % means any characters.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22name$%22:%22%2525m%2525%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"name$\":\"%m%\"\u003c/a\u003e \u003cbr\u003eIn SQL, it's \u003cbr\u003e\u003ccode\u003ename LIKE '%m%'\u003c/code\u003e, \u003cbr\u003emeaning that get User with ‘m’ in name.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eRegular Expression\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key~\":\"regular expression\"\u003c/code\u003e  =\u0026gt;  \u003ccode\u003e\"key~\":[\"regular expression\"]\u003c/code\u003e\u003cbr\u003eIt can be any regular expressions.Eg. ^[0-9]+$ ，*~ not case sensitive, advanced search is applicable.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22name~%22:%22%5E%5B0-9%5D%252B$%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"name~\":\"^[0-9]+$\"\u003c/a\u003e \u003cbr\u003eIn SQL, it's \u003cbr\u003e\u003ccode\u003ename REGEXP '^[0-9]+$'\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eGet data in a range\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key%\":\"start,end\"\u003c/code\u003e  =\u0026gt;  \u003ccode\u003e\"key%\":[\"start,end\"]\u003c/code\u003e\u003cbr\u003eThe data type of start and end can only be either Boolean, Number or String. Eg. \"2017-01-01,2019-01-01\" ，[\"1,90000\", \"82001,100000\"]. It's used for getting data from a specific time range.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22date%2525%22:%222017-10-01,2018-10-01%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"date%\":\"2017-10-01,2018-10-01\"\u003c/a\u003e \u003cbr\u003eIn SQL, it's \u003cbr\u003e\u003ccode\u003edate BETWEEN '2017-10-01' AND '2018-10-01'\u003c/code\u003e, \u003cbr\u003emeaning to get User data that registered between 2017-10-01 and 2018-10-01.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eMake an alias\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"name:alias\"\u003c/code\u003e\u003cbr\u003ethis changes name to alias in returning results. It’s applicable to column, tableName, SQL Functions, etc. but only in GET, HEAD requests.\u003c/td\u003e\n\u003ctd\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22Comment%22:%7B%22@column%22:%22id,toId:parentId%22,%22id%22:51%7D%7D\" rel=\"nofollow\"\u003e\"@column\":\"toId:parentId\"\u003c/a\u003e \u003cbr\u003eIn SQL, it's \u003cbr\u003e\u003ccode\u003etoId AS parentId\u003c/code\u003e. \u003cbr\u003eIt'll return \u003ccode\u003eparentId\u003c/code\u003e instead of \u003ccode\u003etoId\u003c/code\u003e.\u003cbr\u003e\u003cbr\u003eFor @key format like \"lc_wai6b3vk2:(lc_wai6b3vk)\", it means renaming field lc_wai6b3vk2 to lc_wai6b3vk, commonly used for field renaming scenarios. Example:\u003cbr\u003e{\u003cbr\u003e  \"lc_sinan_ba074fbb\": {\u003cbr\u003e    \"lc_wai6b3vk\": \"11\",\u003cbr\u003e    \"lc_wai6b3vk2\": \"22\",\u003cbr\u003e    \"@combine\": \"lc_wai6b3vk | lc_wai6b3vk2\",\u003cbr\u003e    \"@key\": \"lc_wai6b3vk2:(lc_wai6b3vk)\"\u003cbr\u003e  }\u003cbr\u003e}\u003cbr\u003ecorresponds to SQL \u003ccode\u003e(lc_wai6b3vk = '11' OR lc_wai6b3vk2 = '22')\u003c/code\u003e, but the lc_wai6b3vk2 field will be renamed and displayed as lc_wai6b3vk in the returned result\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eAdd / expand an item\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"key+\":Object\u003c/code\u003e \u003cbr\u003e The type of Object is decided by \u003cem\u003ekey\u003c/em\u003e. Types can be Number, String, JSONArray. Froms are 82001,\"apijson\",[\"url0\",\"url1\"] respectively. It’s only applicable to PUT request.\u003c/td\u003e\n\u003ctd\u003e\"praiseUserIdList+\":[82001]. In SQL, it's \u003cbr\u003e\u003ccode\u003ejson_insert(praiseUserIdList,82001)\u003c/code\u003e. \u003cbr\u003eAdd an \u003cem\u003eid\u003c/em\u003e that praised the Moment.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eDelete / decrease an item\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"Key-\":Object\u003c/code\u003e\u003cbr\u003e It’s the contrary of \"key+\"\u003c/td\u003e\n\u003ctd\u003e\"balance-\":100.00. In SQL, it's \u003cbr\u003e\u003ccode\u003ebalance = balance - 100.00\u003c/code\u003e, \u003cbr\u003emeaning there's 100 less in balance.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eOperations\u003c/td\u003e\n\u003ctd\u003e\u0026amp;, |, ! \u003cbr\u003e They're used in logic operations. It’s the same as AND, OR, NOT in SQL respectively. \u003cbr\u003eBy default, for the same key, it’s ‘|’ (OR)operation among conditions; for different keys, the default operation among conditions is ‘\u0026amp;’(AND). \u003cbr\u003e\u003c/td\u003e\n\u003ctd\u003e① \u003ca href=\"http://apijson.cn:8080/head/%7B%22User%22:%7B%22id\u0026amp;%7B%7D%22:%22%3E80000,%3C=90000%22%7D%7D\" rel=\"nofollow\"\u003e\"id\u0026amp;{}\":\"\u0026gt;80000,\u0026lt;=90000\"\u003c/a\u003e \u003cbr\u003eIn SQL, it's \u003cbr\u003e\u003ccode\u003eid\u0026gt;80000 AND id\u0026lt;=90000\u003c/code\u003e, \u003cbr\u003emeaning \u003cem\u003eid\u003c/em\u003e needs to be id\u0026gt;80000 \u0026amp; id\u0026lt;=90000\u003cbr\u003e\u003cbr\u003e ② \u003ca href=\"http://apijson.cn:8080/head/%7B%22User%22:%7B%22id%7C%7B%7D%22:%22%3E90000,%3C=80000%22%7D%7D\" rel=\"nofollow\"\u003e\"id|{}\":\"\u0026gt;90000,\u0026lt;=80000\"\u003c/a\u003e \u003cbr\u003eIt's the same as \"id{}\":\"\u0026gt;90000,\u0026lt;=80000\". \u003cbr\u003eIn SQL, it's \u003cbr\u003e\u003ccode\u003eid\u0026gt;80000 OR id\u0026lt;=90000\u003c/code\u003e, \u003cbr\u003emeaning that \u003cem\u003eid\u003c/em\u003e needs to be id\u0026gt;90000 | id\u0026lt;=80000\u003cbr\u003e\u003cbr\u003e ③ \u003ca href=\"http://apijson.cn:8080/head/%7B%22User%22:%7B%22id!%7B%7D%22:%5B82001,38710%5D%7D%7D\" rel=\"nofollow\"\u003e\"id!{}\":[82001,38710]\u003c/a\u003e \u003cbr\u003eIn SQL, it's \u003cbr\u003e\u003ccode\u003eid NOT IN(82001,38710)\u003c/code\u003e, \u003cbr\u003emeaning id needs to be ! (id=82001 | id=38710).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eKeywords in an Array: It can be self-defined.\u003c/td\u003e\n\u003ctd\u003eAs for \u003ccode\u003e\"key\":Object\u003c/code\u003e, \u003cem\u003ekey\u003c/em\u003e is the keyword of \u003cem\u003e{}\u003c/em\u003e in \u003cem\u003e\"[]\":{}\u003c/em\u003e. The type of \u003cem\u003eObject\u003c/em\u003e is up to \u003cem\u003ekey\u003c/em\u003e.\u003cbr\u003e\u003cbr\u003e① \u003ccode\u003e\"count\":Integer\u003c/code\u003e It's used to count the number. The default largest number is 100. \u003cbr\u003e\u003cbr\u003e② \u003ccode\u003e\"page\":Integer\u003c/code\u003e It’s used for getting data from which page, starting from 0. The default largest number is 100. It’s usually used with COUNT. \u003cbr\u003e\u003cbr\u003e③ \u003ccode\u003e\"query\":Integer\u003c/code\u003e Get the number of items that match conditions\u003cbr\u003eWhen to get the object, the integer should be 0; when to get the total number, it’s 1; when both above, it’s 2.\u003cbr\u003eYou can get the total number with keyword total. It can be referred to other values. \u003cbr\u003eEg. \u003cbr\u003e\u003ccode\u003e\"total@\":\"/[]/total\"\u003c/code\u003e \u003cbr\u003ePut it as the same level of query.  \u003cbr\u003e\u003cem\u003eQuery\u003c/em\u003e and \u003cem\u003etotal\u003c/em\u003e are used in GET requests just for convenience. Generally, HEAD request is for getting numbers like the total number.\u003cbr\u003e\u003cbr\u003e④ \u003ccode\u003e\"join\":\"\u0026amp;/Table0,\u0026lt;/Table1\"\u003c/code\u003e\u003cbr\u003eJoin tables：\u003cbr\u003e \"\u0026lt;\" - LEFT JOIN \u003cbr\u003e \"\u0026gt;\" - RIGHT JOIN \u003cbr\u003e \"\u0026amp;\" - INNER JOIN \u003cbr\u003e \"|\" - FULL JOIN \u003cbr\u003e  \"!\" - OUTER JOIN \u003cbr\u003e \"@\" - APP JOIN \u003cbr\u003eWhere @ APP JOIN is in application layer.It’ll get all the keys in tables that refKeys in result tables are referred to, like refKeys:[value0, value1….]. Then, as the results get data according to \u003ccode\u003ekey=$refKey\u003c/code\u003e a number of times (COUNT), it uses key \u003ccode\u003eIN($refKeys)\u003c/code\u003e to put these counts together in just one SQL query, in order to improve the performance.\u003cbr\u003e Other JOIN functions are the same as those in SQL. \u003cbr\u003e\u003ccode\u003e\"join\":\"\u0026lt;/ViceTable\",\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e\"MainTable\":{},\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e\"ViceTable\":{\"key@\":\"/MainTable/refKey\"}\u003c/code\u003e\u003cbr\u003ewill return \u003cbr\u003e\u003ccode\u003eMainTable LEFT JOIN ViceTable\u003c/code\u003e \u003cbr\u003e\u003ccode\u003eON ViceTable.key=MainTable.refKey\u003c/code\u003e \u003cbr\u003e\u003cbr\u003e⑤ \u003ccode\u003e\"otherKey\":Object\u003c/code\u003e Self-defined keyword other than those that already in the system. It also returns with self-defined keywords.\u003c/td\u003e\n\u003ctd\u003e① Get User arrays with maximum of 5：\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:5,%22User%22:%7B%7D%7D%7D\" rel=\"nofollow\"\u003e\"count\":5\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ② Look into User arrays on page 3. Show 5 of them each page. \u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:5,%22page%22:3,%22User%22:%7B%7D%7D%7D\" rel=\"nofollow\"\u003e\"count\":5,\u003cbr\u003e\"page\":3\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ③ Get User Arrays and count the total number of Users：\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22query%22:2,%22count%22:5,%22User%22:%7B%7D%7D,%22total@%22:%22%252F%5B%5D%252Ftotal%22%7D\" rel=\"nofollow\"\u003e\"[]\":{\u003cbr\u003e    \"query\":2,\u003cbr\u003e    \"User\":{}\u003cbr\u003e},\u003cbr\u003e\"total@\":\"/[]/total\"\u003c/a\u003e\u003cbr\u003eQuestions like total page numbers or if there's next page can be solved by total,count,page functions，\u003cbr\u003eTotal page number: \u003cbr\u003e\u003ccode\u003eint totalPage = Math.ceil(total / count)\u003c/code\u003e\u003cbr\u003eIf this is the last page: \u003cbr\u003e\u003ccode\u003eboolean hasNextPage = total \u0026gt; count*page\u003c/code\u003e\u003cbr\u003eIf this is the first page: \u003cbr\u003e\u003ccode\u003eboolean isFirstPage = page \u0026lt;= 0\u003c/code\u003e\u003cbr\u003eIf it's the last page: \u003cbr\u003e\u003ccode\u003eboolean isLastPage = total \u0026lt;= count*page\u003c/code\u003e\u003cbr\u003e... \u003cbr\u003e\u003cbr\u003e ④ Moment INNER JOIN User LEFT JOIN Comment：\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:5,%22join%22:%22\u0026amp;%252FUser,%3C%252FComment%22,%22Moment%22:%7B%22@column%22:%22id,userId,content%22%7D,%22User%22:%7B%22name~%22:%22t%22,%22id@%22:%22%252FMoment%252FuserId%22,%22@column%22:%22id,name,head%22%7D,%22Comment%22:%7B%22momentId@%22:%22%252FMoment%252Fid%22,%22@column%22:%22id,momentId,content%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"[]\":{\u003cbr\u003e    \"join\": \"\u0026amp;/User,\u0026lt;/Comment\",\u003cbr\u003e    \"Moment\":{},\u003cbr\u003e    \"User\":{\u003cbr\u003e      \"name~\":\"t\",\u003cbr\u003e      \"id@\": \"/Moment/userId\"\u003cbr\u003e    },\u003cbr\u003e    \"Comment\":{\u003cbr\u003e      \"momentId@\": \"/Moment/id\"\u003cbr\u003e    }\u003cbr\u003e}\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ⑤ Add the current user to every level：\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%22:%7B%7D,%22%5B%5D%22:%7B%22name@%22:%22User%252Fname%22,%22Moment%22:%7B%7D%7D%7D\" rel=\"nofollow\"\u003e\"User\":{},\u003cbr\u003e\"[]\":{\u003cbr\u003e    \"name@\":\"User/name\", //self-defined keyword\u003cbr\u003e    \"Moment\":{}\u003cbr\u003e}\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eKeywords in Objects: It can be self-defined.\u003c/td\u003e\n\u003ctd\u003e\u003ccode\u003e\"@key\":Object\u003c/code\u003e @key is the keyword of {} in Table:{}. The type of Object is decided by @key\u003cbr\u003e\u003cbr\u003e① \u003ccode\u003e\"@combine\":\"\u0026amp;key0,\u0026amp;key1,|key2,key3,\u003c/code\u003e\u003cbr\u003e\u003ccode\u003e!key4,!key5,\u0026amp;key6,key7...\"\u003c/code\u003e\u003cbr\u003eFirst, it’ll group data with same operators. Within one group, it operates from left to right. Then it’ll follow the order of \u0026amp; | ! to do the operation. Different groups are connected with \u0026amp;. So the expression above will be : \u003cbr\u003e (key0 \u0026amp; key1 \u0026amp; key6 \u0026amp; other key) \u0026amp; (key2 | key3 | key7) \u0026amp; !(key4 | key5) \u003cbr\u003e| is optional. \u003cbr\u003e\u003cbr\u003e② \u003ccode\u003e\"@column\":\"column;function(arg)...\"\u003c/code\u003e Return with specific columns.\u003cbr\u003e\u003cbr\u003e③ \u003ccode\u003e\"@order\":\"column0+,column1-...\"\u003c/code\u003e Decide the order of returning results:\u003cbr\u003e\u003cbr\u003e④ \u003ccode\u003e\"@group\":\"column0,column1...\"\u003c/code\u003e How to group data. If @column has declared Table id, this id need to be included in @group. In other situations, at least one of the following needs to be done:\u003cbr\u003e1.Group id is declared in @column\u003cbr\u003e2.Primary Key of the table is declared in @group.\u003cbr\u003e\u003cbr\u003e⑤ \u003ccode\u003e@having\":\"function0(...)?value0;function1(...)?value1;function2(...)?value2...\"\u003c/code\u003e Add conditions on return results with @having. Usually working with@group, it’s declared in @column.\u003cbr\u003e\u003cbr\u003e⑥ \u003ccode\u003e\"@schema\":\"sys\"\u003c/code\u003e Can be set as default setting.\u003cbr\u003e\u003cbr\u003e⑦ \u003ccode\u003e\"@database\":\"POSTGRESQL\"\u003c/code\u003e Get data from a different database.Can be set as default setting.\u003cbr\u003e\u003cbr\u003e⑧ \u003ccode\u003e\"@role\":\"OWNER\"\u003c/code\u003e Get information of the user, including \u003cbr\u003eUNKNOWN,LOGIN,CONTACT,CIRCLE,OWNER,ADMIN，\u003cbr\u003eCan be set as default setting. \u003cbr\u003eYou can self-define a new role or rewrite a role.  Use\u003ccode\u003eVerifier.verify\u003c/code\u003e etc. to self-define validation methods. \u003cbr\u003e\u003cbr\u003e⑨ \u003ccode\u003e\"@explain\":true\u003c/code\u003e Profiling. Can be set as default setting. \u003cbr\u003e\u003cbr\u003e⑩ \u003ccode\u003e\"@otherKey\":Object\u003c/code\u003e Self-define keyword\u003c/td\u003e\n\u003ctd\u003e① Search \u003cem\u003eUsers\u003c/em\u003e that \u003cem\u003ename\u003c/em\u003e or \u003cem\u003etag\u003c/em\u003e contains the letter \"a\":\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:10,%22User%22:%7B%22@column%22:%22id,name,tag%22,%22name~%22:%22a%22,%22tag~%22:%22a%22,%22@combine%22:%22name~,tag~%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"name~\":\"a\",\u003cbr\u003e\"tag~\":\"a\",\u003cbr\u003e\"@combine\":\"name~,tag~\"\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ② Only search column id,sex,name and return with the same order:\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%22:%7B%22@column%22:%22id,sex,name%22,%22id%22:38710%7D%7D\" rel=\"nofollow\"\u003e\"@column\":\"id,sex,name\"\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ③ Search Users that have descending order of name and default order of id:\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:10,%22User%22:%7B%22@column%22:%22name,id%22,%22@order%22:%22name-,id%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"@order\":\"name-,id\"\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ④ Search Moment grouped with userId: \u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:10,%22Moment%22:%7B%22@column%22:%22userId,id%22,%22@group%22:%22userId,id%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"@group\":\"userId,id\"\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ⑤ Search Moments that id equals or less than 100 and group with userId:\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:10,%22Moment%22:%7B%22@column%22:%22userId%253Bmax(id)%22,%22@group%22:%22userId%22,%22@having%22:%22max(id)%3E=100%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"@column\":\"userId;max(id)\",\u003cbr\u003e\"@group\":\"userId\",\u003cbr\u003e\"@having\":\"max(id)\u0026gt;=100\"\u003c/a\u003e\u003cbr\u003eYou can also define the name of the returned function:\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:10,%22Moment%22:%7B%22@column%22:%22userId%253Bmax(id):maxId%22,%22@group%22:%22userId%22,%22@having%22:%22(maxId)%3E=100%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"@column\":\"userId;max(id):maxId\",\u003cbr\u003e\"@group\":\"userId\",\u003cbr\u003e\"@having\":\"(maxId)\u0026gt;=100\"\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ⑥ Check Users table in sys: \u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%22:%7B%22@schema%22:%22sys%22%7D%7D\" rel=\"nofollow\"\u003e\"@schema\":\"sys\"\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ⑦ Check Users table in PostgreSQL:\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%22:%7B%22@database%22:%22POSTGRESQL%22%7D%7D\" rel=\"nofollow\"\u003e\"@database\":\"POSTGRESQL\"\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ⑧ Check the current user's activity:\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22Moment%22:%7B%22@role%22:%22OWNER%22%7D%7D%7D\" rel=\"nofollow\"\u003e\"@role\":\"OWNER\"\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ⑨ Turn on profiling: \u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22Moment%22:%7B%22@explain%22:true%7D%7D%7D\" rel=\"nofollow\"\u003e\"@explain\":true\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ⑩ Get the No.0 picture from pictureList：\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22User%22:%7B%22id%22:38710,%22@position%22:0,%22firstPicture()%22:%22getFromArray(pictureList,@position)%22%7D%7D\" rel=\"nofollow\"\u003e\"@position\":0, //self-defined keyword\u003cbr\u003e\"firstPicture()\":\"getFromArray(pictureList,@position)\"\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003eglobal keyword.\u003c/td\u003e\n\u003ctd\u003eIt is a keyword inside the outermost object {}. Among them, @database, @schema, @datasource, @role, and @explain are basically the same as object keywords, see the above description, the difference is that the global keywords will be automatically inserted in each table object as the default value. \u003cbr\u003e\u003cbr\u003e① \"tag\": String, the following tag is the identifier of the JSON structure matching the request in non-GET or HEAD requests, generally it is the name of the Table to be queried or the array Table[] or Table:[] corresponding to the name, determined by the backend specified in the Request table. \u003cbr\u003e\u003cbr\u003e ② \"version\": Integer, the interface version. If the version is not passed, null or \u0026lt;=0, the highest version will be used. If other valid values are passed, the lowest version closest to it will be used, which is specified in the backend Request table.\u003cbr\u003e\u003cbr\u003e ③ \"format\": Boolean, formatted to return the key of the Response JSON, generally converting TableName to tableName, TableName[] to tableNameList, Table:alias to alias, TableName-key[] to tableNameKeyList and other camelcase formats.\u003c/td\u003e\n\u003ctd\u003e①  Check private information:：\u003cbr\u003e\u003ca href=\"http://apijson.cn/api?url=http%3A%2F%2Fapijson.cn%3A8080%2Fgets\u0026amp;type=JSON\u0026amp;json=%7B%22tag%22:%22Privacy%22,%22Privacy%22:%7B%22id%22:82001%7D%7D\" rel=\"nofollow\"\u003e{\"tag\":\"Privacy\",\"Privacy\":{\"id\":82001}}\u003c/a\u003e\u003cbr\u003e\u003cbr\u003e ② Use the version 1 interface to check private information:：\u003cbr\u003e\u003ca href=\"http://apijson.cn/api?url=http%3A%2F%2Fapijson.cn%3A8080%2Fgets\u0026amp;type=JSON\u0026amp;json=%7B%22version%22:1,%22tag%22:%22Privacy%22,%22Privacy%22:%7B%22id%22:82001%7D%7D\" rel=\"nofollow\"\u003e{\"version\":1,\"tag\":\"Privacy\",\"Privacy\":{\"id\":82001}}\u003c/a\u003e \u003cbr\u003e\u003cbr\u003e ③ Format Moments interface to return in JSON key：\u003cbr\u003e\u003ca href=\"http://apijson.cn:8080/get/%7B%22format%22:true,%22%5B%5D%22:%7B%22page%22:0,%22count%22:3,%22Moment%22:%7B%7D,%22User%22:%7B%22id@%22:%22%252FMoment%252FuserId%22%7D,%22Comment%5B%5D%22:%7B%22count%22:3,%22Comment%22:%7B%22momentId@%22:%22%5B%5D%252FMoment%252Fid%22%7D%7D%7D%7D\" rel=\"nofollow\"\u003e{\u003cbr\u003e    \"format\":true, \u003cbr\u003e    \"[]\":{\u003cbr\u003e      \"page\":0, \u003cbr\u003e      \"count\":3, \u003cbr\u003e      \"Moment\":{}, \u003cbr\u003e      \"User\":{\u003cbr\u003e        \"id@\":\"/Moment/userId\"\u003cbr\u003e      },\u003cbr\u003e      \"Comment[]\":{\u003cbr\u003e        \"count\":3,\u003cbr\u003e        \"Comment\":{\u003cbr\u003e          \"momentId@\":\"[]/Moment/id\"\u003cbr\u003e        }\u003cbr\u003e      }\u003cbr\u003e    }\u003cbr\u003e}\u003c/a\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003cbr\u003e\n\u003c/article\u003e","richTextTruncated":false,"renderedFileInfo":null,"symbols":{"timed_out":false,"not_analyzed":false,"symbols":[{"name":"English | [中文](/Document-Chinese.md)","fully_qualified_name":"English | [中文](/Document-Chinese.md)","kind":"section_2","ident_start":3,"ident_end":43,"extent_start":0,"extent_end":6936,"ident_utf16":{"start":{"line_number":0,"utf16_col":3},"end":{"line_number":0,"utf16_col":39}},"extent_utf16":{"start":{"line_number":0,"utf16_col":0},"end":{"line_number":290,"utf16_col":0}}},{"name":"A better online document is available at https://apijsondocs.readthedocs.io","fully_qualified_name":"A better online document is available at https://apijsondocs.readthedocs.io","kind":"section_4","ident_start":50,"ident_end":125,"extent_start":45,"extent_end":127,"ident_utf16":{"start":{"line_number":2,"utf16_col":5},"end":{"line_number":2,"utf16_col":80}},"extent_utf16":{"start":{"line_number":2,"utf16_col":0},"end":{"line_number":4,"utf16_col":0}}},{"name":"Examples:","fully_qualified_name":"Examples:","kind":"section_3","ident_start":131,"ident_end":140,"extent_start":127,"extent_end":6936,"ident_utf16":{"start":{"line_number":4,"utf16_col":4},"end":{"line_number":4,"utf16_col":13}},"extent_utf16":{"start":{"line_number":4,"utf16_col":0},"end":{"line_number":290,"utf16_col":0}}},{"name":"Get a User","fully_qualified_name":"Get a User","kind":"section_4","ident_start":147,"ident_end":157,"extent_start":142,"extent_end":1097,"ident_utf16":{"start":{"line_number":6,"utf16_col":5},"end":{"line_number":6,"utf16_col":15}},"extent_utf16":{"start":{"line_number":6,"utf16_col":0},"end":{"line_number":45,"utf16_col":0}}},{"name":"Get an array of Users","fully_qualified_name":"Get an array of Users","kind":"section_4","ident_start":1102,"ident_end":1123,"extent_start":1097,"extent_end":2045,"ident_utf16":{"start":{"line_number":45,"utf16_col":5},"end":{"line_number":45,"utf16_col":26}},"extent_utf16":{"start":{"line_number":45,"utf16_col":0},"end":{"line_number":96,"utf16_col":0}}},{"name":"Get a Moment and its publisher","fully_qualified_name":"Get a Moment and its publisher","kind":"section_4","ident_start":2050,"ident_end":2080,"extent_start":2045,"extent_end":2806,"ident_utf16":{"start":{"line_number":96,"utf16_col":5},"end":{"line_number":96,"utf16_col":35}},"extent_utf16":{"start":{"line_number":96,"utf16_col":0},"end":{"line_number":136,"utf16_col":0}}},{"name":"Get a Moment list like Twitter tweets","fully_qualified_name":"Get a Moment list like Twitter tweets","kind":"section_4","ident_start":2811,"ident_end":2848,"extent_start":2806,"extent_end":6936,"ident_utf16":{"start":{"line_number":136,"utf16_col":5},"end":{"line_number":136,"utf16_col":42}},"extent_utf16":{"start":{"line_number":136,"utf16_col":0},"end":{"line_number":290,"utf16_col":0}}},{"name":"API Design Rules","fully_qualified_name":"API Design Rules","kind":"section_2","ident_start":6939,"ident_end":6955,"extent_start":6936,"extent_end":31986,"ident_utf16":{"start":{"line_number":290,"utf16_col":3},"end":{"line_number":290,"utf16_col":19}},"extent_utf16":{"start":{"line_number":290,"utf16_col":0},"end":{"line_number":340,"utf16_col":0}}},{"name":"1. Methods and API endpoints","fully_qualified_name":"1. Methods and API endpoints","kind":"section_3","ident_start":6961,"ident_end":6989,"extent_start":6957,"extent_end":13239,"ident_utf16":{"start":{"line_number":292,"utf16_col":4},"end":{"line_number":292,"utf16_col":32}},"extent_utf16":{"start":{"line_number":292,"utf16_col":0},"end":{"line_number":315,"utf16_col":0}}},{"name":"2. Keyswords in URL parameters","fully_qualified_name":"2. Keyswords in URL parameters","kind":"section_3","ident_start":13243,"ident_end":13273,"extent_start":13239,"extent_end":31986,"ident_utf16":{"start":{"line_number":315,"utf16_col":4},"end":{"line_number":315,"utf16_col":34}},"extent_utf16":{"start":{"line_number":315,"utf16_col":0},"end":{"line_number":340,"utf16_col":0}}}]}},"codeViewLayoutRoute":{"repo":{"id":74359442,"defaultBranch":"main","name":"APIJSON","ownerLogin":"APIJSON","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-11-21T12:03:29.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/41146037?v=4","public":true,"private":false,"isOrgOwned":true,"isArchived":false},"currentUser":null,"uploadToken":"avhW1e8jPjJQK9ymfd1Rny3T43kubcOfFdOhqNQKCYWULsgxgcfz-jf5bORZFNrcQmcHCRrec3Kz-Bxl4g17QA","allShortcutsEnabled":false,"treeExpanded":true,"path":"Document.md","symbolsExpanded":false,"refInfo":{"name":"master","listCacheKey":"v0:1789182757.0","canEdit":false,"currentOid":"8b24f7b313359100b0a2fc235b8446c90359170d"},"helpUrl":"https://docs.github.com","githubDevUrl":null},"codeViewFileTreeLayoutRoute":{"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"APIJSONORM","path":"APIJSONORM","contentType":"directory"},{"name":"assets","path":"assets","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"APIJSON初期构思及实现.docx","path":"APIJSON初期构思及实现.docx","contentType":"file"},{"name":"APIJSON初期构思及实现.pages","path":"APIJSON初期构思及实现.pages","contentType":"file"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","contentType":"file"},{"name":"CONTRIBUTING_COMMIT.md","path":"CONTRIBUTING_COMMIT.md","contentType":"file"},{"name":"Document-Chinese.md","path":"Document-Chinese.md","contentType":"file"},{"name":"Document.md","path":"Document.md","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"Navigation.md","path":"Navigation.md","contentType":"file"},{"name":"README-Chinese.md","path":"README-Chinese.md","contentType":"file"},{"name":"README-extend.md","path":"README-extend.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"Roadmap.md","path":"Roadmap.md","contentType":"file"},{"name":"context7.json","path":"context7.json","contentType":"file"},{"name":"logo.png","path":"logo.png","contentType":"file"},{"name":"详细的说明文档.md","path":"详细的说明文档.md","contentType":"file"}],"totalCount":19}},"fileTreeProcessingTime":39.480207,"foldersToFetch":[]},"codeViewBlobLayoutRoute":{"codeLineWrapEnabled":false,"refInfo":{"name":"master","listCacheKey":"v0:1789182757.0","canEdit":false,"refType":"branch","currentOid":"8b24f7b313359100b0a2fc235b8446c90359170d","canEditOnDefaultBranch":false,"fileExistsOnDefault":true},"path":"Document.md","blob":{"copilotSWEAgentEnabled":false,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/APIJSON/APIJSON/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"Document.md","displayUrl":"https://github.com/APIJSON/APIJSON/blob/master/Document.md?raw=true","headerInfo":{"blobSize":"31.2 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":"https://desktop.github.com","isGitLfs":false,"onBranch":true,"shortPath":"f0833f2","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FAPIJSON%2FAPIJSON%2Fblob%2Fmaster%2FDocument.md","isCSV":false,"isRichtext":true,"lineInfo":{"truncatedLoc":"340","truncatedSloc":"294"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"isIssueTemplate":false,"isDiscussionTemplate":false,"language":"Markdown","languageID":222,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/APIJSON/APIJSON/blob/master/Document.md","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/APIJSON/APIJSON/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/APIJSON/APIJSON/raw/refs/heads/master/Document.md","renderImageOrRaw":false,"shortPath":null,"symbolsEnabled":true,"tabSize":4,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":null,"showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null},"copilotInfo":null,"copilotAccessAllowed":false,"copilotSpacesEnabled":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"isMarketplaceEnabled":true},"codeViewBlobLayoutRoute.StyledBlob":{"rawLines":["## English | [中文](/Document-Chinese.md)","","#### A better online document is available at https://apijsondocs.readthedocs.io","","### Examples:","","#### Get a User","Request:","\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{","  \"User\":{","  }","}","\u003c/code\u003e\u003c/pre\u003e","","[Click here to test](http://apijson.cn:8080/get/{\"User\":{}})","","Response:","\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{","  \"User\":{","    \"id\":38710,","    \"sex\":0,","    \"name\":\"TommyLemon\",","    \"certified\":true,","    \"tag\":\"Android\u0026Java\",","    \"phone\":13000038710,","    \"head\":\"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\",","    \"date\":1485948110000,","    \"pictureList\":[","      \"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\",","      \"http://common.cnblogs.com/images/icon_weibo_24.png\"","    ]","  },","  \"code\":200,","  \"msg\":\"success\"","}","\u003c/code\u003e\u003c/pre\u003e","","\u003cbr /\u003e","","\u003cp align=\"center\" \u003e","  \u003ca \u003e[GIF] APIJSON single objects: simple queries, statistics, groups, orders, aggregations, comparisons, filters, aliases, etc.\u003c/a\u003e","\u003c/p\u003e ","  ","![](https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_single.gif)","","#### Get an array of Users","","Request:","\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{","  \"[]\":{","    \"count\":3, //just get 3 results","    \"User\":{","      \"@column\":\"id,name\" //just get ids and names","    }","  }","}","\u003c/code\u003e\u003c/pre\u003e","","[Click here to test](http://apijson.cn:8080/get/{\"[]\":{\"count\":3,\"User\":{\"@column\":\"id,name\"}}})","","Response:","\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{","  \"[]\":[","    {","      \"User\":{","        \"id\":38710,","        \"name\":\"TommyLemon\"","      }","    },","    {","      \"User\":{","        \"id\":70793,","        \"name\":\"Strong\"","      }","    },","    {","      \"User\":{","        \"id\":82001,","        \"name\":\"Android\"","      }","    }","  ],","  \"code\":200,","  \"msg\":\"success\"","}","\u003c/code\u003e\u003c/pre\u003e","","\u003cbr /\u003e","","\u003cp align=\"center\" \u003e","  \u003ca \u003e[GIF] APIJSON single arrays: simple queries, statistics, groups, orders, aggregations, paginations, searches, regexps, combinations, etc.\u003c/a\u003e","\u003c/p\u003e ","","![](https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_array.gif)","","","#### Get a Moment and its publisher","Request:","\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{","  \"Moment\":{","  },","  \"User\":{","    \"id@\":\"Moment/userId\"  //User.id = Moment.userId","  }","}","\u003c/code\u003e\u003c/pre\u003e","","[Click here to test](http://apijson.cn:8080/get/{\"Moment\":{},\"User\":{\"id@\":\"Moment%252FuserId\"}})","","Response:","\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{","  \"Moment\":{","    \"id\":12,","    \"userId\":70793,","    \"date\":\"2017-02-08 16:06:11.0\",","    \"content\":\"1111534034\"","  },","  \"User\":{","    \"id\":70793,","    \"sex\":0,","    \"name\":\"Strong\",","    \"tag\":\"djdj\",","    \"head\":\"http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000\",","    \"contactIdList\":[","      38710,","      82002","    ],","    \"date\":\"2017-02-01 19:21:50.0\"","  },","  \"code\":200,","  \"msg\":\"success\"","}","\u003c/code\u003e\u003c/pre\u003e","  ","\u003cbr /\u003e","","#### Get a Moment list like Twitter tweets","Request:","\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{","  \"[]\":{                             //get an array","    \"page\":0,                        //pagination","    \"count\":2,","    \"Moment\":{                       //get a Moment","      \"content$\":\"%a%\"               //filter condition: content contains 'a'","    },","    \"User\":{","      \"id@\":\"/Moment/userId\",        //User.id = Moment.userId, short reference path，starts from grandparents path","      \"@column\":\"id,name,head\"       //get specified keys with the written order ","    },","    \"Comment[]\":{                    //get a Comment array, and unwrap Comment object","      \"count\":2,","      \"Comment\":{","        \"momentId@\":\"[]/Moment/id\"   //Comment.momentId = Moment.id, full reference path","      }","    }","  }","}","\u003c/code\u003e\u003c/pre\u003e","","[Click here to test](http://apijson.cn:8080/get/{\"[]\":{\"page\":0,\"count\":2,\"Moment\":{\"content$\":\"%2525a%2525\"},\"User\":{\"id@\":\"%252FMoment%252FuserId\",\"@column\":\"id,name,head\"},\"Comment[]\":{\"count\":2,\"Comment\":{\"momentId@\":\"[]%252FMoment%252Fid\"}}}})","","Response:","\u003cpre\u003e\u003ccode class=\"language-json\"\u003e{","  \"[]\":[","    {","      \"Moment\":{","        \"id\":15,","        \"userId\":70793,","        \"date\":1486541171000,","        \"content\":\"APIJSON is a JSON Transmission Protocol…\",","        \"praiseUserIdList\":[","          82055,","          82002,","          82001","        ],","        \"pictureList\":[","          \"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000\",","          \"http://common.cnblogs.com/images/icon_weibo_24.png\"","        ]","      },","      \"User\":{","        \"id\":70793,","        \"name\":\"Strong\",","        \"head\":\"http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000\"","      },","      \"Comment[]\":[","        {","          \"id\":176,","          \"toId\":166,","          \"userId\":38710,","          \"momentId\":15,","          \"date\":1490444883000,","          \"content\":\"thank you\"","        },","        {","          \"id\":1490863469638,","          \"toId\":0,","          \"userId\":82002,","          \"momentId\":15,","          \"date\":1490863469000,","          \"content\":\"Just do it\"","        }","      ]","    },","    {","      \"Moment\":{","        \"id\":58,","        \"userId\":90814,","        \"date\":1485947671000,","        \"content\":\"This is a Content...-435\",","        \"praiseUserIdList\":[","          38710,","          82003,","          82005,","          93793,","          82006,","          82044,","          82001","        ],","        \"pictureList\":[","          \"http://static.oschina.net/uploads/img/201604/22172507_aMmH.jpg\"","        ]","      },","      \"User\":{","        \"id\":90814,","        \"name\":7,","        \"head\":\"http://static.oschina.net/uploads/user/51/102723_50.jpg?t=1449212504000\"","      },","      \"Comment[]\":[","        {","          \"id\":13,","          \"toId\":0,","          \"userId\":82005,","          \"momentId\":58,","          \"date\":1485948050000,","          \"content\":\"This is a Content...-13\"","        },","        {","          \"id\":77,","          \"toId\":13,","          \"userId\":93793,","          \"momentId\":58,","          \"date\":1485948050000,","          \"content\":\"This is a Content...-77\"","        }","      ]","    }","  ],","  \"code\":200,","  \"msg\":\"success\"","}","\u003c/code\u003e\u003c/pre\u003e","","\u003cp align=\"center\" \u003e","  \u003ca \u003e[GIF] APIJSON query multi related tables: one to one, one to many, many to one, various conditions, etc.\u003c/a\u003e","\u003c/p\u003e ","","![](https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_associate.gif)","","\u003cbr /\u003e","  ","\u003cp align=\"center\" \u003e","  \u003ca \u003e[GIF] APIJSON joins: \u003c LEFT JOIN, \u0026 INNER JOIN, etc.\u003c/a\u003e","\u003c/p\u003e ","","![](https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_join.gif)","  ","\u003cbr /\u003e","  ","\u003cp align=\"center\" \u003e","  \u003ca \u003e[GIF] APIJSON subqueries：@from@ FROM, key@ =, key\u003e@ \u003e, key{}@ IN, key}{@ EXISTS, etc.\u003c/a\u003e","\u003c/p\u003e ","","![](https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_subquery.gif)","    ","\u003cbr /\u003e","    ","\u003cp align=\"center\" \u003e","  \u003ca \u003e[GIF] APIJSON: a set of some features, simple to complex\u003c/a\u003e","\u003c/p\u003e ","","![](https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_summary.gif)","","\u003cbr /\u003e","","[Test it online](http://apijson.cn/api) ","","\u003cbr /\u003e","\u003cbr /\u003e","","## API Design Rules","","### 1. Methods and API endpoints",""," Methods | URL | Request | Response","------------ | ------------ | ------------ | ------------","**GET**: \u003cbr /\u003e A general way to get data.\u003cbr /\u003e You can use dev tools to make edits in a web browser. | base_url/get/ | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; //Add contiditions here.\u003cbr /\u003e \u0026nbsp;\u0026nbsp; }\u003cbr /\u003e} \u003cbr /\u003e \u003cbr /\u003e Eg. To get a Moment with `id = 235`：\u003cbr /\u003e{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id\":235\u003cbr /\u003e \u0026nbsp;\u0026nbsp; }\u003cbr /\u003e} | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; ...\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"msg\":\"success\"\u003cbr /\u003e}\u003cbr /\u003eEg.\u003cbr /\u003e{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id\":235,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"userId\":38710,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"content\":\"APIJSON is the real-time coding-free, powerful and secure ORM\"\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"msg\":\"success\"\u003cbr /\u003e }","**HEAD**: \u003cbr /\u003e A general way to get counts.\u003cbr /\u003e You can use dev tools to make edits in a web browser. | base_url/head/ | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; …\u003cbr /\u003e \u0026nbsp;\u0026nbsp; }\u003cbr /\u003e } \u003cbr /\u003e {…} are conditions. \u003cbr /\u003e\u003cbr /\u003e Eg. Get the number of Moments posted by the user with `id = 38710`：\u003cbr /\u003e{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"userId\":38710\u003cbr /\u003e \u0026nbsp;\u0026nbsp; }\u003cbr /\u003e} | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"msg\":\"success\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"count\":10\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"msg\":\"success\"\u003cbr /\u003e} \u003cbr /\u003e Eg.\u003cbr /\u003e{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"msg\":\"success\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"count\":10\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;  \"msg\":\"success\"\u003cbr /\u003e}","**GETS**: \u003cbr /\u003e Get data with high security and confidentiality.\u003cbr /\u003e Eg. bank accounts, birth date. | base_url/gets/ | You need to add `\"tag\":tag` with the same level of `Moment:{}`. Others are the same as **GET**. | Same as **GET**.","**HEADS**: \u003cbr /\u003e Get counts of confidential data(eg. bank account).| base_url/heads/ | You need to add  `\"tag\":tag` with the same level of `Moment:{}`. Others are the same as **HEAD**. | Same as **HEAD**.","**POST**: \u003cbr /\u003e Add new data. | base_url/post/ | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; …\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"tag\":tag\u003cbr /\u003e} \u003cbr /\u003e The id in {...} is generated automatically when table is built and can’t be set by the user. \u003cbr /\u003e\u003cbr /\u003eEg. A user with `id = 38710` posts a new Moment：\u003cbr /\u003e{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"userId\":38710,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"content\":\"APIJSON is the real-time coding-free, powerful and secure ORM\"\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"tag\":\"Moment\"\u003cbr /\u003e} | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"msg\":\"success\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id\":38710\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"msg\":\"success\"\u003cbr /\u003e}\u003cbr /\u003eEg.\u003cbr /\u003e{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"msg\":\"success\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id\":120\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"msg\":\"success\"\u003cbr /\u003e}","**PUT**: \u003cbr /\u003e Make changes to a specific item.\u003cbr /\u003e Only change the part sent to server. | base_url/put/ | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id\":id,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; …\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"tag\":tag\u003cbr /\u003e} \u003cbr /\u003e  You can also add multiple id as `id{}`.\u003cbr /\u003e\u003cbr /\u003eEg. Make changes to Moment's content with id= 235:\u003cbr /\u003e{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id\":235,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"content\":\"APIJSON is the real-time coding-free, powerful and secure ORM\"\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"tag\":\"Moment\"\u003cbr /\u003e} | Same as **POST**.","**DELETE**: \u003cbr /\u003e Delete data. | base_url/delete/ | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id\":id\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"tag\":tag\u003cbr /\u003e} \u003cbr /\u003e You can also add multiple id as `id{}`. \u003cbr /\u003e\u003cbr /\u003e Or Delete contents with multiple id：\u003cbr /\u003e{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Comment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id{}\":[100,110,120]\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"tag\":\"Comment[]\"\u003cbr /\u003e} | {\u003cbr /\u003e \u0026nbsp;\u0026nbsp; TableName:{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"msg\":\"success\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id[]\":[100,110,120]\u003cbr /\u003e\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp; \"count\":3\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"msg\":\"success\"\u003cbr /\u003e}\u003cbr /\u003eEg.\u003cbr /\u003e{\u003cbr /\u003e\u0026nbsp;\u0026nbsp; \"Comment\":{\u003cbr /\u003e\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp; \"msg\":\"success\",\u003cbr /\u003e\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp; \"id[]\":[100,110,120],\u003cbr /\u003e\u0026nbsp;\u0026nbsp; \u0026nbsp;\u0026nbsp; \"count\":3\u003cbr /\u003e\u0026nbsp;\u0026nbsp; },\u003cbr /\u003e\u0026nbsp;\u0026nbsp; \"code\":200,\u003cbr /\u003e\u0026nbsp;\u0026nbsp; \"msg\":\"success\"\u003cbr /\u003e}","","**Note**:\u003cbr /\u003e","1. TableName means the name of the table where you get data. It’ll respond with a JSON Object(the form is {....})with columns inside.","2. `\"tag\":tag` is needed when methods are not GET or HEAD. The tag after the colon is the key in JSON Object of making requests. Generally, it’s the name of the table you’re looking for.","3. GET, HEAD are methods for general data requests.They support versatile JSON Object structure. Other methods are used for requesting confidential data and the requesting JSON Object needs to be in the same form/order as that in the database. Otherwise, the request shall be denied.","4. GETS and GET, HEADS and HEAD return the same type of data. But the request form is a little different.","5. For HTTP, all API methods (get,gets,head,heads,post,put,delete) make requests with HTTP POST.","6. All JSON Objects here are with {...} form. You can put items or objects in it.","7. Each object in the database has a unique address.","","\u003cbr /\u003e","","### 2. Keyswords in URL parameters"," "," Functions | Key-value pairs | Examples","------------ | ------------ | ------------"," Get data in arrays | `\"key[]\":{}`\u003cbr /\u003e The part after the colon is a JSONObject. *key* is optional. When *key* is the same as the table name , the JSONObject will be in a simplified form. For example,  `{Table:{Content}}` will be written as `{Content}`.| [{\"User[]\":{\"User\":{}}}](http://apijson.cn:8080/get/{\"User[]\":{\"count\":3,\"User\":{}}}) \u003cbr /\u003eIt is used for getting data from a user. Here, key and tablename are all \"User\", then \u003cbr /\u003e`{\"User\":{\"id\", ...}}` \u003cbr /\u003ewill be written as \u003cbr /\u003e `{\"id\", ...}`"," Get data that meets specific conditions | `\"key{}\":[]` \u003cbr /\u003eThe part after the colon is a JSONArray with conditions inside.| [\"id{}\":[38710,82001,70793]](http://apijson.cn:8080/get/{\"User[]\":{\"count\":3,\"User\":{\"id{}\":[38710,82001,70793]}}}) \u003cbr /\u003eIn SQL, this would be `id IN(38710,82001,70793)`. \u003cbr /\u003eIt means getting data with id equals 38710,82001,70793."," Get data with comparison operation| `\"key{}\":\"condition0,condition1...\"`\u003cbr /\u003eConditions can be any SQL comparision operation. Use''to include any non-number characters.| [\"id{}\":\"\u003c=80000,\\\u003e90000\"](http://apijson.cn:8080/get/{\"User[]\":{\"count\":3,\"User\":{\"id{}\":\"\u003c=80000,\\\u003e90000\"}}}) \u003cbr /\u003eIn SQL, it'd be \u003cbr /\u003e `id\u003c=80000 OR id\u003e90000`, \u003cbr /\u003ewhich means get User array with id\\\u003c=80000 \\| id\u003e90000"," Get data that contains an element | `\"key\u003c\u003e\":Object`  =\u003e  `\"key\u003c\u003e\":[Object]` \u003cbr /\u003e *key* must be a JSONArray while *Object* cannot be JSON.|  [\"contactIdList\u003c\\\u003e\":38710](http://apijson.cn:8080/get/{\"User[]\":{\"count\":3,\"User\":{\"contactIdList\u003c\\\u003e\":38710}}}) \u003cbr /\u003eIn SQL, this would be \u003cbr /\u003e`json_contains(contactIdList,38710)`. \u003cbr /\u003eIt means find data of the User whose contactList contains 38710."," See if it exists |`\"key}{@\":{`\u003cbr /\u003e \u0026nbsp;\u0026nbsp; `\"from\":\"Table\",`\u003cbr /\u003e \u0026nbsp;\u0026nbsp; `\"Table\":{ ... }`\u003cbr /\u003e`}`\u003cbr /\u003e\u003cbr /\u003e}{ means EXISTS.\u003cbr /\u003e *key* is the one you want to check. \u003cbr /\u003eHere is a *Subquery* in it, see specifications below for more information. | [\"id}{@\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"from\":\"Comment\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Comment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;  \u0026nbsp;\u0026nbsp; \"momentId\":15 \u003cbr /\u003e \u0026nbsp;\u0026nbsp; }\u003cbr /\u003e}](http://apijson.cn:8080/get/{\"User\":{\"id}{@\":{\"from\":\"Comment\",\"Comment\":{\"momentId\":15}}}})\u003cbr /\u003e WHERE EXISTS(SELECT * FROM Comment WHERE momentId=15)"," Include functions in parameters | `\"key()\":\"function (key0,key1...)\"`\u003cbr /\u003eThis will trigger the back-end \u003cbr /\u003e `function(JSONObject request, String key0, String key1...)` \u003cbr /\u003eto get or testify data.\u003cbr /\u003e Use - and + to show the order of priority: analyze key-() \u003e analyze the current object \u003e analyze key() \u003e analyze child object \u003e analyze key+()| [\"isPraised()\":\"isContain(praiseUserIdList,userId)\"](http://apijson.cn:8080/get/{\"Moment\":{\"id\":301,\"isPraised()\":\"isContain(praiseUserIdList,userId)\"}}) \u003cbr /\u003eThis will use function boolean isContain(JSONObject request, String array, String value). In this case, client will get \"isPraised\":true(In this case, client use function to testify if a user clicked ‘like’ button for a Moment.)"," Refer a value | `\"key@\":\"key0/key1/.../refKey\"`\u003cbr /\u003eUse / to show path. The part before the colon is the key that wants to refer. The path after the colon starts with the parent level of the key.| [\"Moment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"userId\":38710\u003cbr /\u003e},\u003cbr /\u003e\"User\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"id@\":\"/Moment/userId\"\u003cbr /\u003e}](http://apijson.cn:8080/get/{\"Moment\":{\"userId\":38710},\"User\":{\"id@\":\"%252FMoment%252FuserId\"}})\u003cbr /\u003e In this example, the value of id in User refer to the *userId* in *Moment*, which means \u003cbr /\u003e`User.id = Moment.userId`. \u003cbr /\u003eAfter the request is sent, \u003cbr /\u003e`\"id@\":\"/Moment/userId\"` will be `\"id\":38710`."," Subquery | `\"key@\":{`\u003cbr /\u003e \u0026nbsp;\u0026nbsp; `\"range\":\"ALL\",` \u003cbr /\u003e \u0026nbsp;\u0026nbsp; `\"from\":\"Table\",`\u003cbr /\u003e \u0026nbsp;\u0026nbsp; `\"Table\":{ ... }`\u003cbr /\u003e`}`\u003cbr /\u003e*range* can be ALL, ANY.\u003cbr /\u003e*from* means which table you want to query. \u003cbr /\u003eIt’s very similar to how you query in SQL. \u003cbr /\u003eYou can also use *count*, *join*, etc. | [\"id@\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"from\":\"Comment\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Comment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;  \u0026nbsp;\u0026nbsp; \"@column\":\"min(userId)\" \u003cbr /\u003e \u0026nbsp;\u0026nbsp; }\u003cbr /\u003e}](http://apijson.cn:8080/get/{\"User\":{\"id@\":{\"from\":\"Comment\",\"Comment\":{\"@column\":\"min(userId)\"}}}})\u003cbr /\u003e `WHERE id=(SELECT min(userId) FROM Comment)`."," Fuzzy matching | `\"key$\":\"SQL search expressions\"`  =\u003e  `\"key$\":[\"SQL search expressions\"]`\u003cbr /\u003eAny SQL search expressions.Eg.%key%(include key), key%(start with key),%k%e%y%(include k, e, y). % means any characters. | [\"name$\":\"%m%\"](http://apijson.cn:8080/get/{\"User[]\":{\"count\":3,\"User\":{\"name$\":\"%2525m%2525\"}}}) \u003cbr /\u003eIn SQL, it's \u003cbr /\u003e`name LIKE '%m%'`, \u003cbr /\u003emeaning that get User with ‘m’ in name."," Regular Expression| `\"key~\":\"regular expression\"`  =\u003e  `\"key~\":[\"regular expression\"]`\u003cbr /\u003eIt can be any regular expressions.Eg. ^[0-9]+$ ，*~ not case sensitive, advanced search is applicable.| [\"name~\":\"^[0-9]+$\"](http://apijson.cn:8080/get/{\"User[]\":{\"count\":3,\"User\":{\"name~\":\"^[0-9]%252B$\"}}}) \u003cbr /\u003eIn SQL, it's \u003cbr /\u003e`name REGEXP '^[0-9]+$'`."," Get data in a range| `\"key%\":\"start,end\"`  =\u003e  `\"key%\":[\"start,end\"]`\u003cbr /\u003eThe data type of start and end can only be either Boolean, Number or String. Eg. \"2017-01-01,2019-01-01\" ，[\"1,90000\", \"82001,100000\"]. It's used for getting data from a specific time range. | [\"date%\":\"2017-10-01,2018-10-01\"](http://apijson.cn:8080/get/{\"User[]\":{\"count\":3,\"User\":{\"date%2525\":\"2017-10-01,2018-10-01\"}}}) \u003cbr /\u003eIn SQL, it's \u003cbr /\u003e`date BETWEEN '2017-10-01' AND '2018-10-01'`, \u003cbr /\u003emeaning to get User data that registered between 2017-10-01 and 2018-10-01."," Make an alias | `\"name:alias\"`\u003cbr /\u003ethis changes name to alias in returning results. It’s applicable to column, tableName, SQL Functions, etc. but only in GET, HEAD requests. | [\"@column\":\"toId:parentId\"](http://apijson.cn:8080/get/{\"Comment\":{\"@column\":\"id,toId:parentId\",\"id\":51}}) \u003cbr /\u003eIn SQL, it's \u003cbr /\u003e`toId AS parentId`. \u003cbr /\u003eIt'll return `parentId` instead of `toId`.\u003cbr /\u003e\u003cbr /\u003eFor @key format like \"lc_wai6b3vk2:(lc_wai6b3vk)\", it means renaming field lc_wai6b3vk2 to lc_wai6b3vk, commonly used for field renaming scenarios. Example:\u003cbr /\u003e{\u003cbr /\u003e\u0026nbsp;\u0026nbsp;\"lc_sinan_ba074fbb\": {\u003cbr /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\"lc_wai6b3vk\": \"11\",\u003cbr /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\"lc_wai6b3vk2\": \"22\",\u003cbr /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\"@combine\": \"lc_wai6b3vk \\\\| lc_wai6b3vk2\",\u003cbr /\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\"@key\": \"lc_wai6b3vk2:(lc_wai6b3vk)\"\u003cbr /\u003e\u0026nbsp;\u0026nbsp;}\u003cbr /\u003e}\u003cbr /\u003ecorresponds to SQL `(lc_wai6b3vk = '11' OR lc_wai6b3vk2 = '22')`, but the lc_wai6b3vk2 field will be renamed and displayed as lc_wai6b3vk in the returned result"," Add / expand an item | `\"key+\":Object` \u003cbr /\u003e The type of Object is decided by *key*. Types can be Number, String, JSONArray. Froms are 82001,\"apijson\",[\"url0\",\"url1\"] respectively. It’s only applicable to PUT request.| \"praiseUserIdList+\":[82001]. In SQL, it's \u003cbr /\u003e`json_insert(praiseUserIdList,82001)`. \u003cbr /\u003eAdd an *id* that praised the Moment."," Delete / decrease an item | `\"Key-\":Object`\u003cbr /\u003e It’s the contrary of \"key+\" | \"balance-\":100.00. In SQL, it's \u003cbr /\u003e`balance = balance - 100.00`, \u003cbr /\u003emeaning there's 100 less in balance."," Operations | \u0026, \\|, ! \u003cbr /\u003e They're used in logic operations. It’s the same as AND, OR, NOT in SQL respectively. \u003cbr /\u003eBy default, for the same key, it’s ‘\\|’ (OR)operation among conditions; for different keys, the default operation among conditions is ‘\u0026’(AND). \u003cbr /\u003e |  ① [\"id\u0026{}\":\"\u003e80000,\u003c=90000\"](http://apijson.cn:8080/head/{\"User\":{\"id\u0026{}\":\"\u003e80000,\u003c=90000\"}}) \u003cbr /\u003eIn SQL, it's \u003cbr /\u003e`id\u003e80000 AND id\u003c=90000`, \u003cbr /\u003emeaning *id* needs to be id\u003e80000 \u0026 id\u003c=90000\u003cbr /\u003e\u003cbr /\u003e ② [\"id\\|{}\":\"\u003e90000,\u003c=80000\"](http://apijson.cn:8080/head/{\"User\":{\"id\\|{}\":\"\u003e90000,\u003c=80000\"}}) \u003cbr /\u003eIt's the same as \"id{}\":\"\u003e90000,\u003c=80000\". \u003cbr /\u003eIn SQL, it's \u003cbr /\u003e`id\u003e80000 OR id\u003c=90000`, \u003cbr /\u003emeaning that *id* needs to be id\u003e90000 \\| id\u003c=80000\u003cbr /\u003e\u003cbr /\u003e ③ [\"id!{}\":[82001,38710]](http://apijson.cn:8080/head/{\"User\":{\"id!{}\":[82001,38710]}}) \u003cbr /\u003eIn SQL, it's \u003cbr /\u003e`id NOT IN(82001,38710)`, \u003cbr /\u003emeaning id needs to be ! (id=82001 \\| id=38710)."," Keywords in an Array: It can be self-defined. | As for `\"key\":Object`, *key* is the keyword of *{}* in *\"[]\":{}*. The type of *Object* is up to *key*.\u003cbr /\u003e\u003cbr /\u003e① `\"count\":Integer` It's used to count the number. The default largest number is 100. \u003cbr /\u003e\u003cbr /\u003e② `\"page\":Integer` It’s used for getting data from which page, starting from 0. The default largest number is 100. It’s usually used with COUNT. \u003cbr /\u003e\u003cbr /\u003e③ `\"query\":Integer` Get the number of items that match conditions\u003cbr /\u003eWhen to get the object, the integer should be 0; when to get the total number, it’s 1; when both above, it’s 2.\u003cbr /\u003eYou can get the total number with keyword total. It can be referred to other values. \u003cbr /\u003eEg. \u003cbr /\u003e`\"total@\":\"/[]/total\"` \u003cbr /\u003ePut it as the same level of query.  \u003cbr /\u003e*Query* and *total* are used in GET requests just for convenience. Generally, HEAD request is for getting numbers like the total number.\u003cbr /\u003e\u003cbr /\u003e④ `\"join\":\"\u0026/Table0,\u003c/Table1\"`\u003cbr /\u003eJoin tables：\u003cbr /\u003e \"\\\u003c\" - LEFT JOIN \u003cbr /\u003e \"\u003e\" - RIGHT JOIN \u003cbr /\u003e \"\u0026\" - INNER JOIN \u003cbr /\u003e \"\\|\" - FULL JOIN \u003cbr /\u003e  \"!\" - OUTER JOIN \u003cbr /\u003e \"@\" - APP JOIN \u003cbr /\u003eWhere @ APP JOIN is in application layer.It’ll get all the keys in tables that refKeys in result tables are referred to, like refKeys:[value0, value1….]. Then, as the results get data according to `key=$refKey` a number of times (COUNT), it uses key `IN($refKeys)` to put these counts together in just one SQL query, in order to improve the performance.\u003cbr /\u003e Other JOIN functions are the same as those in SQL. \u003cbr /\u003e`\"join\":\"\u003c/ViceTable\",`\u003cbr /\u003e`\"MainTable\":{},`\u003cbr /\u003e`\"ViceTable\":{\"key@\":\"/MainTable/refKey\"}`\u003cbr /\u003ewill return \u003cbr /\u003e`MainTable LEFT JOIN ViceTable` \u003cbr /\u003e`ON ViceTable.key=MainTable.refKey` \u003cbr /\u003e\u003cbr /\u003e⑤ `\"otherKey\":Object` Self-defined keyword other than those that already in the system. It also returns with self-defined keywords.| ① Get User arrays with maximum of 5：\u003cbr /\u003e[\"count\":5](http://apijson.cn:8080/get/{\"[]\":{\"count\":5,\"User\":{}}})\u003cbr /\u003e\u003cbr /\u003e ② Look into User arrays on page 3. Show 5 of them each page. \u003cbr /\u003e[\"count\":5,\u003cbr /\u003e\"page\":3](http://apijson.cn:8080/get/{\"[]\":{\"count\":5,\"page\":3,\"User\":{}}})\u003cbr /\u003e\u003cbr /\u003e ③ Get User Arrays and count the total number of Users：\u003cbr /\u003e[\"[]\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"query\":2,\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"User\":{}\u003cbr /\u003e},\u003cbr /\u003e\"total@\":\"/[]/total\"](http://apijson.cn:8080/get/{\"[]\":{\"query\":2,\"count\":5,\"User\":{}},\"total@\":\"%252F[]%252Ftotal\"})\u003cbr /\u003eQuestions like total page numbers or if there's next page can be solved by total,count,page functions，\u003cbr /\u003eTotal page number: \u003cbr/\u003e`int totalPage = Math.ceil(total / count)`\u003cbr /\u003eIf this is the last page: \u003cbr /\u003e`boolean hasNextPage = total \u003e count*page`\u003cbr /\u003eIf this is the first page: \u003cbr /\u003e`boolean isFirstPage = page \u003c= 0`\u003cbr /\u003eIf it's the last page: \u003cbr /\u003e`boolean isLastPage = total \u003c= count*page`\u003cbr /\u003e... \u003cbr /\u003e\u003cbr /\u003e ④ Moment INNER JOIN User LEFT JOIN Comment：\u003cbr /\u003e[\"[]\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"join\": \"\u0026/User,\\\u003c/Comment\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{},\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"User\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"name~\":\"t\",\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id@\": \"/Moment/userId\"\u003cbr /\u003e \u0026nbsp;\u0026nbsp; },\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Comment\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"momentId@\": \"/Moment/id\"\u003cbr /\u003e \u0026nbsp;\u0026nbsp; }\u003cbr /\u003e}](http://apijson.cn:8080/get/{\"[]\":{\"count\":5,\"join\":\"\u0026%252FUser,\\\u003c%252FComment\",\"Moment\":{\"@column\":\"id,userId,content\"},\"User\":{\"name~\":\"t\",\"id@\":\"%252FMoment%252FuserId\",\"@column\":\"id,name,head\"},\"Comment\":{\"momentId@\":\"%252FMoment%252Fid\",\"@column\":\"id,momentId,content\"}}})\u003cbr /\u003e\u003cbr /\u003e ⑤ Add the current user to every level：\u003cbr /\u003e[\"User\":{},\u003cbr /\u003e\"[]\":{\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"name@\":\"User/name\", //self-defined keyword\u003cbr /\u003e \u0026nbsp;\u0026nbsp; \"Moment\":{}\u003cbr /\u003e}](http://apijson.cn:8080/get/{\"User\":{},\"[]\":{\"name@\":\"User%252Fname\",\"Moment\":{}}})"," Keywords in Objects: It can be self-defined. | `\"@key\":Object` @key is the keyword of {} in Table:{}. The type of Object is decided by @key\u003cbr /\u003e\u003cbr /\u003e① `\"@combine\":\"\u0026key0,\u0026key1,\\|key2,key3,`\u003cbr /\u003e`!key4,!key5,\u0026key6,key7...\"`\u003cbr /\u003eFirst, it’ll group data with same operators. Within one group, it operates from left to right. Then it’ll follow the order of \u0026 \\| ! to do the operation. Different groups are connected with \u0026. So the expression above will be : \u003cbr /\u003e (key0 \u0026 key1 \u0026 key6 \u0026 other key) \u0026 (key2 \\| key3 \\| key7) \u0026 !(key4 \\| key5) \u003cbr /\u003e\\| is optional. \u003cbr /\u003e\u003cbr /\u003e② `\"@column\":\"column;function(arg)...\"` Return with specific columns.\u003cbr /\u003e\u003cbr /\u003e③ `\"@order\":\"column0+,column1-...\"` Decide the order of returning results:\u003cbr /\u003e\u003cbr /\u003e④ `\"@group\":\"column0,column1...\"` How to group data. If @column has declared Table id, this id need to be included in @group. In other situations, at least one of the following needs to be done:\u003cbr /\u003e1.Group id is declared in @column\u003cbr /\u003e2.Primary Key of the table is declared in @group.\u003cbr/\u003e\u003cbr/\u003e⑤ `@having\":\"function0(...)?value0;function1(...)?value1;function2(...)?value2...\"` Add conditions on return results with @having. Usually working with@group, it’s declared in @column.\u003cbr /\u003e\u003cbr /\u003e⑥ `\"@schema\":\"sys\"` Can be set as default setting.\u003cbr /\u003e\u003cbr /\u003e⑦ `\"@database\":\"POSTGRESQL\"` Get data from a different database.Can be set as default setting.\u003cbr /\u003e\u003cbr /\u003e⑧ `\"@role\":\"OWNER\"` Get information of the user, including \u003cbr /\u003eUNKNOWN,LOGIN,CONTACT,CIRCLE,OWNER,ADMIN，\u003cbr /\u003eCan be set as default setting. \u003cbr /\u003eYou can self-define a new role or rewrite a role.  Use`Verifier.verify` etc. to self-define validation methods. \u003cbr /\u003e\u003cbr /\u003e⑨ `\"@explain\":true` Profiling. Can be set as default setting. \u003cbr /\u003e\u003cbr /\u003e⑩ `\"@otherKey\":Object` Self-define keyword | ① Search *Users* that *name* or *tag* contains the letter \"a\":\u003cbr /\u003e[\"name~\":\"a\",\u003cbr /\u003e\"tag~\":\"a\",\u003cbr /\u003e\"@combine\":\"name~,tag~\"](http://apijson.cn:8080/get/{\"User[]\":{\"count\":10,\"User\":{\"@column\":\"id,name,tag\",\"name~\":\"a\",\"tag~\":\"a\",\"@combine\":\"name~,tag~\"}}})\u003cbr /\u003e\u003cbr /\u003e ② Only search column id,sex,name and return with the same order:\u003cbr /\u003e[\"@column\":\"id,sex,name\"](http://apijson.cn:8080/get/{\"User\":{\"@column\":\"id,sex,name\",\"id\":38710}})\u003cbr /\u003e\u003cbr /\u003e ③ Search Users that have descending order of name and default order of id:\u003cbr /\u003e[\"@order\":\"name-,id\"](http://apijson.cn:8080/get/{\"[]\":{\"count\":10,\"User\":{\"@column\":\"name,id\",\"@order\":\"name-,id\"}}})\u003cbr /\u003e\u003cbr /\u003e ④ Search Moment grouped with userId: \u003cbr /\u003e[\"@group\":\"userId,id\"](http://apijson.cn:8080/get/{\"[]\":{\"count\":10,\"Moment\":%7B\"@column\":\"userId,id\",\"@group\":\"userId,id\"}}})\u003cbr /\u003e\u003cbr /\u003e ⑤ Search Moments that id equals or less than 100 and group with userId:\u003cbr /\u003e[\"@column\":\"userId;max(id)\",\u003cbr /\u003e\"@group\":\"userId\",\u003cbr /\u003e\"@having\":\"max(id)\u003e=100\"](http://apijson.cn:8080/get/{\"[]\":{\"count\":10,\"Moment\":{\"@column\":\"userId%253Bmax(id)\",\"@group\":\"userId\",\"@having\":\"max(id)\u003e=100\"}}})\u003cbr /\u003eYou can also define the name of the returned function:\u003cbr /\u003e[\"@column\":\"userId;max(id):maxId\",\u003cbr /\u003e\"@group\":\"userId\",\u003cbr /\u003e\"@having\":\"(maxId)\u003e=100\"](http://apijson.cn:8080/get/{\"[]\":{\"count\":10,\"Moment\":{\"@column\":\"userId%253Bmax(id):maxId\",\"@group\":\"userId\",\"@having\":\"(maxId)\u003e=100\"}}})\u003cbr /\u003e\u003cbr /\u003e ⑥ Check Users table in sys: \u003cbr /\u003e[\"@schema\":\"sys\"](http://apijson.cn:8080/get/{\"User\":{\"@schema\":\"sys\"}})\u003cbr /\u003e\u003cbr /\u003e ⑦ Check Users table in PostgreSQL:\u003cbr /\u003e[\"@database\":\"POSTGRESQL\"](http://apijson.cn:8080/get/{\"User\":{\"@database\":\"POSTGRESQL\"}})\u003cbr /\u003e\u003cbr /\u003e ⑧ Check the current user's activity:\u003cbr /\u003e[\"@role\":\"OWNER\"](http://apijson.cn:8080/get/{\"[]\":{\"Moment\":{\"@role\":\"OWNER\"}}})\u003cbr /\u003e\u003cbr /\u003e ⑨ Turn on profiling: \u003cbr /\u003e[\"@explain\":true](http://apijson.cn:8080/get/{\"[]\":{\"Moment\":{\"@explain\":true}}})\u003cbr /\u003e\u003cbr /\u003e ⑩ Get the No.0 picture from pictureList：\u003cbr /\u003e[\"@position\":0, //self-defined keyword\u003cbr /\u003e\"firstPicture()\":\"getFromArray(pictureList,@position)\"](http://apijson.cn:8080/get/{\"User\":{\"id\":38710,\"@position\":0,\"firstPicture()\":\"getFromArray(pictureList,@position)\"}})"," global keyword. | It is a keyword inside the outermost object {}. Among them, @database, @schema, @datasource, @role, and @explain are basically the same as object keywords, see the above description, the difference is that the global keywords will be automatically inserted in each table object as the default value. \u003cbr /\u003e\u003cbr /\u003e① \"tag\": String, the following tag is the identifier of the JSON structure matching the request in non-GET or HEAD requests, generally it is the name of the Table to be queried or the array Table[] or Table:[] corresponding to the name, determined by the backend specified in the Request table. \u003cbr /\u003e\u003cbr /\u003e ② \"version\": Integer, the interface version. If the version is not passed, null or \u003c=0, the highest version will be used. If other valid values are passed, the lowest version closest to it will be used, which is specified in the backend Request table.\u003cbr /\u003e\u003cbr /\u003e ③ \"format\": Boolean, formatted to return the key of the Response JSON, generally converting TableName to tableName, TableName[] to tableNameList, Table:alias to alias, TableName-key[] to tableNameKeyList and other camelcase formats.  | ①  Check private information:：\u003cbr /\u003e[{\"tag\":\"Privacy\",\"Privacy\":{\"id\":82001}}](http://apijson.cn/api?url=http%3A%2F%2Fapijson.cn%3A8080%2Fgets\u0026type=JSON\u0026json={%22tag%22:%22Privacy%22,%22Privacy%22:{%22id%22:82001}})\u003cbr /\u003e\u003cbr /\u003e ② Use the version 1 interface to check private information:：\u003cbr /\u003e[{\"version\":1,\"tag\":\"Privacy\",\"Privacy\":{\"id\":82001}}](http://apijson.cn/api?url=http%3A%2F%2Fapijson.cn%3A8080%2Fgets\u0026type=JSON\u0026json={%22version%22:1,%22tag%22:%22Privacy%22,%22Privacy%22:{%22id%22:82001}}) \u003cbr /\u003e\u003cbr /\u003e ③ Format Moments interface to return in JSON key：\u003cbr /\u003e[{\u003cbr \u003e \u0026nbsp;\u0026nbsp; \"format\":true, \u003cbr \u003e \u0026nbsp;\u0026nbsp; \"[]\":{\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"page\":0, \u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"count\":3, \u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"Moment\":{}, \u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"User\":{\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"id@\":\"/Moment/userId\"\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; },\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"Comment[]\":{\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"count\":3,\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"Comment\":{\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; \"momentId@\":\"[]/Moment/id\"\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; }\u003cbr \u003e \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp; }\u003cbr \u003e \u0026nbsp;\u0026nbsp; }\u003cbr \u003e}](http://apijson.cn:8080/get/{\"format\":true,\"[]\":{\"page\":0,\"count\":3,\"Moment\":{},\"User\":{\"id@\":\"%252FMoment%252FuserId\"},\"Comment[]\":{\"count\":3,\"Comment\":{\"momentId@\":\"[]%252FMoment%252Fid\"}}}})","","\u003cbr /\u003e"],"stylingDirectives":[[[0,39,"pl-mh"],[3,39,"pl-en"],[13,14,"pl-s"],[16,17,"pl-s"],[17,18,"pl-s"],[18,38,"pl-corl"],[38,39,"pl-s"]],[],[[0,80,"pl-mh"],[5,80,"pl-en"],[46,80,"pl-corl"]],[],[[0,13,"pl-mh"],[4,13,"pl-en"]],[],[[0,15,"pl-mh"],[5,15,"pl-en"]],[],[[1,4,"pl-ent"],[6,10,"pl-ent"],[11,16,"pl-e"],[17,18,"pl-s"],[18,31,"pl-s"],[31,32,"pl-s"]],[],[],[],[[2,6,"pl-ent"],[9,12,"pl-ent"]],[],[[0,1,"pl-s"],[19,20,"pl-s"],[20,21,"pl-s"],[21,59,"pl-corl"],[59,60,"pl-s"]],[],[],[[1,4,"pl-ent"],[6,10,"pl-ent"],[11,16,"pl-e"],[17,18,"pl-s"],[18,31,"pl-s"],[31,32,"pl-s"]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[2,6,"pl-ent"],[9,12,"pl-ent"]],[],[[1,3,"pl-ent"]],[],[[1,2,"pl-ent"],[3,8,"pl-e"],[9,10,"pl-s"],[10,16,"pl-s"],[16,17,"pl-s"]],[[3,4,"pl-ent"],[6,7,"pl-s"],[10,11,"pl-s"],[131,132,"pl-ent"]],[[2,3,"pl-ent"]],[],[[0,2,"pl-s"],[2,3,"pl-s"],[3,4,"pl-s"],[4,104,"pl-corl"],[104,105,"pl-s"]],[],[[0,26,"pl-mh"],[5,26,"pl-en"]],[],[],[[1,4,"pl-ent"],[6,10,"pl-ent"],[11,16,"pl-e"],[17,18,"pl-s"],[18,31,"pl-s"],[31,32,"pl-s"]],[],[],[],[],[],[],[],[[2,6,"pl-ent"],[9,12,"pl-ent"]],[],[[0,1,"pl-s"],[19,20,"pl-s"],[20,21,"pl-s"],[21,95,"pl-corl"],[95,96,"pl-s"]],[],[],[[1,4,"pl-ent"],[6,10,"pl-ent"],[11,16,"pl-e"],[17,18,"pl-s"],[18,31,"pl-s"],[31,32,"pl-s"]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[2,6,"pl-ent"],[9,12,"pl-ent"]],[],[[1,3,"pl-ent"]],[],[[1,2,"pl-ent"],[3,8,"pl-e"],[9,10,"pl-s"],[10,16,"pl-s"],[16,17,"pl-s"]],[[3,4,"pl-ent"],[6,7,"pl-s"],[10,11,"pl-s"],[145,146,"pl-ent"]],[[2,3,"pl-ent"]],[],[[0,2,"pl-s"],[2,3,"pl-s"],[3,4,"pl-s"],[4,103,"pl-corl"],[103,104,"pl-s"]],[],[],[[0,35,"pl-mh"],[5,35,"pl-en"]],[],[[1,4,"pl-ent"],[6,10,"pl-ent"],[11,16,"pl-e"],[17,18,"pl-s"],[18,31,"pl-s"],[31,32,"pl-s"]],[],[],[],[],[],[],[[2,6,"pl-ent"],[9,12,"pl-ent"]],[],[[0,1,"pl-s"],[19,20,"pl-s"],[20,21,"pl-s"],[21,96,"pl-corl"],[96,97,"pl-s"]],[],[],[[1,4,"pl-ent"],[6,10,"pl-ent"],[11,16,"pl-e"],[17,18,"pl-s"],[18,31,"pl-s"],[31,32,"pl-s"]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[2,6,"pl-ent"],[9,12,"pl-ent"]],[],[[1,3,"pl-ent"]],[],[[0,42,"pl-mh"],[5,42,"pl-en"]],[],[[1,4,"pl-ent"],[6,10,"pl-ent"],[11,16,"pl-e"],[17,18,"pl-s"],[18,31,"pl-s"],[31,32,"pl-s"]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[2,6,"pl-ent"],[9,12,"pl-ent"]],[],[[0,1,"pl-s"],[19,20,"pl-s"],[20,21,"pl-s"],[21,247,"pl-corl"],[247,248,"pl-s"]],[],[],[[1,4,"pl-ent"],[6,10,"pl-ent"],[11,16,"pl-e"],[17,18,"pl-s"],[18,31,"pl-s"],[31,32,"pl-s"]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[[2,6,"pl-ent"],[9,12,"pl-ent"]],[],[[1,2,"pl-ent"],[3,8,"pl-e"],[9,10,"pl-s"],[10,16,"pl-s"],[16,17,"pl-s"]],[[3,4,"pl-ent"],[6,7,"pl-s"],[10,11,"pl-s"],[112,113,"pl-ent"]],[[2,3,"pl-ent"]],[],[[0,2,"pl-s"],[2,3,"pl-s"],[3,4,"pl-s"],[4,107,"pl-corl"],[107,108,"pl-s"]],[],[[1,3,"pl-ent"]],[],[[1,2,"pl-ent"],[3,8,"pl-e"],[9,10,"pl-s"],[10,16,"pl-s"],[16,17,"pl-s"]],[[3,4,"pl-ent"],[6,7,"pl-s"],[10,11,"pl-s"],[60,61,"pl-ent"]],[[2,3,"pl-ent"]],[],[[0,2,"pl-s"],[2,3,"pl-s"],[3,4,"pl-s"],[4,102,"pl-corl"],[102,103,"pl-s"]],[],[[1,3,"pl-ent"]],[],[[1,2,"pl-ent"],[3,8,"pl-e"],[9,10,"pl-s"],[10,16,"pl-s"],[16,17,"pl-s"]],[[3,4,"pl-ent"],[6,7,"pl-s"],[10,11,"pl-s"],[31,36,"pl-s"],[32,36,"pl-corl"],[93,94,"pl-ent"]],[[2,3,"pl-ent"]],[],[[0,2,"pl-s"],[2,3,"pl-s"],[3,4,"pl-s"],[4,106,"pl-corl"],[106,107,"pl-s"]],[],[[1,3,"pl-ent"]],[],[[1,2,"pl-ent"],[3,8,"pl-e"],[9,10,"pl-s"],[10,16,"pl-s"],[16,17,"pl-s"]],[[3,4,"pl-ent"],[6,7,"pl-s"],[10,11,"pl-s"],[64,65,"pl-ent"]],[[2,3,"pl-ent"]],[],[[0,2,"pl-s"],[2,3,"pl-s"],[3,4,"pl-s"],[4,105,"pl-corl"],[105,106,"pl-s"]],[],[[1,3,"pl-ent"]],[],[[0,1,"pl-s"],[15,16,"pl-s"],[16,17,"pl-s"],[17,38,"pl-corl"],[38,39,"pl-s"]],[],[[1,3,"pl-ent"]],[[1,3,"pl-ent"]],[],[[0,19,"pl-mh"],[3,19,"pl-en"]],[],[[0,32,"pl-mh"],[4,32,"pl-en"]],[],[],[],[[0,2,"pl-s"],[5,7,"pl-s"],[10,12,"pl-ent"],[43,45,"pl-ent"],[123,125,"pl-ent"],[129,141,"pl-c1"],[130,134,"pl-k"],[136,140,"pl-k"],[154,156,"pl-ent"],[160,184,"pl-c1"],[161,165,"pl-k"],[167,171,"pl-k"],[173,177,"pl-k"],[179,183,"pl-k"],[210,212,"pl-ent"],[216,228,"pl-c1"],[217,221,"pl-k"],[223,227,"pl-k"],[231,233,"pl-ent"],[239,241,"pl-ent"],[246,248,"pl-ent"],[277,278,"pl-s"],[278,286,"pl-c1"],[286,287,"pl-s"],[289,291,"pl-ent"],[296,298,"pl-ent"],[302,314,"pl-c1"],[303,307,"pl-k"],[309,313,"pl-k"],[326,328,"pl-ent"],[332,356,"pl-c1"],[333,337,"pl-k"],[339,343,"pl-k"],[345,349,"pl-k"],[351,355,"pl-k"],[366,368,"pl-ent"],[372,384,"pl-c1"],[373,377,"pl-k"],[379,383,"pl-k"],[387,389,"pl-ent"],[398,400,"pl-ent"],[404,416,"pl-c1"],[405,409,"pl-k"],[411,415,"pl-k"],[429,431,"pl-ent"],[435,459,"pl-c1"],[436,440,"pl-k"],[442,446,"pl-k"],[448,452,"pl-k"],[454,458,"pl-k"],[464,466,"pl-ent"],[470,482,"pl-c1"],[471,475,"pl-k"],[477,481,"pl-k"],[486,488,"pl-ent"],[492,504,"pl-c1"],[493,497,"pl-k"],[499,503,"pl-k"],[517,519,"pl-ent"],[523,535,"pl-c1"],[524,528,"pl-k"],[530,534,"pl-k"],[552,554,"pl-ent"],[559,561,"pl-ent"],[568,570,"pl-ent"],[575,577,"pl-ent"],[581,593,"pl-c1"],[582,586,"pl-k"],[588,592,"pl-k"],[605,607,"pl-ent"],[611,635,"pl-c1"],[612,616,"pl-k"],[618,622,"pl-k"],[624,628,"pl-k"],[630,634,"pl-k"],[646,648,"pl-ent"],[652,676,"pl-c1"],[653,657,"pl-k"],[659,663,"pl-k"],[665,669,"pl-k"],[671,675,"pl-k"],[693,695,"pl-ent"],[699,723,"pl-c1"],[700,704,"pl-k"],[706,710,"pl-k"],[712,716,"pl-k"],[718,722,"pl-k"],[798,800,"pl-ent"],[804,816,"pl-c1"],[805,809,"pl-k"],[811,815,"pl-k"],[820,822,"pl-ent"],[826,838,"pl-c1"],[827,831,"pl-k"],[833,837,"pl-k"],[851,853,"pl-ent"],[857,869,"pl-c1"],[858,862,"pl-k"],[864,868,"pl-k"],[886,888,"pl-ent"]],[[0,2,"pl-s"],[6,8,"pl-s"],[11,13,"pl-ent"],[46,48,"pl-ent"],[127,129,"pl-ent"],[133,145,"pl-c1"],[134,138,"pl-k"],[140,144,"pl-k"],[158,160,"pl-ent"],[164,188,"pl-c1"],[165,169,"pl-k"],[171,175,"pl-k"],[177,181,"pl-k"],[183,187,"pl-k"],[191,193,"pl-ent"],[197,209,"pl-c1"],[198,202,"pl-k"],[204,208,"pl-k"],[212,214,"pl-ent"],[221,223,"pl-ent"],[248,250,"pl-ent"],[254,256,"pl-ent"],[314,315,"pl-s"],[315,325,"pl-c1"],[325,326,"pl-s"],[328,330,"pl-ent"],[335,337,"pl-ent"],[341,353,"pl-c1"],[342,346,"pl-k"],[348,352,"pl-k"],[365,367,"pl-ent"],[371,395,"pl-c1"],[372,376,"pl-k"],[378,382,"pl-k"],[384,388,"pl-k"],[390,394,"pl-k"],[411,413,"pl-ent"],[417,429,"pl-c1"],[418,422,"pl-k"],[424,428,"pl-k"],[432,434,"pl-ent"],[443,445,"pl-ent"],[449,461,"pl-c1"],[450,454,"pl-k"],[456,460,"pl-k"],[474,476,"pl-ent"],[480,504,"pl-c1"],[481,485,"pl-k"],[487,491,"pl-k"],[493,497,"pl-k"],[499,503,"pl-k"],[517,519,"pl-ent"],[523,547,"pl-c1"],[524,528,"pl-k"],[530,534,"pl-k"],[536,540,"pl-k"],[542,546,"pl-k"],[565,567,"pl-ent"],[571,595,"pl-c1"],[572,576,"pl-k"],[578,582,"pl-k"],[584,588,"pl-k"],[590,594,"pl-k"],[607,609,"pl-ent"],[613,625,"pl-c1"],[614,618,"pl-k"],[620,624,"pl-k"],[629,631,"pl-ent"],[635,647,"pl-c1"],[636,640,"pl-k"],[642,646,"pl-k"],[660,662,"pl-ent"],[666,678,"pl-c1"],[667,671,"pl-k"],[673,677,"pl-k"],[695,697,"pl-ent"],[703,705,"pl-ent"],[713,715,"pl-ent"],[720,722,"pl-ent"],[726,738,"pl-c1"],[727,731,"pl-k"],[733,737,"pl-k"],[750,752,"pl-ent"],[756,780,"pl-c1"],[757,761,"pl-k"],[763,767,"pl-k"],[769,773,"pl-k"],[775,779,"pl-k"],[793,795,"pl-ent"],[799,823,"pl-c1"],[800,804,"pl-k"],[806,810,"pl-k"],[812,816,"pl-k"],[818,822,"pl-k"],[841,843,"pl-ent"],[847,871,"pl-c1"],[848,852,"pl-k"],[854,858,"pl-k"],[860,864,"pl-k"],[866,870,"pl-k"],[883,885,"pl-ent"],[889,901,"pl-c1"],[890,894,"pl-k"],[896,900,"pl-k"],[905,907,"pl-ent"],[911,923,"pl-c1"],[912,916,"pl-k"],[918,922,"pl-k"],[936,938,"pl-ent"],[942,954,"pl-c1"],[943,947,"pl-k"],[949,953,"pl-k"],[972,974,"pl-ent"]],[[0,2,"pl-s"],[6,8,"pl-s"],[11,13,"pl-ent"],[66,68,"pl-ent"],[138,139,"pl-s"],[139,148,"pl-c1"],[148,149,"pl-s"],[173,174,"pl-s"],[174,183,"pl-c1"],[183,184,"pl-s"],[209,211,"pl-s"],[214,216,"pl-s"],[228,230,"pl-s"],[233,235,"pl-s"]],[[0,2,"pl-s"],[7,9,"pl-s"],[12,14,"pl-ent"],[105,106,"pl-s"],[106,115,"pl-c1"],[115,116,"pl-s"],[140,141,"pl-s"],[141,150,"pl-c1"],[150,151,"pl-s"],[176,178,"pl-s"],[182,184,"pl-s"],[196,198,"pl-s"],[202,204,"pl-s"]],[],[[0,2,"pl-s"],[5,7,"pl-s"],[10,12,"pl-ent"],[49,51,"pl-ent"],[112,114,"pl-ent"],[118,130,"pl-c1"],[119,123,"pl-k"],[125,129,"pl-k"],[143,145,"pl-ent"],[149,173,"pl-c1"],[150,154,"pl-k"],[156,160,"pl-k"],[162,166,"pl-k"],[168,172,"pl-k"],[178,179,"pl-s"],[179,181,"pl-en"],[183,185,"pl-ent"],[189,213,"pl-c1"],[190,194,"pl-k"],[196,200,"pl-k"],[202,206,"pl-k"],[208,212,"pl-k"],[216,218,"pl-ent"],[222,234,"pl-c1"],[223,227,"pl-k"],[229,233,"pl-k"],[238,240,"pl-ent"],[244,256,"pl-c1"],[245,249,"pl-k"],[251,255,"pl-k"],[262,263,"pl-s"],[263,266,"pl-en"],[267,269,"pl-ent"],[275,277,"pl-ent"],[314,315,"pl-s"],[315,319,"pl-c1"],[319,320,"pl-s"],[322,324,"pl-ent"],[328,330,"pl-ent"],[384,386,"pl-ent"],[391,393,"pl-ent"],[397,409,"pl-c1"],[398,402,"pl-k"],[404,408,"pl-k"],[421,423,"pl-ent"],[427,451,"pl-c1"],[428,432,"pl-k"],[434,438,"pl-k"],[440,444,"pl-k"],[446,450,"pl-k"],[462,464,"pl-ent"],[468,492,"pl-c1"],[469,473,"pl-k"],[475,479,"pl-k"],[481,485,"pl-k"],[487,491,"pl-k"],[567,569,"pl-ent"],[573,585,"pl-c1"],[574,578,"pl-k"],[580,584,"pl-k"],[589,591,"pl-ent"],[595,607,"pl-c1"],[596,600,"pl-k"],[602,606,"pl-k"],[623,625,"pl-ent"],[640,642,"pl-s"],[646,648,"pl-s"]],[],[],[[0,2,"pl-s"],[6,8,"pl-s"],[10,12,"pl-ent"]],[[0,1,"pl-s"],[1,2,"pl-v"]],[[0,1,"pl-s"],[1,2,"pl-v"],[3,4,"pl-s"],[4,13,"pl-c1"],[13,14,"pl-s"]],[[0,1,"pl-s"],[1,2,"pl-v"]],[[0,1,"pl-s"],[1,2,"pl-v"]],[[0,1,"pl-s"],[1,2,"pl-v"]],[[0,1,"pl-s"],[1,2,"pl-v"]],[[0,1,"pl-s"],[1,2,"pl-v"]],[],[[1,3,"pl-ent"]],[],[[0,34,"pl-mh"],[4,34,"pl-en"]],[],[],[],[[22,23,"pl-s"],[23,33,"pl-c1"],[33,34,"pl-s"],[35,37,"pl-ent"],[83,84,"pl-s"],[87,88,"pl-s"],[107,108,"pl-s"],[111,112,"pl-s"],[204,205,"pl-s"],[205,222,"pl-c1"],[222,223,"pl-s"],[243,244,"pl-s"],[244,253,"pl-c1"],[253,254,"pl-s"],[257,258,"pl-s"],[264,265,"pl-s"],[265,266,"pl-s"],[280,281,"pl-s"],[281,282,"pl-s"],[282,341,"pl-corl"],[341,342,"pl-s"],[344,346,"pl-ent"],[436,438,"pl-ent"],[441,442,"pl-s"],[442,462,"pl-c1"],[462,463,"pl-s"],[465,467,"pl-ent"],[490,492,"pl-ent"],[496,497,"pl-s"],[497,508,"pl-c1"],[508,509,"pl-s"]],[[43,44,"pl-s"],[44,54,"pl-c1"],[54,55,"pl-s"],[57,59,"pl-ent"],[127,128,"pl-s"],[135,136,"pl-s"],[153,155,"pl-s"],[155,156,"pl-s"],[156,241,"pl-corl"],[241,242,"pl-s"],[244,246,"pl-ent"],[271,272,"pl-s"],[272,296,"pl-c1"],[296,297,"pl-s"],[300,302,"pl-ent"]],[[37,38,"pl-s"],[38,72,"pl-c1"],[72,73,"pl-s"],[74,76,"pl-ent"],[172,173,"pl-s"],[189,191,"pl-c1"],[197,198,"pl-s"],[198,199,"pl-s"],[199,282,"pl-corl"],[271,273,"pl-c1"],[282,283,"pl-s"],[285,287,"pl-ent"],[307,309,"pl-ent"],[313,314,"pl-s"],[314,335,"pl-c1"],[335,336,"pl-s"],[339,341,"pl-ent"],[378,380,"pl-c1"],[387,389,"pl-c1"]],[[37,38,"pl-s"],[38,52,"pl-c1"],[52,53,"pl-s"],[59,60,"pl-s"],[60,76,"pl-c1"],[76,77,"pl-s"],[79,81,"pl-ent"],[85,86,"pl-s"],[89,90,"pl-s"],[117,118,"pl-s"],[124,125,"pl-s"],[144,145,"pl-s"],[160,162,"pl-c1"],[169,170,"pl-s"],[170,171,"pl-s"],[171,254,"pl-corl"],[242,244,"pl-c1"],[254,255,"pl-s"],[257,259,"pl-ent"],[285,287,"pl-ent"],[290,291,"pl-s"],[291,325,"pl-c1"],[325,326,"pl-s"],[329,331,"pl-ent"]],[[19,20,"pl-s"],[20,30,"pl-c1"],[30,31,"pl-s"],[32,34,"pl-ent"],[38,50,"pl-c1"],[39,43,"pl-k"],[45,49,"pl-k"],[51,52,"pl-s"],[52,67,"pl-c1"],[67,68,"pl-s"],[69,71,"pl-ent"],[75,87,"pl-c1"],[76,80,"pl-k"],[82,86,"pl-k"],[88,89,"pl-s"],[89,104,"pl-c1"],[104,105,"pl-s"],[106,108,"pl-ent"],[111,112,"pl-s"],[112,113,"pl-c1"],[113,114,"pl-s"],[115,117,"pl-ent"],[121,123,"pl-ent"],[143,145,"pl-ent"],[149,150,"pl-s"],[153,154,"pl-s"],[186,188,"pl-ent"],[201,202,"pl-s"],[210,211,"pl-s"],[268,269,"pl-s"],[279,281,"pl-ent"],[285,297,"pl-c1"],[286,290,"pl-k"],[292,296,"pl-k"],[316,318,"pl-ent"],[322,334,"pl-c1"],[323,327,"pl-k"],[329,333,"pl-k"],[347,349,"pl-ent"],[353,365,"pl-c1"],[354,358,"pl-k"],[360,364,"pl-k"],[367,379,"pl-c1"],[368,372,"pl-k"],[374,378,"pl-k"],[395,397,"pl-ent"],[401,413,"pl-c1"],[402,406,"pl-k"],[408,412,"pl-k"],[416,418,"pl-ent"],[422,423,"pl-s"],[423,424,"pl-s"],[424,514,"pl-corl"],[514,515,"pl-s"],[516,518,"pl-ent"]],[[35,36,"pl-s"],[36,69,"pl-c1"],[69,70,"pl-s"],[71,73,"pl-ent"],[108,110,"pl-ent"],[114,115,"pl-s"],[115,172,"pl-c1"],[172,173,"pl-s"],[175,177,"pl-ent"],[204,206,"pl-ent"],[354,355,"pl-s"],[405,406,"pl-s"],[406,407,"pl-s"],[407,506,"pl-corl"],[506,507,"pl-s"],[509,511,"pl-ent"],[645,646,"pl-s"],[646,650,"pl-en"]],[[17,18,"pl-s"],[18,47,"pl-c1"],[47,48,"pl-s"],[49,51,"pl-ent"],[199,200,"pl-s"],[211,213,"pl-ent"],[217,229,"pl-c1"],[218,222,"pl-k"],[224,228,"pl-k"],[245,247,"pl-ent"],[253,255,"pl-ent"],[267,269,"pl-ent"],[273,285,"pl-c1"],[274,278,"pl-k"],[280,284,"pl-k"],[309,311,"pl-ent"],[315,316,"pl-s"],[316,317,"pl-s"],[317,411,"pl-corl"],[411,412,"pl-s"],[413,415,"pl-ent"],[473,474,"pl-s"],[480,481,"pl-s"],[485,486,"pl-s"],[492,493,"pl-s"],[508,510,"pl-ent"],[513,514,"pl-s"],[514,537,"pl-c1"],[537,538,"pl-s"],[541,543,"pl-ent"],[574,576,"pl-ent"],[579,580,"pl-s"],[580,602,"pl-c1"],[602,603,"pl-s"],[612,613,"pl-s"],[613,623,"pl-c1"],[623,624,"pl-s"]],[[12,13,"pl-s"],[13,21,"pl-c1"],[21,22,"pl-s"],[23,25,"pl-ent"],[29,41,"pl-c1"],[30,34,"pl-k"],[36,40,"pl-k"],[42,43,"pl-s"],[43,57,"pl-c1"],[57,58,"pl-s"],[60,62,"pl-ent"],[66,78,"pl-c1"],[67,71,"pl-k"],[73,77,"pl-k"],[79,80,"pl-s"],[80,95,"pl-c1"],[95,96,"pl-s"],[97,99,"pl-ent"],[103,115,"pl-c1"],[104,108,"pl-k"],[110,114,"pl-k"],[116,117,"pl-s"],[117,132,"pl-c1"],[132,133,"pl-s"],[134,136,"pl-ent"],[139,140,"pl-s"],[140,141,"pl-c1"],[141,142,"pl-s"],[143,145,"pl-ent"],[148,149,"pl-s"],[154,155,"pl-s"],[173,175,"pl-ent"],[178,179,"pl-s"],[183,184,"pl-s"],[223,225,"pl-ent"],[272,274,"pl-ent"],[294,295,"pl-s"],[300,301,"pl-s"],[303,304,"pl-s"],[308,309,"pl-s"],[318,319,"pl-s"],[327,329,"pl-ent"],[333,345,"pl-c1"],[334,338,"pl-k"],[340,344,"pl-k"],[364,366,"pl-ent"],[370,382,"pl-c1"],[371,375,"pl-k"],[377,381,"pl-k"],[395,397,"pl-ent"],[401,413,"pl-c1"],[402,406,"pl-k"],[408,412,"pl-k"],[415,427,"pl-c1"],[416,420,"pl-k"],[422,426,"pl-k"],[429,436,"pl-s"],[430,436,"pl-corl"],[453,455,"pl-ent"],[459,471,"pl-c1"],[460,464,"pl-k"],[466,470,"pl-k"],[474,476,"pl-ent"],[480,481,"pl-s"],[481,482,"pl-s"],[482,580,"pl-corl"],[580,581,"pl-s"],[582,584,"pl-ent"],[588,589,"pl-s"],[589,631,"pl-c1"],[631,632,"pl-s"]],[[18,19,"pl-s"],[19,50,"pl-c1"],[50,51,"pl-s"],[57,58,"pl-s"],[58,91,"pl-c1"],[91,92,"pl-s"],[93,95,"pl-ent"],[221,222,"pl-s"],[235,236,"pl-s"],[236,237,"pl-s"],[237,317,"pl-corl"],[317,318,"pl-s"],[320,322,"pl-ent"],[339,341,"pl-ent"],[344,345,"pl-s"],[345,360,"pl-c1"],[360,361,"pl-s"],[364,366,"pl-ent"]],[[21,22,"pl-s"],[22,49,"pl-c1"],[49,50,"pl-s"],[56,57,"pl-s"],[57,86,"pl-c1"],[86,87,"pl-s"],[88,90,"pl-ent"],[132,133,"pl-s"],[136,137,"pl-s"],[141,142,"pl-s"],[142,143,"pl-s"],[196,197,"pl-s"],[202,203,"pl-s"],[207,208,"pl-s"],[211,212,"pl-s"],[215,216,"pl-s"],[216,217,"pl-s"],[217,298,"pl-corl"],[298,299,"pl-s"],[301,303,"pl-ent"],[320,322,"pl-ent"],[325,326,"pl-s"],[326,348,"pl-c1"],[348,349,"pl-s"]],[[22,23,"pl-s"],[23,41,"pl-c1"],[41,42,"pl-s"],[48,49,"pl-s"],[49,69,"pl-c1"],[69,70,"pl-s"],[71,73,"pl-ent"],[182,183,"pl-s"],[208,209,"pl-s"],[268,269,"pl-s"],[300,301,"pl-s"],[301,302,"pl-s"],[302,396,"pl-corl"],[396,397,"pl-s"],[399,401,"pl-ent"],[418,420,"pl-ent"],[423,424,"pl-s"],[424,466,"pl-c1"],[466,467,"pl-s"],[470,472,"pl-ent"]],[],[[24,25,"pl-s"],[25,38,"pl-c1"],[38,39,"pl-s"],[41,43,"pl-ent"],[80,81,"pl-s"],[84,85,"pl-s"],[153,154,"pl-s"],[167,168,"pl-s"],[241,242,"pl-s"],[247,248,"pl-s"],[264,266,"pl-ent"],[269,270,"pl-s"],[270,305,"pl-c1"],[305,306,"pl-s"],[309,311,"pl-ent"],[321,322,"pl-s"],[324,325,"pl-s"]],[[29,30,"pl-s"],[30,43,"pl-c1"],[43,44,"pl-s"],[45,47,"pl-ent"],[114,116,"pl-ent"],[119,120,"pl-s"],[120,146,"pl-c1"],[146,147,"pl-s"],[150,152,"pl-ent"]],[[17,19,"pl-c1"],[24,26,"pl-ent"],[116,118,"pl-ent"],[157,159,"pl-c1"],[266,268,"pl-ent"],[277,278,"pl-s"],[302,303,"pl-s"],[303,304,"pl-s"],[304,367,"pl-corl"],[367,368,"pl-s"],[370,372,"pl-ent"],[389,391,"pl-ent"],[394,395,"pl-s"],[395,417,"pl-c1"],[417,418,"pl-s"],[421,423,"pl-ent"],[434,435,"pl-s"],[437,438,"pl-s"],[472,474,"pl-ent"],[478,480,"pl-ent"],[486,487,"pl-s"],[490,492,"pl-c1"],[512,513,"pl-s"],[513,514,"pl-s"],[514,578,"pl-corl"],[554,556,"pl-c1"],[578,579,"pl-s"],[581,583,"pl-ent"],[629,631,"pl-ent"],[648,650,"pl-ent"],[653,654,"pl-s"],[654,675,"pl-c1"],[675,676,"pl-s"],[679,681,"pl-ent"],[697,698,"pl-s"],[700,701,"pl-s"],[723,725,"pl-c1"],[736,738,"pl-ent"],[742,744,"pl-ent"],[750,751,"pl-s"],[759,760,"pl-s"],[771,773,"pl-s"],[773,774,"pl-s"],[774,834,"pl-corl"],[834,835,"pl-s"],[837,839,"pl-ent"],[856,858,"pl-ent"],[861,862,"pl-s"],[862,884,"pl-c1"],[884,885,"pl-s"],[888,890,"pl-ent"],[928,930,"pl-c1"]],[],[],[],[],[[1,3,"pl-ent"]],[]],"colorizedLines":null}},"title":"APIJSON/Document.md at master · APIJSON/APIJSON","appPayload":{},"meta":{"title":"APIJSON/Document.md at master · APIJSON/APIJSON"}}</script>
  <div data-target="react-app.reactRoot"><meta name="github-code-view-meta-stats" id="github-code-view-meta-stats" data-hydrostats="publish"/> <!-- --> <a hidden="" id="code-view-repo-link" href="/APIJSON/APIJSON" data-discover="true"></a> <div class="d-none"></div><div><div style="--spacing:var(--spacing-none)" class="prc-PageLayout-PageLayoutRoot--KH-d" data-component="SplitPageLayout" data-has-sidebar="true"><div class="prc-PageLayout-SidebarWrapper-kLG4B CopilotSidePanelSidebar-module__SidePanel__L3O0C CopilotSidePanelSidebar-module__HiddenSidePanel__TBRGn" style="--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="end" data-sticky="true" data-responsive-variant="fullscreen"><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-SidebarVerticalDivider-0Rl0V" data-component="PageLayout.VerticalDivider" data-variant="line" data-position="end" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="450" aria-valuemax="768" aria-valuenow="544" aria-valuetext="Pane width 544 pixels" tabindex="0"></div></div><div class="prc-PageLayout-Sidebar-iciWg" data-component="SplitPageLayout.Sidebar" data-resizable="true" style="--spacing:var(--spacing-normal);--pane-min-width:450px;--pane-max-width:768px;--pane-width-custom:544px;--pane-width-size:var(--pane-width-custom);--pane-width:544px"><div class="height-full" data-testid="copilot-code-view-side-panel"><div id="copilot-side-panel-content" class="height-full"></div></div></div></div><div class="prc-PageLayout-PageLayoutWrapper-2BhU2" data-width="full"><div class="prc-PageLayout-PageLayoutContent-BneH9"><div id="repos-file-tree-sidebar" class="CodeViewFileTreeLayout-module__sidebar__n_Aau" tabindex="0"><div class="prc-PageLayout-PaneWrapper-pHPop ReposFileTreePane-module__Pane__rBZpI ReposFileTreePane-module__HideTree__AYZnm ReposFileTreePane-module__HidePane__VHAVt" style="--offset-header:0px;--spacing-row:var(--spacing-none);--spacing-column:var(--spacing-none)" data-is-hidden="false" data-position="start" data-sticky="true"><div class="prc-PageLayout-HorizontalDivider-JLVqp prc-PageLayout-PaneHorizontalDivider-9tbnE" data-component="PageLayout.HorizontalDivider" data-variant-regular="none" data-variant-narrow="none" data-position="start" style="--spacing-divider:var(--spacing-none);--spacing:var(--spacing-none)"></div><div class="prc-PageLayout-Pane-AyzHK" data-component="SplitPageLayout.Pane" data-resizable="true" style="--spacing:var(--spacing-none);--pane-min-width:256px;--pane-max-width:calc(100vw - var(--pane-max-width-diff));--pane-width-size:var(--pane-width-large);--pane-width:320px"></div><div class="prc-PageLayout-VerticalDivider-9QRmK prc-PageLayout-PaneVerticalDivider-le57g" data-component="PageLayout.VerticalDivider" data-variant-narrow="none" data-variant-regular="line" data-variant-wide="line" data-position="start" style="--spacing:var(--spacing-none)"><div class="prc-PageLayout-DraggableHandle-9s6B4" data-component="PageLayout.DragHandle" role="slider" aria-label="Draggable pane splitter" aria-valuemin="256" aria-valuemax="600" aria-valuenow="320" aria-valuetext="Pane width 320 pixels" tabindex="0"></div></div></div></div><div data-component="SplitPageLayout.Content" class="prc-PageLayout-ContentWrapper-gR9eG"><div class="prc-PageLayout-Content-xWL-A" data-width="full" style="--spacing:var(--spacing-none)"><div class="SharedPageLayout-module__content__IwGAp" data-selector="repos-split-pane-content" id="repos-split-pane-content" tabindex="0"> <!-- --> <div class="container CodeViewHeader-module__Box__JkPOb"><div class="CodeViewHeader-module__StickyHeader__Qn7UN" id="StickyHeader"><div class="CodeViewHeader-module__Box_1__SbNDV"><div class="CodeViewHeader-module__Box_2__TB46f"><div class="react-code-view-header-wrap--narrow CodeViewHeader-module__Box_3__q1zUL"><div class="CodeViewHeader-module__treeToggleWrapper__RQ__9"><h2 class="use-tree-pane-module__Heading__s4QbZ prc-Heading-Heading-MtWFE" data-component="Heading"><button data-component="Button" type="button" aria-label="Expand file tree" data-testid="expand-file-tree-button-mobile" class="prc-Button-ButtonBase-9n-Xk ExpandFileTreeButton-module__Button_1__Svs95" data-loading="false" data-size="medium" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-left" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Files</span></span></button><button data-component="IconButton" type="button" data-testid="expand-file-tree-button" aria-controls="repos-file-tree" class="prc-Button-ButtonBase-9n-Xk position-relative ExpandFileTreeButton-module__expandButton__hDOcv ExpandFileTreeButton-module__filesButtonBreakpoint__zEvz3 fgColor-muted prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-labelledby="_R_4lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-sidebar-collapse" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M6.823 7.823a.25.25 0 0 1 0 .354l-2.396 2.396A.25.25 0 0 1 4 10.396V5.604a.25.25 0 0 1 .427-.177Z"></path><path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25H9.5v-13H1.75a.25.25 0 0 0-.25.25ZM11 14.5h3.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H11Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="se" data-component="Tooltip" aria-hidden="true" id="_R_4lla9lik5_">Expand file tree</span><div class="d-none"></div></h2></div><div class="react-code-view-header-mb--narrow mr-2"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="master branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector-wide"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">master</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="react-code-view-header-mb--narrow CodeViewHeader-module__Box_5__MQ0hL"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__lg__Rjz0A"><nav data-testid="breadcrumbs" aria-labelledby="repos-header-breadcrumb-heading" id="repos-header-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="repos-header-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/APIJSON/APIJSON/tree/master" data-discover="true">APIJSON</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__lg__Rjz0A" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__lg__Rjz0A prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="file-name-id">Document.md</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lla9lik5_">Copy path</span></div></div></div><div class="react-code-view-header-element--wide"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><div><div class="CodeViewHeader-module__FileResultsList__JDzUy"><span class="d-flex FileResultsList-module__FilesSearchBox__ivVkc TextInput-wrapper prc-components-TextInputWrapper-Hpdqi prc-components-TextInputBaseWrapper-wY-n0" data-no-trailing-action="true" data-component="TextInput" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id="_R_5ipla9lik5_" aria-hidden="true" data-component="TextInput.LeadingVisual"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellCheck="false" placeholder="Go to file" aria-describedby="_R_5ipla9lik5_ _R_5ipla9lik5H1_" data-component="input" class="prc-components-Input-IwWrt" value=""/><span class="TextInput-icon" id="_R_5ipla9lik5H1_" aria-hidden="true" data-component="TextInput.TrailingVisual"></span></span></div><div class="d-none"></div></div><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-wide" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_v4pla9lik5_" id="_R_14pla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_v4pla9lik5_">More file actions</span></div></div></div><div class="react-code-view-header-element--narrow"><div class="CodeViewHeader-module__Box_7___0R6c"><div class="d-flex gap-2"><button data-component="Button" type="button" style="display:none" class="prc-Button-ButtonBase-9n-Xk NavigationMenu-module__Button__LpKgm" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Blame</span></span></button><div class="d-none"></div><button data-component="IconButton" type="button" data-testid="more-file-actions-button-nav-menu-narrow" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click NavigationMenu-module__IconButton__HpX3G prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-labelledby="_R_v4tla9lik5_" id="_R_14tla9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_v4tla9lik5_">More file actions</span></div></div></div></div></div></div></div><div class="CodeView-module__contentWrapper__cG2JH"><div class="react-code-view-bottom-padding"><div class="BlobTopBanners-module__Box__v_nvx"></div></div> <div class="d-none"></div><div class="d-flex flex-column border rounded-2 tmp-mb-3 pl-1"><div class="LatestCommit-module__Box__B25ZT"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">History</h2><a data-component="LinkButton" href="/APIJSON/APIJSON/commits/master/Document.md" class="prc-Button-ButtonBase-9n-Xk d-none d-lg-flex LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><span class="fgColor-default">History</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><a data-component="LinkButton" aria-label="View commit history for this file." href="/APIJSON/APIJSON/commits/master/Document.md" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby="_R_4mlala9lik5_"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" role="tooltip" aria-hidden="true" id="_R_4mlala9lik5_">History</span></div></div></div></div></div><div class="d-flex flex-row"><div class="container BlobViewContent-module__blobContainer__DtH2d"><div class="react-code-size-details-banner BlobViewContent-module__codeSizeDetails__e5sUw"><div class="react-code-size-details-banner CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="31.2 KB" style="--truncate-max-width:100%"><span>340 lines (294 loc) · 31.2 KB</span></div></div></div></div><div class="react-blob-view-header-sticky BlobViewContent-module__stickyHeader__VwxB5" id="repos-sticky-header"><div class="BlobViewHeader-module__Box__yhm9u"><div class="react-blob-sticky-header"><div class="FileNameStickyHeader-module__outerWrapper__ZL4Xc FileNameStickyHeader-module__outerWrapperHidden__Zpynk"><div class="FileNameStickyHeader-module__Box_1__Hazu5"><div class="FileNameStickyHeader-module__Box_2__hoolP"><div class="FileNameStickyHeader-module__Box_3__MVKsk"><button data-component="Button" type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="master branch" data-testid="anchor-button" data-icv-name="Switch branches/tags" class="prc-Button-ButtonBase-9n-Xk ref-selector-class RefSelectorAnchoredOverlay-module__RefSelectorOverlayBtn__a3WK3" data-loading="false" data-size="medium" data-variant="default" id="ref-picker-repos-header-ref-selector"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3"><div class="RefSelectorAnchoredOverlay-module__RefSelectorOverlayContainer__yaf4p"><div style="max-width:125px" class="ref-selector-button-text-container RefSelectorAnchoredOverlay-module__RefSelectorBtnTextContainer__Di3rk"><span class="RefSelectorAnchoredOverlay-module__RefSelectorText__w_fmP">master</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-YNt2F prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="d-none"></div></div><div class="FileNameStickyHeader-module__Box_4__FLhtt"><div class="Breadcrumb-module__container__Vxvev Breadcrumb-module__md__Wb1Gs"><nav data-testid="breadcrumbs" aria-labelledby="sticky-breadcrumb-heading" id="sticky-breadcrumb" class="Breadcrumb-module__nav__rQFDj"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading" id="sticky-breadcrumb-heading">Breadcrumbs</h2><ol class="Breadcrumb-module__list__ZH6zr"><li class="Breadcrumb-module__listItem__Ib0x_"><a class="Breadcrumb-module__repoLink__O2Nbs prc-Link-Link-9ZwDx" data-component="Link" data-testid="breadcrumbs-repo-link" href="/APIJSON/APIJSON/tree/master" data-discover="true">APIJSON</a></li></ol></nav><div data-testid="breadcrumbs-filename" class="Breadcrumb-module__filename__equZR"><span class="Breadcrumb-module__separator__eNwsI Breadcrumb-module__md__Wb1Gs" aria-hidden="true">/</span><h1 class="Breadcrumb-module__filenameHeading__MNMtw Breadcrumb-module__md__Wb1Gs prc-Heading-Heading-MtWFE" data-component="Heading" tabindex="-1" id="sticky-file-name-id">Document.md</h1></div><button data-component="IconButton" type="button" class="prc-Button-ButtonBase-9n-Xk ml-2 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_7lcpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="CopyToClipboardIconButton-module__tooltip__WyiwL prc-TooltipV2-Tooltip-tLeuB" data-direction="s" data-component="Tooltip" aria-label="Copy path" aria-hidden="true" id="_R_7lcpala9lik5_">Copy path</span></div></div></div><button data-component="Button" type="button" class="prc-Button-ButtonBase-9n-Xk FileNameStickyHeader-module__Button__LSEU_ FileNameStickyHeader-module__GoToTopButton__nxAFn" data-loading="false" data-size="small" data-variant="invisible"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="leadingVisual" class="prc-Button-Visual-YNt2F prc-Button-LeadingVisual-UySKu prc-Button-VisualWrap-E4cnq"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-arrow-up" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M3.47 7.78a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0l4.25 4.25a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018L9 4.81v7.44a.75.75 0 0 1-1.5 0V4.81L4.53 7.78a.75.75 0 0 1-1.06 0Z"></path></svg></span><span data-component="text" class="prc-Button-Label-FWkx3">Top</span></span></button></div></div></div><div class="BlobViewHeader-module__Box_1__VEmuQ"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone__rwWIk prc-Heading-Heading-MtWFE" data-component="Heading" data-testid="screen-reader-heading">File metadata and controls</h2><div class="BlobViewHeader-module__Box_2__icUs2"><ul aria-label="File view" class="prc-SegmentedControl-SegmentedControl-lqIXp BlobTabButtons-module__SegmentedControl__jen2u" data-variant="default" data-size="small" data-component="SegmentedControl"><li class="prc-SegmentedControl-Item-tSCQh" data-selected="" data-component="SegmentedControl.Button"><button aria-pressed="true" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:transparent"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Preview">Preview</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Code">Code</div></span></button></li><li class="prc-SegmentedControl-Item-tSCQh" data-component="SegmentedControl.Button"><button aria-pressed="false" class="prc-SegmentedControl-Button-E48xz" type="button" style="--separator-color:var(--borderColor-default)"><span class="prc-SegmentedControl-Content-1COlk segmentedControl-content"><div class="prc-SegmentedControl-Text-7S2y2 segmentedControl-text" data-text="Blame">Blame</div></span></button></li></ul><div class="d-none"></div><div class="react-code-size-details-in-header CodeSizeDetails-module__Box__VcD6l"><div class="text-mono CodeSizeDetails-module__Box_1__GVxQL"><div data-testid="blob-size" class="CodeSizeDetails-module__Truncate_1__lE93V prc-Truncate-Truncate-2G1eo" data-inline="true" title="31.2 KB" style="--truncate-max-width:100%"><span>340 lines (294 loc) · 31.2 KB</span></div></div></div></div><div class="BlobViewHeader-module__Box_3__ng6v2"><div class="d-none"></div><div class="react-blob-header-edit-and-raw-actions BlobViewHeader-module__Box_4__J4Y4W"><div class="d-none"></div><div class="prc-ButtonGroup-ButtonGroup-vFUrY" data-component="ButtonGroup"><div class="prc-ButtonGroup-Item-PqvDl"><a data-component="LinkButton" href="https://github.com/APIJSON/APIJSON/raw/refs/heads/master/Document.md" data-testid="raw-button" class="prc-Button-ButtonBase-9n-Xk LinkButton-module__linkButton__nFnov BlobViewHeader-module__LinkButton__X9kx2" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-Iohp5"><span data-component="text" class="prc-Button-Label-FWkx3">Raw</span></span></a></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="copy-raw-button" class="prc-Button-ButtonBase-9n-Xk prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_qaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-copy" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_qaucpala9lik5_">Copy raw file</span></div><div class="prc-ButtonGroup-Item-PqvDl"><button data-component="IconButton" type="button" data-testid="download-raw-button" class="prc-Button-ButtonBase-9n-Xk BlobViewHeader-module__downloadButton__ef459 prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="default" aria-labelledby="_R_eaucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-download" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2.75 14A1.75 1.75 0 0 1 1 12.25v-2.5a.75.75 0 0 1 1.5 0v2.5c0 .138.112.25.25.25h10.5a.25.25 0 0 0 .25-.25v-2.5a.75.75 0 0 1 1.5 0v2.5A1.75 1.75 0 0 1 13.25 14Z"></path><path d="M7.25 7.689V2a.75.75 0 0 1 1.5 0v5.689l1.97-1.969a.749.749 0 1 1 1.06 1.06l-3.25 3.25a.749.749 0 0 1-1.06 0L4.22 6.78a.749.749 0 1 1 1.06-1.06l1.97 1.969Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_eaucpala9lik5_">Download raw file</span></div></div></div><button data-component="IconButton" type="button" aria-pressed="false" class="prc-Button-ButtonBase-9n-Xk tmp-mr-2 TableOfContents-module__IconButton__jrlNM prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_3ucpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-list-unordered" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="n" data-component="Tooltip" aria-hidden="true" id="_R_3ucpala9lik5_">Outline</span><div class="react-blob-header-edit-and-raw-actions-combined"><button data-component="IconButton" type="button" title="More file actions" data-testid="more-file-actions-button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-9n-Xk js-blob-dropdown-click BlobViewHeader-module__IconButton__XrMQY prc-Button-IconButton-fyge7" data-loading="false" data-no-visuals="true" data-size="small" data-variant="invisible" aria-labelledby="_R_fkecpala9lik5_" id="_R_kecpala9lik5_"><svg data-component="Octicon" aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button><span class="prc-TooltipV2-Tooltip-tLeuB" data-direction="nw" data-component="Tooltip" aria-hidden="true" id="_R_fkecpala9lik5_">Edit and raw actions</span></div></div></div></div><div></div></div><div class="BlobViewContent-module__blobContentWrapper__JS0W6"><section aria-labelledby="file-name-id-wide file-name-id-mobile" class="BlobContent-module__blobContentSection__VOgZq BlobContent-module__blobContentSectionMarkdown__mPLOK" style="margin-top:46px"><div class="js-snippet-clipboard-copy-unpositioned BlobContent-module__markdownBlob__T8jpG" data-hpc="true" containertiming="hpc"><article class="markdown-body entry-content container-lg" itemprop="text"><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">English | <a href="/APIJSON/APIJSON/blob/master/Document-Chinese.md">中文</a></h2><a id="user-content-english--中文" class="anchor" aria-label="Permalink: English | 中文" href="#english--中文"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">A better online document is available at <a href="https://apijsondocs.readthedocs.io" rel="nofollow">https://apijsondocs.readthedocs.io</a></h4><a id="user-content-a-better-online-document-is-available-at-httpsapijsondocsreadthedocsio" class="anchor" aria-label="Permalink: A better online document is available at https://apijsondocs.readthedocs.io" href="#a-better-online-document-is-available-at-httpsapijsondocsreadthedocsio"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Examples:</h3><a id="user-content-examples" class="anchor" aria-label="Permalink: Examples:" href="#examples"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">Get a User</h4><a id="user-content-get-a-user" class="anchor" aria-label="Permalink: Get a User" href="#get-a-user"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">Request:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;User&quot;:{
  }
}"><pre class="notranslate"><code>{
  "User":{
  }
}
</code></pre></div>
<p dir="auto"><a href="http://apijson.cn:8080/get/%7B%22User%22:%7B%7D%7D" rel="nofollow">Click here to test</a></p>
<p dir="auto">Response:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;User&quot;:{
    &quot;id&quot;:38710,
    &quot;sex&quot;:0,
    &quot;name&quot;:&quot;TommyLemon&quot;,
    &quot;certified&quot;:true,
    &quot;tag&quot;:&quot;Android&amp;Java&quot;,
    &quot;phone&quot;:13000038710,
    &quot;head&quot;:&quot;http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000&quot;,
    &quot;date&quot;:1485948110000,
    &quot;pictureList&quot;:[
      &quot;http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000&quot;,
      &quot;http://common.cnblogs.com/images/icon_weibo_24.png&quot;
    ]
  },
  &quot;code&quot;:200,
  &quot;msg&quot;:&quot;success&quot;
}"><pre class="notranslate"><code>{
  "User":{
    "id":38710,
    "sex":0,
    "name":"TommyLemon",
    "certified":true,
    "tag":"Android&amp;Java",
    "phone":13000038710,
    "head":"http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000",
    "date":1485948110000,
    "pictureList":[
      "http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000",
      "http://common.cnblogs.com/images/icon_weibo_24.png"
    ]
  },
  "code":200,
  "msg":"success"
}
</code></pre></div>
<br>
<p align="center" dir="auto">
  [GIF] APIJSON single objects: simple queries, statistics, groups, orders, aggregations, comparisons, filters, aliases, etc.
</p> 
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_single.gif"><img src="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_single.gif" alt="" data-animated-image="" style="max-width: 100%;"></a></p>
<div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">Get an array of Users</h4><a id="user-content-get-an-array-of-users" class="anchor" aria-label="Permalink: Get an array of Users" href="#get-an-array-of-users"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">Request:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;[]&quot;:{
    &quot;count&quot;:3, //just get 3 results
    &quot;User&quot;:{
      &quot;@column&quot;:&quot;id,name&quot; //just get ids and names
    }
  }
}"><pre class="notranslate"><code>{
  "[]":{
    "count":3, //just get 3 results
    "User":{
      "@column":"id,name" //just get ids and names
    }
  }
}
</code></pre></div>
<p dir="auto"><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22@column%22:%22id,name%22%7D%7D%7D" rel="nofollow">Click here to test</a></p>
<p dir="auto">Response:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;[]&quot;:[
    {
      &quot;User&quot;:{
        &quot;id&quot;:38710,
        &quot;name&quot;:&quot;TommyLemon&quot;
      }
    },
    {
      &quot;User&quot;:{
        &quot;id&quot;:70793,
        &quot;name&quot;:&quot;Strong&quot;
      }
    },
    {
      &quot;User&quot;:{
        &quot;id&quot;:82001,
        &quot;name&quot;:&quot;Android&quot;
      }
    }
  ],
  &quot;code&quot;:200,
  &quot;msg&quot;:&quot;success&quot;
}"><pre class="notranslate"><code>{
  "[]":[
    {
      "User":{
        "id":38710,
        "name":"TommyLemon"
      }
    },
    {
      "User":{
        "id":70793,
        "name":"Strong"
      }
    },
    {
      "User":{
        "id":82001,
        "name":"Android"
      }
    }
  ],
  "code":200,
  "msg":"success"
}
</code></pre></div>
<br>
<p align="center" dir="auto">
  [GIF] APIJSON single arrays: simple queries, statistics, groups, orders, aggregations, paginations, searches, regexps, combinations, etc.
</p> 
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_array.gif"><img src="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_array.gif" alt="" data-animated-image="" style="max-width: 100%;"></a></p>
<div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">Get a Moment and its publisher</h4><a id="user-content-get-a-moment-and-its-publisher" class="anchor" aria-label="Permalink: Get a Moment and its publisher" href="#get-a-moment-and-its-publisher"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">Request:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;Moment&quot;:{
  },
  &quot;User&quot;:{
    &quot;id@&quot;:&quot;Moment/userId&quot;  //User.id = Moment.userId
  }
}"><pre class="notranslate"><code>{
  "Moment":{
  },
  "User":{
    "id@":"Moment/userId"  //User.id = Moment.userId
  }
}
</code></pre></div>
<p dir="auto"><a href="http://apijson.cn:8080/get/%7B%22Moment%22:%7B%7D,%22User%22:%7B%22id@%22:%22Moment%252FuserId%22%7D%7D" rel="nofollow">Click here to test</a></p>
<p dir="auto">Response:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;Moment&quot;:{
    &quot;id&quot;:12,
    &quot;userId&quot;:70793,
    &quot;date&quot;:&quot;2017-02-08 16:06:11.0&quot;,
    &quot;content&quot;:&quot;1111534034&quot;
  },
  &quot;User&quot;:{
    &quot;id&quot;:70793,
    &quot;sex&quot;:0,
    &quot;name&quot;:&quot;Strong&quot;,
    &quot;tag&quot;:&quot;djdj&quot;,
    &quot;head&quot;:&quot;http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000&quot;,
    &quot;contactIdList&quot;:[
      38710,
      82002
    ],
    &quot;date&quot;:&quot;2017-02-01 19:21:50.0&quot;
  },
  &quot;code&quot;:200,
  &quot;msg&quot;:&quot;success&quot;
}"><pre class="notranslate"><code>{
  "Moment":{
    "id":12,
    "userId":70793,
    "date":"2017-02-08 16:06:11.0",
    "content":"1111534034"
  },
  "User":{
    "id":70793,
    "sex":0,
    "name":"Strong",
    "tag":"djdj",
    "head":"http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000",
    "contactIdList":[
      38710,
      82002
    ],
    "date":"2017-02-01 19:21:50.0"
  },
  "code":200,
  "msg":"success"
}
</code></pre></div>
<br>
<div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">Get a Moment list like Twitter tweets</h4><a id="user-content-get-a-moment-list-like-twitter-tweets" class="anchor" aria-label="Permalink: Get a Moment list like Twitter tweets" href="#get-a-moment-list-like-twitter-tweets"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<p dir="auto">Request:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;[]&quot;:{                             //get an array
    &quot;page&quot;:0,                        //pagination
    &quot;count&quot;:2,
    &quot;Moment&quot;:{                       //get a Moment
      &quot;content$&quot;:&quot;%a%&quot;               //filter condition: content contains 'a'
    },
    &quot;User&quot;:{
      &quot;id@&quot;:&quot;/Moment/userId&quot;,        //User.id = Moment.userId, short reference path，starts from grandparents path
      &quot;@column&quot;:&quot;id,name,head&quot;       //get specified keys with the written order 
    },
    &quot;Comment[]&quot;:{                    //get a Comment array, and unwrap Comment object
      &quot;count&quot;:2,
      &quot;Comment&quot;:{
        &quot;momentId@&quot;:&quot;[]/Moment/id&quot;   //Comment.momentId = Moment.id, full reference path
      }
    }
  }
}"><pre class="notranslate"><code>{
  "[]":{                             //get an array
    "page":0,                        //pagination
    "count":2,
    "Moment":{                       //get a Moment
      "content$":"%a%"               //filter condition: content contains 'a'
    },
    "User":{
      "id@":"/Moment/userId",        //User.id = Moment.userId, short reference path，starts from grandparents path
      "@column":"id,name,head"       //get specified keys with the written order 
    },
    "Comment[]":{                    //get a Comment array, and unwrap Comment object
      "count":2,
      "Comment":{
        "momentId@":"[]/Moment/id"   //Comment.momentId = Moment.id, full reference path
      }
    }
  }
}
</code></pre></div>
<p dir="auto"><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22page%22:0,%22count%22:2,%22Moment%22:%7B%22content$%22:%22%2525a%2525%22%7D,%22User%22:%7B%22id@%22:%22%252FMoment%252FuserId%22,%22@column%22:%22id,name,head%22%7D,%22Comment%5B%5D%22:%7B%22count%22:2,%22Comment%22:%7B%22momentId@%22:%22%5B%5D%252FMoment%252Fid%22%7D%7D%7D%7D" rel="nofollow">Click here to test</a></p>
<p dir="auto">Response:</p>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="{
  &quot;[]&quot;:[
    {
      &quot;Moment&quot;:{
        &quot;id&quot;:15,
        &quot;userId&quot;:70793,
        &quot;date&quot;:1486541171000,
        &quot;content&quot;:&quot;APIJSON is a JSON Transmission Protocol…&quot;,
        &quot;praiseUserIdList&quot;:[
          82055,
          82002,
          82001
        ],
        &quot;pictureList&quot;:[
          &quot;http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000&quot;,
          &quot;http://common.cnblogs.com/images/icon_weibo_24.png&quot;
        ]
      },
      &quot;User&quot;:{
        &quot;id&quot;:70793,
        &quot;name&quot;:&quot;Strong&quot;,
        &quot;head&quot;:&quot;http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000&quot;
      },
      &quot;Comment[]&quot;:[
        {
          &quot;id&quot;:176,
          &quot;toId&quot;:166,
          &quot;userId&quot;:38710,
          &quot;momentId&quot;:15,
          &quot;date&quot;:1490444883000,
          &quot;content&quot;:&quot;thank you&quot;
        },
        {
          &quot;id&quot;:1490863469638,
          &quot;toId&quot;:0,
          &quot;userId&quot;:82002,
          &quot;momentId&quot;:15,
          &quot;date&quot;:1490863469000,
          &quot;content&quot;:&quot;Just do it&quot;
        }
      ]
    },
    {
      &quot;Moment&quot;:{
        &quot;id&quot;:58,
        &quot;userId&quot;:90814,
        &quot;date&quot;:1485947671000,
        &quot;content&quot;:&quot;This is a Content...-435&quot;,
        &quot;praiseUserIdList&quot;:[
          38710,
          82003,
          82005,
          93793,
          82006,
          82044,
          82001
        ],
        &quot;pictureList&quot;:[
          &quot;http://static.oschina.net/uploads/img/201604/22172507_aMmH.jpg&quot;
        ]
      },
      &quot;User&quot;:{
        &quot;id&quot;:90814,
        &quot;name&quot;:7,
        &quot;head&quot;:&quot;http://static.oschina.net/uploads/user/51/102723_50.jpg?t=1449212504000&quot;
      },
      &quot;Comment[]&quot;:[
        {
          &quot;id&quot;:13,
          &quot;toId&quot;:0,
          &quot;userId&quot;:82005,
          &quot;momentId&quot;:58,
          &quot;date&quot;:1485948050000,
          &quot;content&quot;:&quot;This is a Content...-13&quot;
        },
        {
          &quot;id&quot;:77,
          &quot;toId&quot;:13,
          &quot;userId&quot;:93793,
          &quot;momentId&quot;:58,
          &quot;date&quot;:1485948050000,
          &quot;content&quot;:&quot;This is a Content...-77&quot;
        }
      ]
    }
  ],
  &quot;code&quot;:200,
  &quot;msg&quot;:&quot;success&quot;
}"><pre class="notranslate"><code>{
  "[]":[
    {
      "Moment":{
        "id":15,
        "userId":70793,
        "date":1486541171000,
        "content":"APIJSON is a JSON Transmission Protocol…",
        "praiseUserIdList":[
          82055,
          82002,
          82001
        ],
        "pictureList":[
          "http://static.oschina.net/uploads/user/1218/2437072_100.jpg?t=1461076033000",
          "http://common.cnblogs.com/images/icon_weibo_24.png"
        ]
      },
      "User":{
        "id":70793,
        "name":"Strong",
        "head":"http://static.oschina.net/uploads/user/585/1170143_50.jpg?t=1390226446000"
      },
      "Comment[]":[
        {
          "id":176,
          "toId":166,
          "userId":38710,
          "momentId":15,
          "date":1490444883000,
          "content":"thank you"
        },
        {
          "id":1490863469638,
          "toId":0,
          "userId":82002,
          "momentId":15,
          "date":1490863469000,
          "content":"Just do it"
        }
      ]
    },
    {
      "Moment":{
        "id":58,
        "userId":90814,
        "date":1485947671000,
        "content":"This is a Content...-435",
        "praiseUserIdList":[
          38710,
          82003,
          82005,
          93793,
          82006,
          82044,
          82001
        ],
        "pictureList":[
          "http://static.oschina.net/uploads/img/201604/22172507_aMmH.jpg"
        ]
      },
      "User":{
        "id":90814,
        "name":7,
        "head":"http://static.oschina.net/uploads/user/51/102723_50.jpg?t=1449212504000"
      },
      "Comment[]":[
        {
          "id":13,
          "toId":0,
          "userId":82005,
          "momentId":58,
          "date":1485948050000,
          "content":"This is a Content...-13"
        },
        {
          "id":77,
          "toId":13,
          "userId":93793,
          "momentId":58,
          "date":1485948050000,
          "content":"This is a Content...-77"
        }
      ]
    }
  ],
  "code":200,
  "msg":"success"
}
</code></pre></div>
<p align="center" dir="auto">
  [GIF] APIJSON query multi related tables: one to one, one to many, many to one, various conditions, etc.
</p> 
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_associate.gif"><img src="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_associate.gif" alt="" data-animated-image="" style="max-width: 100%;"></a></p>
<br>
<p align="center" dir="auto">
  [GIF] APIJSON joins: &lt; LEFT JOIN, &amp; INNER JOIN, etc.
</p> 
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_join.gif"><img src="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_join.gif" alt="" data-animated-image="" style="max-width: 100%;"></a></p>
<br>
<p align="center" dir="auto">
  [GIF] APIJSON subqueries：@from@ FROM, key@ =, key&gt;@ &gt;, key{}@ IN, key}{@ EXISTS, etc.
</p> 
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_subquery.gif"><img src="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_subquery.gif" alt="" data-animated-image="" style="max-width: 100%;"></a></p>
<br>
<p align="center" dir="auto">
  [GIF] APIJSON: a set of some features, simple to complex
</p> 
<p dir="auto"><a target="_blank" rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_summary.gif"><img src="https://raw.githubusercontent.com/TommyLemon/StaticResources/master/APIJSON/APIJSON_query_summary.gif" alt="" data-animated-image="" style="max-width: 100%;"></a></p>
<br>
<p dir="auto"><a href="http://apijson.cn/api" rel="nofollow">Test it online</a></p>
<br>
<br>
<div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">API Design Rules</h2><a id="user-content-api-design-rules" class="anchor" aria-label="Permalink: API Design Rules" href="#api-design-rules"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">1. Methods and API endpoints</h3><a id="user-content-1-methods-and-api-endpoints" class="anchor" aria-label="Permalink: 1. Methods and API endpoints" href="#1-methods-and-api-endpoints"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Methods</th>
<th>URL</th>
<th>Request</th>
<th>Response</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>GET</strong>: <br> A general way to get data.<br> You can use dev tools to make edits in a web browser.</td>
<td>base_url/get/</td>
<td>{<br>    TableName:{<br>      //Add contiditions here.<br>    }<br>} <br> <br> Eg. To get a Moment with <code>id = 235</code>：<br>{<br>    "Moment":{<br>      "id":235<br>    }<br>}</td>
<td>{<br>    TableName:{<br>      ...<br>    },<br>    "code":200,<br>    "msg":"success"<br>}<br>Eg.<br>{<br>    "Moment":{<br>      "id":235,<br>      "userId":38710,<br>      "content":"APIJSON is the real-time coding-free, powerful and secure ORM"<br>    },<br>    "code":200,<br>    "msg":"success"<br> }</td>
</tr>
<tr>
<td><strong>HEAD</strong>: <br> A general way to get counts.<br> You can use dev tools to make edits in a web browser.</td>
<td>base_url/head/</td>
<td>{<br>    TableName:{<br>      …<br>    }<br> } <br> {…} are conditions. <br><br> Eg. Get the number of Moments posted by the user with <code>id = 38710</code>：<br>{<br>    "Moment":{<br>      "userId":38710<br>    }<br>}</td>
<td>{<br>    TableName:{<br>      "code":200,<br>      "msg":"success",<br>      "count":10<br>    },<br>    "code":200,<br>    "msg":"success"<br>} <br> Eg.<br>{<br>    "Moment":{<br>      "code":200,<br>      "msg":"success",<br>      "count":10<br>    },<br>    "code":200,<br>     "msg":"success"<br>}</td>
</tr>
<tr>
<td><strong>GETS</strong>: <br> Get data with high security and confidentiality.<br> Eg. bank accounts, birth date.</td>
<td>base_url/gets/</td>
<td>You need to add <code>"tag":tag</code> with the same level of <code>Moment:{}</code>. Others are the same as <strong>GET</strong>.</td>
<td>Same as <strong>GET</strong>.</td>
</tr>
<tr>
<td><strong>HEADS</strong>: <br> Get counts of confidential data(eg. bank account).</td>
<td>base_url/heads/</td>
<td>You need to add  <code>"tag":tag</code> with the same level of <code>Moment:{}</code>. Others are the same as <strong>HEAD</strong>.</td>
<td>Same as <strong>HEAD</strong>.</td>
</tr>
<tr>
<td><strong>POST</strong>: <br> Add new data.</td>
<td>base_url/post/</td>
<td>{<br>    TableName:{<br>      …<br>    },<br>    "tag":tag<br>} <br> The id in {...} is generated automatically when table is built and can’t be set by the user. <br><br>Eg. A user with <code>id = 38710</code> posts a new Moment：<br>{<br>    "Moment":{<br>      "userId":38710,<br>      "content":"APIJSON is the real-time coding-free, powerful and secure ORM"<br>    },<br>    "tag":"Moment"<br>}</td>
<td>{<br>    TableName:{<br>      "code":200,<br>      "msg":"success",<br>      "id":38710<br>    },<br>    "code":200,<br>    "msg":"success"<br>}<br>Eg.<br>{<br>    "Moment":{<br>      "code":200,<br>      "msg":"success",<br>      "id":120<br>    },<br>    "code":200,<br>    "msg":"success"<br>}</td>
</tr>
<tr>
<td><strong>PUT</strong>: <br> Make changes to a specific item.<br> Only change the part sent to server.</td>
<td>base_url/put/</td>
<td>{<br>    TableName:{<br>      "id":id,<br>      …<br>    },<br>    "tag":tag<br>} <br>  You can also add multiple id as <code>id{}</code>.<br><br>Eg. Make changes to Moment's content with id= 235:<br>{<br>    "Moment":{<br>      "id":235,<br>      "content":"APIJSON is the real-time coding-free, powerful and secure ORM"<br>    },<br>    "tag":"Moment"<br>}</td>
<td>Same as <strong>POST</strong>.</td>
</tr>
<tr>
<td><strong>DELETE</strong>: <br> Delete data.</td>
<td>base_url/delete/</td>
<td>{<br>    TableName:{<br>      "id":id<br>    },<br>    "tag":tag<br>} <br> You can also add multiple id as <code>id{}</code>. <br><br> Or Delete contents with multiple id：<br>{<br>    "Comment":{<br>      "id{}":[100,110,120]<br>    },<br>    "tag":"Comment[]"<br>}</td>
<td>{<br>    TableName:{<br>      "code":200,<br>      "msg":"success",<br>      "id[]":[100,110,120]<br>      "count":3<br>    },<br>    "code":200,<br>    "msg":"success"<br>}<br>Eg.<br>{<br>   "Comment":{<br>      "code":200,<br>      "msg":"success",<br>      "id[]":[100,110,120],<br>      "count":3<br>   },<br>   "code":200,<br>   "msg":"success"<br>}</td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<p dir="auto"><strong>Note</strong>:<br></p>
<ol dir="auto">
<li>TableName means the name of the table where you get data. It’ll respond with a JSON Object(the form is {....})with columns inside.</li>
<li><code>"tag":tag</code> is needed when methods are not GET or HEAD. The tag after the colon is the key in JSON Object of making requests. Generally, it’s the name of the table you’re looking for.</li>
<li>GET, HEAD are methods for general data requests.They support versatile JSON Object structure. Other methods are used for requesting confidential data and the requesting JSON Object needs to be in the same form/order as that in the database. Otherwise, the request shall be denied.</li>
<li>GETS and GET, HEADS and HEAD return the same type of data. But the request form is a little different.</li>
<li>For HTTP, all API methods (get,gets,head,heads,post,put,delete) make requests with HTTP POST.</li>
<li>All JSON Objects here are with {...} form. You can put items or objects in it.</li>
<li>Each object in the database has a unique address.</li>
</ol>
<br>
<div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">2. Keyswords in URL parameters</h3><a id="user-content-2-keyswords-in-url-parameters" class="anchor" aria-label="Permalink: 2. Keyswords in URL parameters" href="#2-keyswords-in-url-parameters"><svg data-component="Octicon" class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div>
<markdown-accessiblity-table><table>
<thead>
<tr>
<th>Functions</th>
<th>Key-value pairs</th>
<th>Examples</th>
</tr>
</thead>
<tbody>
<tr>
<td>Get data in arrays</td>
<td><code>"key[]":{}</code><br> The part after the colon is a JSONObject. <em>key</em> is optional. When <em>key</em> is the same as the table name , the JSONObject will be in a simplified form. For example,  <code>{Table:{Content}}</code> will be written as <code>{Content}</code>.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%7D%7D%7D" rel="nofollow">{"User[]":{"User":{}}}</a> <br>It is used for getting data from a user. Here, key and tablename are all "User", then <br><code>{"User":{"id", ...}}</code> <br>will be written as <br> <code>{"id", ...}</code></td>
</tr>
<tr>
<td>Get data that meets specific conditions</td>
<td><code>"key{}":[]</code> <br>The part after the colon is a JSONArray with conditions inside.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22id%7B%7D%22:%5B38710,82001,70793%5D%7D%7D%7D" rel="nofollow">"id{}":[38710,82001,70793]</a> <br>In SQL, this would be <code>id IN(38710,82001,70793)</code>. <br>It means getting data with id equals 38710,82001,70793.</td>
</tr>
<tr>
<td>Get data with comparison operation</td>
<td><code>"key{}":"condition0,condition1..."</code><br>Conditions can be any SQL comparision operation. Use''to include any non-number characters.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22id%7B%7D%22:%22%3C=80000,%3E90000%22%7D%7D%7D" rel="nofollow">"id{}":"&lt;=80000,&gt;90000"</a> <br>In SQL, it'd be <br> <code>id&lt;=80000 OR id&gt;90000</code>, <br>which means get User array with id&lt;=80000 | id&gt;90000</td>
</tr>
<tr>
<td>Get data that contains an element</td>
<td><code>"key&lt;&gt;":Object</code>  =&gt;  <code>"key&lt;&gt;":[Object]</code> <br> <em>key</em> must be a JSONArray while <em>Object</em> cannot be JSON.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22contactIdList%3C%3E%22:38710%7D%7D%7D" rel="nofollow">"contactIdList&lt;&gt;":38710</a> <br>In SQL, this would be <br><code>json_contains(contactIdList,38710)</code>. <br>It means find data of the User whose contactList contains 38710.</td>
</tr>
<tr>
<td>See if it exists</td>
<td><code>"key}{@":{</code><br>    <code>"from":"Table",</code><br>    <code>"Table":{ ... }</code><br><code>}</code><br><br>}{ means EXISTS.<br> <em>key</em> is the one you want to check. <br>Here is a <em>Subquery</em> in it, see specifications below for more information.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%22:%7B%22id%7D%7B@%22:%7B%22from%22:%22Comment%22,%22Comment%22:%7B%22momentId%22:15%7D%7D%7D%7D" rel="nofollow">"id}{@":{<br>    "from":"Comment",<br>    "Comment":{<br>        "momentId":15 <br>    }<br>}</a><br> WHERE EXISTS(SELECT * FROM Comment WHERE momentId=15)</td>
</tr>
<tr>
<td>Include functions in parameters</td>
<td><code>"key()":"function (key0,key1...)"</code><br>This will trigger the back-end <br> <code>function(JSONObject request, String key0, String key1...)</code> <br>to get or testify data.<br> Use - and + to show the order of priority: analyze key-() &gt; analyze the current object &gt; analyze key() &gt; analyze child object &gt; analyze key+()</td>
<td><a href="http://apijson.cn:8080/get/%7B%22Moment%22:%7B%22id%22:301,%22isPraised()%22:%22isContain(praiseUserIdList,userId)%22%7D%7D" rel="nofollow">"isPraised()":"isContain(praiseUserIdList,userId)"</a> <br>This will use function boolean isContain(JSONObject request, String array, String value). In this case, client will get "isPraised":true(In this case, client use function to testify if a user clicked ‘like’ button for a Moment.)</td>
</tr>
<tr>
<td>Refer a value</td>
<td><code>"key@":"key0/key1/.../refKey"</code><br>Use / to show path. The part before the colon is the key that wants to refer. The path after the colon starts with the parent level of the key.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22Moment%22:%7B%22userId%22:38710%7D,%22User%22:%7B%22id@%22:%22%252FMoment%252FuserId%22%7D%7D" rel="nofollow">"Moment":{<br>    "userId":38710<br>},<br>"User":{<br>    "id@":"/Moment/userId"<br>}</a><br> In this example, the value of id in User refer to the <em>userId</em> in <em>Moment</em>, which means <br><code>User.id = Moment.userId</code>. <br>After the request is sent, <br><code>"id@":"/Moment/userId"</code> will be <code>"id":38710</code>.</td>
</tr>
<tr>
<td>Subquery</td>
<td><code>"key@":{</code><br>    <code>"range":"ALL",</code> <br>    <code>"from":"Table",</code><br>    <code>"Table":{ ... }</code><br><code>}</code><br><em>range</em> can be ALL, ANY.<br><em>from</em> means which table you want to query. <br>It’s very similar to how you query in SQL. <br>You can also use <em>count</em>, <em>join</em>, etc.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%22:%7B%22id@%22:%7B%22from%22:%22Comment%22,%22Comment%22:%7B%22@column%22:%22min(userId)%22%7D%7D%7D%7D" rel="nofollow">"id@":{<br>    "from":"Comment",<br>    "Comment":{<br>        "@column":"min(userId)" <br>    }<br>}</a><br> <code>WHERE id=(SELECT min(userId) FROM Comment)</code>.</td>
</tr>
<tr>
<td>Fuzzy matching</td>
<td><code>"key$":"SQL search expressions"</code>  =&gt;  <code>"key$":["SQL search expressions"]</code><br>Any SQL search expressions.Eg.%key%(include key), key%(start with key),%k%e%y%(include k, e, y). % means any characters.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22name$%22:%22%2525m%2525%22%7D%7D%7D" rel="nofollow">"name$":"%m%"</a> <br>In SQL, it's <br><code>name LIKE '%m%'</code>, <br>meaning that get User with ‘m’ in name.</td>
</tr>
<tr>
<td>Regular Expression</td>
<td><code>"key~":"regular expression"</code>  =&gt;  <code>"key~":["regular expression"]</code><br>It can be any regular expressions.Eg. ^[0-9]+$ ，*~ not case sensitive, advanced search is applicable.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22name~%22:%22%5E%5B0-9%5D%252B$%22%7D%7D%7D" rel="nofollow">"name~":"^[0-9]+$"</a> <br>In SQL, it's <br><code>name REGEXP '^[0-9]+$'</code>.</td>
</tr>
<tr>
<td>Get data in a range</td>
<td><code>"key%":"start,end"</code>  =&gt;  <code>"key%":["start,end"]</code><br>The data type of start and end can only be either Boolean, Number or String. Eg. "2017-01-01,2019-01-01" ，["1,90000", "82001,100000"]. It's used for getting data from a specific time range.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:3,%22User%22:%7B%22date%2525%22:%222017-10-01,2018-10-01%22%7D%7D%7D" rel="nofollow">"date%":"2017-10-01,2018-10-01"</a> <br>In SQL, it's <br><code>date BETWEEN '2017-10-01' AND '2018-10-01'</code>, <br>meaning to get User data that registered between 2017-10-01 and 2018-10-01.</td>
</tr>
<tr>
<td>Make an alias</td>
<td><code>"name:alias"</code><br>this changes name to alias in returning results. It’s applicable to column, tableName, SQL Functions, etc. but only in GET, HEAD requests.</td>
<td><a href="http://apijson.cn:8080/get/%7B%22Comment%22:%7B%22@column%22:%22id,toId:parentId%22,%22id%22:51%7D%7D" rel="nofollow">"@column":"toId:parentId"</a> <br>In SQL, it's <br><code>toId AS parentId</code>. <br>It'll return <code>parentId</code> instead of <code>toId</code>.<br><br>For @key format like "lc_wai6b3vk2:(lc_wai6b3vk)", it means renaming field lc_wai6b3vk2 to lc_wai6b3vk, commonly used for field renaming scenarios. Example:<br>{<br>  "lc_sinan_ba074fbb": {<br>    "lc_wai6b3vk": "11",<br>    "lc_wai6b3vk2": "22",<br>    "@combine": "lc_wai6b3vk | lc_wai6b3vk2",<br>    "@key": "lc_wai6b3vk2:(lc_wai6b3vk)"<br>  }<br>}<br>corresponds to SQL <code>(lc_wai6b3vk = '11' OR lc_wai6b3vk2 = '22')</code>, but the lc_wai6b3vk2 field will be renamed and displayed as lc_wai6b3vk in the returned result</td>
</tr>
<tr>
<td>Add / expand an item</td>
<td><code>"key+":Object</code> <br> The type of Object is decided by <em>key</em>. Types can be Number, String, JSONArray. Froms are 82001,"apijson",["url0","url1"] respectively. It’s only applicable to PUT request.</td>
<td>"praiseUserIdList+":[82001]. In SQL, it's <br><code>json_insert(praiseUserIdList,82001)</code>. <br>Add an <em>id</em> that praised the Moment.</td>
</tr>
<tr>
<td>Delete / decrease an item</td>
<td><code>"Key-":Object</code><br> It’s the contrary of "key+"</td>
<td>"balance-":100.00. In SQL, it's <br><code>balance = balance - 100.00</code>, <br>meaning there's 100 less in balance.</td>
</tr>
<tr>
<td>Operations</td>
<td>&amp;, |, ! <br> They're used in logic operations. It’s the same as AND, OR, NOT in SQL respectively. <br>By default, for the same key, it’s ‘|’ (OR)operation among conditions; for different keys, the default operation among conditions is ‘&amp;’(AND). <br></td>
<td>① <a href="http://apijson.cn:8080/head/%7B%22User%22:%7B%22id&amp;%7B%7D%22:%22%3E80000,%3C=90000%22%7D%7D" rel="nofollow">"id&amp;{}":"&gt;80000,&lt;=90000"</a> <br>In SQL, it's <br><code>id&gt;80000 AND id&lt;=90000</code>, <br>meaning <em>id</em> needs to be id&gt;80000 &amp; id&lt;=90000<br><br> ② <a href="http://apijson.cn:8080/head/%7B%22User%22:%7B%22id%7C%7B%7D%22:%22%3E90000,%3C=80000%22%7D%7D" rel="nofollow">"id|{}":"&gt;90000,&lt;=80000"</a> <br>It's the same as "id{}":"&gt;90000,&lt;=80000". <br>In SQL, it's <br><code>id&gt;80000 OR id&lt;=90000</code>, <br>meaning that <em>id</em> needs to be id&gt;90000 | id&lt;=80000<br><br> ③ <a href="http://apijson.cn:8080/head/%7B%22User%22:%7B%22id!%7B%7D%22:%5B82001,38710%5D%7D%7D" rel="nofollow">"id!{}":[82001,38710]</a> <br>In SQL, it's <br><code>id NOT IN(82001,38710)</code>, <br>meaning id needs to be ! (id=82001 | id=38710).</td>
</tr>
<tr>
<td>Keywords in an Array: It can be self-defined.</td>
<td>As for <code>"key":Object</code>, <em>key</em> is the keyword of <em>{}</em> in <em>"[]":{}</em>. The type of <em>Object</em> is up to <em>key</em>.<br><br>① <code>"count":Integer</code> It's used to count the number. The default largest number is 100. <br><br>② <code>"page":Integer</code> It’s used for getting data from which page, starting from 0. The default largest number is 100. It’s usually used with COUNT. <br><br>③ <code>"query":Integer</code> Get the number of items that match conditions<br>When to get the object, the integer should be 0; when to get the total number, it’s 1; when both above, it’s 2.<br>You can get the total number with keyword total. It can be referred to other values. <br>Eg. <br><code>"total@":"/[]/total"</code> <br>Put it as the same level of query.  <br><em>Query</em> and <em>total</em> are used in GET requests just for convenience. Generally, HEAD request is for getting numbers like the total number.<br><br>④ <code>"join":"&amp;/Table0,&lt;/Table1"</code><br>Join tables：<br> "&lt;" - LEFT JOIN <br> "&gt;" - RIGHT JOIN <br> "&amp;" - INNER JOIN <br> "|" - FULL JOIN <br>  "!" - OUTER JOIN <br> "@" - APP JOIN <br>Where @ APP JOIN is in application layer.It’ll get all the keys in tables that refKeys in result tables are referred to, like refKeys:[value0, value1….]. Then, as the results get data according to <code>key=$refKey</code> a number of times (COUNT), it uses key <code>IN($refKeys)</code> to put these counts together in just one SQL query, in order to improve the performance.<br> Other JOIN functions are the same as those in SQL. <br><code>"join":"&lt;/ViceTable",</code><br><code>"MainTable":{},</code><br><code>"ViceTable":{"key@":"/MainTable/refKey"}</code><br>will return <br><code>MainTable LEFT JOIN ViceTable</code> <br><code>ON ViceTable.key=MainTable.refKey</code> <br><br>⑤ <code>"otherKey":Object</code> Self-defined keyword other than those that already in the system. It also returns with self-defined keywords.</td>
<td>① Get User arrays with maximum of 5：<br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:5,%22User%22:%7B%7D%7D%7D" rel="nofollow">"count":5</a><br><br> ② Look into User arrays on page 3. Show 5 of them each page. <br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:5,%22page%22:3,%22User%22:%7B%7D%7D%7D" rel="nofollow">"count":5,<br>"page":3</a><br><br> ③ Get User Arrays and count the total number of Users：<br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22query%22:2,%22count%22:5,%22User%22:%7B%7D%7D,%22total@%22:%22%252F%5B%5D%252Ftotal%22%7D" rel="nofollow">"[]":{<br>    "query":2,<br>    "User":{}<br>},<br>"total@":"/[]/total"</a><br>Questions like total page numbers or if there's next page can be solved by total,count,page functions，<br>Total page number: <br><code>int totalPage = Math.ceil(total / count)</code><br>If this is the last page: <br><code>boolean hasNextPage = total &gt; count*page</code><br>If this is the first page: <br><code>boolean isFirstPage = page &lt;= 0</code><br>If it's the last page: <br><code>boolean isLastPage = total &lt;= count*page</code><br>... <br><br> ④ Moment INNER JOIN User LEFT JOIN Comment：<br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:5,%22join%22:%22&amp;%252FUser,%3C%252FComment%22,%22Moment%22:%7B%22@column%22:%22id,userId,content%22%7D,%22User%22:%7B%22name~%22:%22t%22,%22id@%22:%22%252FMoment%252FuserId%22,%22@column%22:%22id,name,head%22%7D,%22Comment%22:%7B%22momentId@%22:%22%252FMoment%252Fid%22,%22@column%22:%22id,momentId,content%22%7D%7D%7D" rel="nofollow">"[]":{<br>    "join": "&amp;/User,&lt;/Comment",<br>    "Moment":{},<br>    "User":{<br>      "name~":"t",<br>      "id@": "/Moment/userId"<br>    },<br>    "Comment":{<br>      "momentId@": "/Moment/id"<br>    }<br>}</a><br><br> ⑤ Add the current user to every level：<br><a href="http://apijson.cn:8080/get/%7B%22User%22:%7B%7D,%22%5B%5D%22:%7B%22name@%22:%22User%252Fname%22,%22Moment%22:%7B%7D%7D%7D" rel="nofollow">"User":{},<br>"[]":{<br>    "name@":"User/name", //self-defined keyword<br>    "Moment":{}<br>}</a></td>
</tr>
<tr>
<td>Keywords in Objects: It can be self-defined.</td>
<td><code>"@key":Object</code> @key is the keyword of {} in Table:{}. The type of Object is decided by @key<br><br>① <code>"@combine":"&amp;key0,&amp;key1,|key2,key3,</code><br><code>!key4,!key5,&amp;key6,key7..."</code><br>First, it’ll group data with same operators. Within one group, it operates from left to right. Then it’ll follow the order of &amp; | ! to do the operation. Different groups are connected with &amp;. So the expression above will be : <br> (key0 &amp; key1 &amp; key6 &amp; other key) &amp; (key2 | key3 | key7) &amp; !(key4 | key5) <br>| is optional. <br><br>② <code>"@column":"column;function(arg)..."</code> Return with specific columns.<br><br>③ <code>"@order":"column0+,column1-..."</code> Decide the order of returning results:<br><br>④ <code>"@group":"column0,column1..."</code> How to group data. If @column has declared Table id, this id need to be included in @group. In other situations, at least one of the following needs to be done:<br>1.Group id is declared in @column<br>2.Primary Key of the table is declared in @group.<br><br>⑤ <code>@having":"function0(...)?value0;function1(...)?value1;function2(...)?value2..."</code> Add conditions on return results with @having. Usually working with@group, it’s declared in @column.<br><br>⑥ <code>"@schema":"sys"</code> Can be set as default setting.<br><br>⑦ <code>"@database":"POSTGRESQL"</code> Get data from a different database.Can be set as default setting.<br><br>⑧ <code>"@role":"OWNER"</code> Get information of the user, including <br>UNKNOWN,LOGIN,CONTACT,CIRCLE,OWNER,ADMIN，<br>Can be set as default setting. <br>You can self-define a new role or rewrite a role.  Use<code>Verifier.verify</code> etc. to self-define validation methods. <br><br>⑨ <code>"@explain":true</code> Profiling. Can be set as default setting. <br><br>⑩ <code>"@otherKey":Object</code> Self-define keyword</td>
<td>① Search <em>Users</em> that <em>name</em> or <em>tag</em> contains the letter "a":<br><a href="http://apijson.cn:8080/get/%7B%22User%5B%5D%22:%7B%22count%22:10,%22User%22:%7B%22@column%22:%22id,name,tag%22,%22name~%22:%22a%22,%22tag~%22:%22a%22,%22@combine%22:%22name~,tag~%22%7D%7D%7D" rel="nofollow">"name~":"a",<br>"tag~":"a",<br>"@combine":"name~,tag~"</a><br><br> ② Only search column id,sex,name and return with the same order:<br><a href="http://apijson.cn:8080/get/%7B%22User%22:%7B%22@column%22:%22id,sex,name%22,%22id%22:38710%7D%7D" rel="nofollow">"@column":"id,sex,name"</a><br><br> ③ Search Users that have descending order of name and default order of id:<br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:10,%22User%22:%7B%22@column%22:%22name,id%22,%22@order%22:%22name-,id%22%7D%7D%7D" rel="nofollow">"@order":"name-,id"</a><br><br> ④ Search Moment grouped with userId: <br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:10,%22Moment%22:%7B%22@column%22:%22userId,id%22,%22@group%22:%22userId,id%22%7D%7D%7D" rel="nofollow">"@group":"userId,id"</a><br><br> ⑤ Search Moments that id equals or less than 100 and group with userId:<br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:10,%22Moment%22:%7B%22@column%22:%22userId%253Bmax(id)%22,%22@group%22:%22userId%22,%22@having%22:%22max(id)%3E=100%22%7D%7D%7D" rel="nofollow">"@column":"userId;max(id)",<br>"@group":"userId",<br>"@having":"max(id)&gt;=100"</a><br>You can also define the name of the returned function:<br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22count%22:10,%22Moment%22:%7B%22@column%22:%22userId%253Bmax(id):maxId%22,%22@group%22:%22userId%22,%22@having%22:%22(maxId)%3E=100%22%7D%7D%7D" rel="nofollow">"@column":"userId;max(id):maxId",<br>"@group":"userId",<br>"@having":"(maxId)&gt;=100"</a><br><br> ⑥ Check Users table in sys: <br><a href="http://apijson.cn:8080/get/%7B%22User%22:%7B%22@schema%22:%22sys%22%7D%7D" rel="nofollow">"@schema":"sys"</a><br><br> ⑦ Check Users table in PostgreSQL:<br><a href="http://apijson.cn:8080/get/%7B%22User%22:%7B%22@database%22:%22POSTGRESQL%22%7D%7D" rel="nofollow">"@database":"POSTGRESQL"</a><br><br> ⑧ Check the current user's activity:<br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22Moment%22:%7B%22@role%22:%22OWNER%22%7D%7D%7D" rel="nofollow">"@role":"OWNER"</a><br><br> ⑨ Turn on profiling: <br><a href="http://apijson.cn:8080/get/%7B%22%5B%5D%22:%7B%22Moment%22:%7B%22@explain%22:true%7D%7D%7D" rel="nofollow">"@explain":true</a><br><br> ⑩ Get the No.0 picture from pictureList：<br><a href="http://apijson.cn:8080/get/%7B%22User%22:%7B%22id%22:38710,%22@position%22:0,%22firstPicture()%22:%22getFromArray(pictureList,@position)%22%7D%7D" rel="nofollow">"@position":0, //self-defined keyword<br>"firstPicture()":"getFromArray(pictureList,@position)"</a></td>
</tr>
<tr>
<td>global keyword.</td>
<td>It is a keyword inside the outermost object {}. Among them, @database, @schema, @datasource, @role, and @explain are basically the same as object keywords, see the above description, the difference is that the global keywords will be automatically inserted in each table object as the default value. <br><br>① "tag": String, the following tag is the identifier of the JSON structure matching the request in non-GET or HEAD requests, generally it is the name of the Table to be queried or the array Table[] or Table:[] corresponding to the name, determined by the backend specified in the Request table. <br><br> ② "version": Integer, the interface version. If the version is not passed, null or &lt;=0, the highest version will be used. If other valid values are passed, the lowest version closest to it will be used, which is specified in the backend Request table.<br><br> ③ "format": Boolean, formatted to return the key of the Response JSON, generally converting TableName to tableName, TableName[] to tableNameList, Table:alias to alias, TableName-key[] to tableNameKeyList and other camelcase formats.</td>
<td>①  Check private information:：<br><a href="http://apijson.cn/api?url=http%3A%2F%2Fapijson.cn%3A8080%2Fgets&amp;type=JSON&amp;json=%7B%22tag%22:%22Privacy%22,%22Privacy%22:%7B%22id%22:82001%7D%7D" rel="nofollow">{"tag":"Privacy","Privacy":{"id":82001}}</a><br><br> ② Use the version 1 interface to check private information:：<br><a href="http://apijson.cn/api?url=http%3A%2F%2Fapijson.cn%3A8080%2Fgets&amp;type=JSON&amp;json=%7B%22version%22:1,%22tag%22:%22Privacy%22,%22Privacy%22:%7B%22id%22:82001%7D%7D" rel="nofollow">{"version":1,"tag":"Privacy","Privacy":{"id":82001}}</a> <br><br> ③ Format Moments interface to return in JSON key：<br><a href="http://apijson.cn:8080/get/%7B%22format%22:true,%22%5B%5D%22:%7B%22page%22:0,%22count%22:3,%22Moment%22:%7B%7D,%22User%22:%7B%22id@%22:%22%252FMoment%252FuserId%22%7D,%22Comment%5B%5D%22:%7B%22count%22:3,%22Comment%22:%7B%22momentId@%22:%22%5B%5D%252FMoment%252Fid%22%7D%7D%7D%7D" rel="nofollow">{<br>    "format":true, <br>    "[]":{<br>      "page":0, <br>      "count":3, <br>      "Moment":{}, <br>      "User":{<br>        "id@":"/Moment/userId"<br>      },<br>      "Comment[]":{<br>        "count":3,<br>        "Comment":{<br>          "momentId@":"[]/Moment/id"<br>        }<br>      }<br>    }<br>}</a></td>
</tr>
</tbody>
</table></markdown-accessiblity-table>
<br>
</article></div><div class="d-none"></div></section></div></div></div> </div> <!-- --> </div></div></div></div></div></div><div class="ScrollMarksContainer-module__scrollMarksContainer__Eu7uU" id="find-result-marks-container"></div><div class="d-none"></div><div class="d-none"></div></div> <!-- --> <!-- --> </div>
</react-app>




  </div>

</turbo-frame>

    </main>
  </div>

  </div>

          <footer class="footer f6 color-fg-muted color-border-subtle tmp-pt-7 tmp-pb-6 p-responsive" role="contentinfo"  >
  <h2 class='sr-only'>Footer</h2>

  


  <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap">
    <div class="d-flex flex-items-center flex-shrink-0 mx-2">
      <a aria-label="GitHub Homepage" class="footer-octicon mr-2" href="https://github.com">
        <svg aria-hidden="true" data-component="Octicon" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
    <path d="M10.226 17.284c-2.965-.36-5.054-2.493-5.054-5.256 0-1.123.404-2.336 1.078-3.144-.292-.741-.247-2.314.09-2.965.898-.112 2.111.36 2.83 1.01.853-.269 1.752-.404 2.853-.404 1.1 0 1.999.135 2.807.382.696-.629 1.932-1.1 2.83-.988.315.606.36 2.179.067 2.942.72.854 1.101 2 1.101 3.167 0 2.763-2.089 4.852-5.098 5.234.763.494 1.28 1.572 1.28 2.807v2.336c0 .674.561 1.056 1.235.786 4.066-1.55 7.255-5.615 7.255-10.646C23.5 6.188 18.334 1 11.978 1 5.62 1 .5 6.188.5 12.545c0 4.986 3.167 9.12 7.435 10.669.606.225 1.19-.18 1.19-.786V20.63a2.9 2.9 0 0 1-1.078.224c-1.483 0-2.359-.808-2.987-2.313-.247-.607-.517-.966-1.034-1.033-.27-.023-.359-.135-.359-.27 0-.27.45-.471.898-.471.652 0 1.213.404 1.797 1.235.45.651.921.943 1.483.943.561 0 .92-.202 1.437-.719.382-.381.674-.718.944-.943"></path>
</svg>
</a>
      <span>
        &copy; 2026 GitHub,&nbsp;Inc.
      </span>
    </div>

    <nav aria-label="Footer">
      <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3>

      <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading">


          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a>
          </li>


            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a>
            </li>

            <li class="mx-2">
              <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a>
            </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to community&quot;,&quot;label&quot;:&quot;text:community&quot;}" href="https://github.community/" data-view-component="true" class="Link--secondary Link">Community</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a>
          </li>

          <li class="mx-2">
            <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a>
          </li>

          
<li class="mx-2" >
  <cookie-consent-link>
    <button
      type="button"
      class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent"
      data-action="click:cookie-consent-link#showConsentManagement"
      data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}"
    >
      Manage cookies
    </button>
  </cookie-consent-link>
</li>

  <li class="mx-2">
    <cookie-consent-link>
      <button
        type="button"
        class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent text-left"
        data-action="click:cookie-consent-link#showConsentManagement"
        data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}"
      >
        Do not share my personal information
      </button>
    </cookie-consent-link>
  </li>

      </ul>
    </nav>
  </div>
</footer>



    <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999"
      data-locale="en"
      data-initial-cookie-consent-allowed=""
      data-cookie-consent-required="true"
    ></ghcc-consent>




  <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
    <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
    <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path>
</svg>
    <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
    </button>
    You can’t perform that action at this time.
  </div>

    <template id="site-details-dialog">
  <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
    <summary role="button" aria-label="Close dialog"></summary>
    <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
      <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
        <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
    <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path>
</svg>
      </button>
      <div class="octocat-spinner tmp-my-6 js-details-dialog-spinner"></div>
    </details-dialog>
  </details>
</template>

    <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;">
  <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
  </div>
</div>

    <template id="snippet-clipboard-copy-button">
  <div class="zeroclipboard-container position-absolute right-0 top-0">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2 tmp-m-2">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2 tmp-m-2">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>
<template id="snippet-clipboard-copy-button-unpositioned">
  <div class="zeroclipboard-container">
    <clipboard-copy aria-label="Copy code to clipboard" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w">
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon">
    <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path>
</svg>
      <svg aria-hidden="true" data-component="Octicon" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none">
    <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path>
</svg>
    </clipboard-copy>
  </div>
</template>




    </div>
    <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div>
    <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div>
  </body>
</html>

