API에 인증이 필요하고 Android 클라이언트를 지원하는 경우 필수 항목입니다. Google ID 토큰의 경우, 이는 토큰 요청을 위임한 클라이언트 ID의 목록일 수 있습니다. 제3자 인증 제공업체(예: Auth0)가 토큰을 발급하는 경우, 이는 인증 발급기관 이름과 대상 목록 간의 사전 매핑이어야 합니다. 자세한 내용은 허용되는 클라이언트 ID 및 대상을 참조하세요.
audiences=['1-web-apps.apps.googleusercontent.com'] 또는 audiences={"auth0": ["aud-1.auth0.com", "aud-2.auth0.com"]}
base_path
선택사항입니다. 지정된 경로에서 API를 제공하는 데 사용됩니다. 이 인수를 지정하는 경우 app.yaml 파일의 handlers 섹션도 변경해야 합니다.
선택사항입니다. 클라이언트 라이브러리에서 API에 다른 이름이나 더 읽기 쉬운 이름을 지정하는 데 사용됩니다. 이 이름은 클라이언트 라이브러리에서 이름을 생성하는 데 사용되며 백엔드 API는 name 속성에 지정된 값을 계속 사용합니다.
예를 들어 API에 dfaanalytics로 설정된 name이 있는 경우 이 속성을 사용하여 DFA Group Analytics의 표준 이름을 지정할 수 있습니다. 그러면 생성된 클라이언트 클래스에 DfaGroupAnalytics 이름이 포함됩니다.
예시와 같이 이름 사이에 적절한 공백을 포함시켜야 합니다. 이러한 공백은 적절한 카멜표기법 또는 밑줄로 대체됩니다.
canonical_name='DFA Analytics'
description
API에 대한 간단한 설명입니다. API 설명을 위해 검색 서비스에 노출되며, 클라이언트 라이브러리 생성에 설명된 대로 문서를 생성하는 데에도 사용 가능합니다.
description='Sample API for a simple game'
documentation
선택사항입니다. 사용자가 이 버전의 API에 대한 문서를 찾을 수 있는 URL입니다. 사용자가 서비스에 대해 알아볼 수 있도록 API 탐색기 페이지 상단에 '자세히 알아보기'로 강조표시됩니다.
documentation='http://link_to/docs'
hostname
App Engine 애플리케이션의 호스트 이름입니다. Endpoints Frameworks 명령줄 도구는 검색 문서 또는 OpenAPI 문서를 생성할 때 개발자가 여기에서 지정하는 값을 사용합니다. 여기서 호스트 이름을 지정하지 않으면 호스트 이름을 app.yaml 파일의 application 필드에 지정하거나 App Engine 애플리케이션을 배포할 때 프로젝트 ID를 지정해야 합니다.
hostname='your_app_id.appspot.com'
issuers
선택사항입니다. 커스텀 JWT 발급기관 구성입니다. 이는 발급자 이름에서 endpoints.Issuer 객체로의 사전 매핑이어야 합니다.
선택사항입니다. API를 소유한 항목의 도메인 이름입니다. 이 API에 대해 생성될 때 클라이언트 라이브러리의 이름을 적절히 지정하기 위한 힌트를 제공하기 위해 owner_name과 함께 사용됩니다. 패키지 경로는 owner_domain과 package_path의 역입니다(제공된 경우). 기본값은 appid.apppost.com를 사용합니다.
owner_domain='your-company.com'
owner_name
선택사항입니다. API를 소유한 항목의 이름입니다. 이 API에 대해 생성될 때 클라이언트 라이브러리의 이름을 적절히 지정하기 위한 힌트를 제공하기 위해 owner_domain과 함께 사용됩니다.
owner_name='Your-Company'
package_path
선택사항입니다. 이 API가 속한 '패키지'의 범위를 더 구체적으로 명시하는 데 사용되며, 값은 API의 논리적 그룹을 지정하는 /로 구분됩니다.
예를 들어 cloud/platform으로 지정할 경우 클라이언트 라이브러리 경로가 cloud/platform/<ApiName>으로 설정되고 클라이언트 라이브러리 패키지는 cloud.plaform.<ApiName>으로 설정됩니다.
package_path='cloud/platform'
scopes
제공되지 않는 경우, 기본값은 OAuth에 필수인 이메일 범위(https://www.googleapis.com/auth/userinfo.email)입니다. 필요에 따라 이를 재정의하여 더 많은 OAuth 2.0 범위를 지정할 수 있습니다. @endpoints.method 데코레이터에 다른 범위를 지정하여 여기에서 특정 API 메서드에 지정된 범위를 재정의할 수도 있습니다. 그러나 여러 범위를 정의하고 지정된 범위 중 하나라도 토큰이 발급된 경우 범위 검사에 통과합니다. 여러 범위를 요청하려면 각 범위 사이에 공백을 넣어 단일 문자열을 지정하세요.
scopes=['ss0', 'ss1 and_ss2']
title
선택사항입니다. API 탐색기에 API 제목으로 표시되고 검색 및 디렉토리 서비스에 노출되는 텍스트입니다.
title='My Backend API'
version
필수 항목입니다. Cloud Endpoints 버전을 지정합니다. 이 값은 API의 경로에 나타납니다. SemVer 표준과 호환되는 버전 문자열을 지정하면 API를 배포할 때 API 경로에 주 버전 번호만 표시됩니다. 예를 들어 echo라는 이름의 2.1.0 버전인 API의 경로는 /echo/v2와 유사합니다. echo API를 버전 2.2.0으로 업데이트하고 이전 버전과 호환되는 변경사항을 배포하면 경로는 /echo/v2로 유지됩니다. 따라서 이전 버전과 호환되는 변경을 수행할 때 클라이언트의 기존 경로를 유지하면서 API 버전 번호를 업데이트할 수 있습니다. 하지만 브레이킹 체인지를 배포하는 것이기 때문에 echo API를 버전 3.0.0으로 업데이트하면 경로가 /echo/v3으로 변경됩니다.
OAuth2 인증의 경우 특정 클라이언트 ID에 OAuth2 토큰이 발급되어, 이 클라이언트 ID를 통해 API에 대한 액세스를 제한할 수 있습니다.
Google Cloud 콘솔에서 Android 애플리케이션을 등록할 때 이에 대한 클라이언트 ID를 만듭니다. 이 클라이언트 ID가 인증을 위해 Google로부터 OAuth2 토큰을 요청하는 ID입니다. 백엔드 API가 인증으로 보호되면 OAuth2 액세스 토큰이 전송되어 App Engine용 Cloud Endpoints Frameworks에서 열리고, 토큰에서 클라이언트 ID가 추출된 다음 백엔드의 선언된 허용 가능 클라이언트 ID 목록(allowed_client_ids 목록)과 비교됩니다.
allowed_client_ids 목록은 웹, Android, 기타 클라이언트 앱에 대해 Google Cloud console 을 통해 얻은 모든 클라이언트 ID로 구성됩니다. 즉, API 빌드 시 클라이언트가 알려져 있어야 합니다. 빈 목록을 지정하면 클라이언트가 절대 API에 액세스할 수 없습니다.
올바른 인증을 확인하고자 하는 각 API 메서드에서 endpoints.get_current_user()를 호출해야 합니다.
자세한 내용은 사용자 인증을 참조하세요.
allowed_client_ids 인수를 사용하며, API 탐색기를 사용하여 API에 대한 인증된 호출을 테스트하려는 경우에는 상수 endpoints.API_EXPLORER_CLIENT_ID를 지정하여 allowed_client_ids 목록으로 클라이언트 ID를 제공해야 합니다. allowed_client_ids에 endpoints.API_EXPLORER_CLIENT_ID만 포함된 경우 API를 배포하면 API를 공개적으로 검색할 수 있으며 API 탐색기에서 공개적으로 액세스할 수 있습니다.
대상 정보
allowed_client_ids 목록은 승인되지 않은 클라이언트로부터 백엔드 API를 보호합니다. 그러나 원하는 백엔드 API에만 인증 토큰이 작동하도록 클라이언트를 보호하기 위해서는 추가적인 보호 조치가 필요합니다. Android 클라이언트의 경우 이 메커니즘은 audiences 인수로, 여기에서 백엔드 API의 클라이언트 ID를 지정합니다.
콘솔 프로젝트를 만들 때 기본 클라이언트 ID가 자동으로 생성되고 프로젝트에서 사용할 수 있도록 이름이 지정됩니다. Google Cloud App Engine에 백엔드 API를 업로드하면 해당 클라이언트 ID가 사용됩니다. 이는 API 인증에 언급된 웹 클라이언트 ID입니다.
제3자 인증 토큰 발급기관
Google ID 토큰이 아닌 제3자 발급기관에서 발급한 인증 토큰을 애플리케이션에서 허용하는 경우에는 @endpoints.api에서 audiences와 issuers 인수를 제3자 발급기관에 대한 정보를 제공할 수 있도록 설정해야 합니다. 예를 들면 다음과 같습니다.
전체 API의 경우 @endpoints.api를, 메서드의 경우 @endpoints.method를 사용하여 audiences, scopes, allowed_client_ids 설정을 지정할 수 있습니다. API와 메서드 레벨 모두에 이러한 설정을 지정하는 경우 메서드 설정이 우선합니다.
API에서 메서드를 만들려면 해당 Python 메서드를 @endpoints.method로 데코레이션하여 메서드의 사용을 구성하는 인수를 제공합니다. 예를 들어 사용할 요청 및 응답 Message 클래스를 지정합니다.
사용 가능한 인수는 다음 표와 같습니다.
@endpoints.method 인수
설명
예
allowed_client_ids
이 설정은 @endpoints.api에 지정된 해당 속성을 재정의합니다. 자세한 내용은 허용되는 클라이언트 ID 및 대상을 참조하세요.
cost: 각 요청의 비용을 지정하는 정수입니다. 비용은 메서드가 동일 할당량에서 서로 다른 속도로 소비할 수 있게 해 줍니다. 예를 들어 할당량의 한도가 1,000이고 cost가 1이면 호출하는 애플리케이션이 한도를 넘기 전에 분당 1,000개의 요청을 할 수 있습니다. 동일한 할당량에 대해 cost가 2인 경우 호출하는 애플리케이션이 한도를 넘기 전에 분당 500개의 요청만 할 수 있습니다.
metric_costs={'read-requests': 1}
http_method
사용할 HTTP 메서드입니다. 이 인수를 설정하지 않으면 기본값으로 'POST'가 사용됩니다.
'GET'
name
이 메서드의 대체 이름입니다. name 값은 다음과 같아야 합니다.
반드시 소문자로 시작해야 합니다.
반드시 정규 표현식 [a-z]+[A-Za-z0-9]*와 일치해야 합니다.
'yourApi'
path
이 메서드에 액세스할 수 있는 URI 경로입니다. 이 인수를 설정하지 않으면 Python 메서드 이름이 사용됩니다. API 관리를 추가할 계획이면 경로에 후행 슬래시를 포함시키지 마세요.
'yourapi/path'
Request Message 클래스
메서드 호출에 사용할 Google 프로토콜 RPCRequest Message 클래스입니다. 또는 클래스의 이름을 제공할 수 있습니다.
YourRequestClass
Response Message 클래스
메서드 호출에 사용할 Google 프로토콜 RPCResponse Message 클래스입니다. 또는 클래스의 이름을 제공할 수 있습니다.
YourResponseClass
경로 또는 쿼리 문자열 인수에 ResourceContainer 사용
요청에 경로 또는 쿼리 문자열 인수가 포함된 경우에는 API 작성에 설명된 간단한 Message 클래스를 사용할 수 없습니다.
대신 다음과 같이 ResourceContainer 클래스를 사용해야 합니다.
요청 본문을 통해 전달되는 모든 인수가 들어 있는 Message 클래스를 정의합니다. 요청 본문에 인수가 없는 경우에는 Message 클래스를 정의할 필요 없이 그냥 message_types.VoidMessage을 사용하면 됩니다. 예를 들면 다음과 같습니다.
classGreeting(messages.Message):"""Greeting that stores a message."""message=messages.StringField(1)
ResourceContainer을, 이전 단계에서 첫 번째 매개변수로 정의한 Message 클래스로 정의합니다. 다음 매개변수에서 경로 및 쿼리 문자열 인수를 지정합니다. 예를 들면 다음과 같습니다.
여기서 첫 번째 인수는 요청 본문의 데이터에 대한 Message 클래스이고, times는 요청에 수반되는 경로 또는 쿼리 문자열에 예상되는 숫자입니다.
해당 위치에 제공되었을 요청 Message 클래스를 대체하는 첫 번째 매개변수에서, 요청을 처리하는 메서드에 ResourceContainer를 제공합니다. 다음 스니펫에서 ResourceContainer와 endpoints.method를 둘 다 확인할 수 있습니다.
# This ResourceContainer is similar to the one used for get_greeting, but# this one also contains a request body in the form of a Greeting message.MULTIPLY_RESOURCE=endpoints.ResourceContainer(Greeting,times=messages.IntegerField(2,variant=messages.Variant.INT32,required=True),)@endpoints.method(# This method accepts a request body containing a Greeting message# and a URL parameter specifying how many times to multiply the# message.MULTIPLY_RESOURCE,# This method returns a Greeting message.Greeting,path="greetings/multiply/{times}",http_method="POST",name="greetings.multiply",)defmultiply_greeting(self,request):returnGreeting(message=request.message*request.times)
표시된 것과 같이 path 매개변수를 추가하여 API를 포함시킵니다.
ResourceContainer에 필수 인수가 있으면, 클라이언트 요청의 쿼리 문자열(예: yourApi?times=2) 또는 URL 경로(예: yourApi/2)에 이 인수가 포함되어 있어야 합니다. 하지만 API가 URL 경로를 사용하여 인수 값을 수신하려면 path='yourApi/{times}의 {times} 인수에 대해 표시된 대로 API 경로에 인수 이름을 또한 추가해야 합니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eThe \u003ccode\u003e@endpoints.api\u003c/code\u003e decorator is used to define the API, allowing configuration through arguments like \u003ccode\u003ename\u003c/code\u003e, \u003ccode\u003eversion\u003c/code\u003e, \u003ccode\u003eallowed_client_ids\u003c/code\u003e, \u003ccode\u003eaudiences\u003c/code\u003e, and more, which control various aspects such as API name, access, and authentication.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003e@endpoints.method\u003c/code\u003e decorator is used to configure individual API methods, allowing for the specification of \u003ccode\u003ehttp_method\u003c/code\u003e, \u003ccode\u003epath\u003c/code\u003e, \u003ccode\u003eRequest Message\u003c/code\u003e class, \u003ccode\u003eResponse Message\u003c/code\u003e class, \u003ccode\u003eallowed_client_ids\u003c/code\u003e, and \u003ccode\u003eaudiences\u003c/code\u003e, overriding the settings in \u003ccode\u003e@endpoints.api\u003c/code\u003e if necessary.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eResourceContainer\u003c/code\u003e is utilized when an API method requires path or query string arguments, defining a structure that combines a request body \u003ccode\u003eMessage\u003c/code\u003e class with additional parameters in the URL, while having a \u003ccode\u003epath\u003c/code\u003e parameter in the method that determines how the arguments are received.\u003c/p\u003e\n"],["\u003cp\u003eQuotas can be defined for an API by using the \u003ccode\u003elimit_definitions\u003c/code\u003e argument in \u003ccode\u003e@endpoints.api\u003c/code\u003e, combined with the \u003ccode\u003emetric_costs\u003c/code\u003e argument in \u003ccode\u003e@endpoints.method\u003c/code\u003e, which allows for setting request limits and varying costs per method.\u003c/p\u003e\n"],["\u003cp\u003eFor APIs that require authentication, \u003ccode\u003eallowed_client_ids\u003c/code\u003e specifies the permitted client IDs, while \u003ccode\u003eaudiences\u003c/code\u003e are used to protect clients, primarily Android, by ensuring authentication tokens are intended for the correct backend API, and \u003ccode\u003eissuers\u003c/code\u003e are needed for authentication tokens from a third-party.\u003c/p\u003e\n"]]],[],null,["# Decorators\n\nThe Cloud Endpoints Frameworks for Python decorators describe API configuration,\nmethods, parameters, and other vital details that define the properties and\nbehavior of the Endpoint.\n\nThis page describes the available decorators in detail. For information about\nusing the decorators to create your API, see the following:\n\n- [Creating the API](/endpoints/docs/frameworks/python/create_api)\n- [Creating an API implemented with multiple classes](/endpoints/docs/frameworks/python/create-multi-class-api)\n\nDefining the API (`@endpoints.api`)\n-----------------------------------\n\nYou can supply several arguments to `@endpoints.api` to define\nyour API. The following table describes the available arguments:\n\n### `limit_definitions`\n\n|\n| **Beta**\n|\n|\n| This feature is subject to the \"Pre-GA Offerings Terms\" in the General Service Terms section\n| of the [Service Specific Terms](/terms/service-terms#1).\n|\n| Pre-GA features are available \"as is\" and might have limited support.\n|\n| For more information, see the\n| [launch stage descriptions](/products#product-launch-stages).\n\nTo define [quotas](/endpoints/docs/frameworks/quotas-overview) for your API,\nyou specify the optional `limit_definitions` argument to `@endpoints.api`. To\nconfigure a quota, you must also:\n\n- Install version 2.4.5 or later of the Endpoints Frameworks library.\n- Add the `metric_costs` argument to the [method decorator](#defining_an_api_method_endpointsmethod) for each method that you want to apply a quota to.\n\nSee [Configuring quotas](/endpoints/docs/frameworks/quotas-configure) for all\nthe steps required to set up a quota.\n\nYou specify a list of one or more `LimitDefinition` instances, similar to the\nfollowing: \n\n quota_limits = [\n endpoints.LimitDefinition(\n \"name\",\n \"Display name\",\n limit)\n ]\n\nEach `LimitDefinition` instance must have the following values:\n\n#### Example\n\n```python\nquota_limits = [\n endpoints.LimitDefinition('read-requests', 'Read Requests', 1000),\n endpoints.LimitDefinition('list-requests', 'List Requests', 100),\n endpoints.LimitDefinition('write-requests', 'Write Requests', 50)\n]\n\n@endpoints.api(name='bookstore',\n version='v1',\n limit_definitions=quota_limits)\n```\n\n### Allowed client IDs and audiences\n\nFor OAuth2 authentication, an OAuth2 token is issued to a specific client ID,\nwhich means that this client ID can be used for restricting access to your APIs.\nWhen you register Android applications in the Google Cloud console,\nyou create a client ID for it. This client ID is the one requesting an OAuth2\ntoken from Google for authentication purposes. When the backend API is protected\nby auth, an OAuth2 access token is sent and opened by Endpoints Frameworks\nfor App Engine, the client ID is extracted from the token, and then the\nID is compared to the backend's declared acceptable client ID list\n(the `allowed_client_ids` list).\n\nThe `allowed_client_ids` list should consist of all the\nclient IDs you have obtained through the [Google Cloud console](https://console.cloud.google.com/) for your web,\n[Android](/endpoints/docs/frameworks/python/consume_android),\nand other client apps. This means that the clients must be known at API\nbuild-time. If you specify an empty list, *no* clients can access the API.\n\nNote that in each API method where you want to check for proper authentication,\nyou must call `endpoints.get_current_user()`.\nSee [Authenticating users](/endpoints/docs/frameworks/python/authenticating-users)\nfor more information.\n\nIf you use the `allowed_client_ids` argument and you want to test authenticated\ncalls to your API by using the API Explorer, you must supply its client ID\nin the list of `allowed_client_ids` by specifying the constant\n`endpoints.API_EXPLORER_CLIENT_ID`. Notice that if `allowed_client_ids` contains\nonly `endpoints.API_EXPLORER_CLIENT_ID`, and you deploy your API, your API is\nstill publicly discoverable and publicly accessible in the API Explorer.\n| **Note:** If you don't use the `allowed_client_ids` argument, you don't need to supply the API Explorer client ID.\n\n#### About audiences\n\n| **Note:** The `audiences` argument is currently used *only for Android clients*.\n\nThe `allowed_client_ids` list *protects the backend API* from unauthorized\nclients. But further protection is needed to *protect the clients* , so that\ntheir authentication token works only for the intended backend API. For Android\nclients, this mechanism is the `audiences` argument, in which you specify the\nclient ID of the backend API.\n\nNote that when you create a Google Cloud console project, a default client ID is\nautomatically created and named for use by the project. When you upload your\nbackend API into App Engine, it uses that client ID. This is the web\nclient ID mentioned in API [auth](/endpoints/docs/frameworks/python/auth).\n\n#### Third-party authentication token issuer\n\nIf your application accepts authentication tokens that aren't Google ID tokens\nand are issued by third-party issuers, you need to properly set `audiences` and\n`issuers` arguments in `@endpoints.api` to provide the information about the\nthird-party issuers. For example: \n\n @endpoints.api(\n audiences={'auth0': ['aud-1.auth0.com', 'aud-2.auth0.com']},\n issuers={'auth0': endpoints.Issuer('https://test.auth0.com',\n 'https://test.auth0.com/.well-known/jwks.json')})\n class GreetingApi(remote.Service):\n\nDefining an API method (`@endpoints.method`)\n--------------------------------------------\n\nYou can set the `audiences`, `scopes`, and `allowed_client_ids` settings\nfor the entire API by using `@endpoints.api`, or for a method, by using\n`@endpoints.method`. If these settings are specified at both the API and the\nmethod level, the method setting overrides.\n\nTo create a method in your API, decorate the corresponding Python\nmethod with `@endpoints.method`, supplying arguments to configure the\nuse of the method. For example, you specify which request and response `Message`\nclasses to use.\n| **Important:** Certain query parameters are reserved and cannot be used in an API method. For a list of these, see [Standard query parameters](https://developers.google.com/drive/web/query-parameters)\n\nThe available arguments are listed in the following table:\n\nUsing `ResourceContainer` for path or query string arguments\n------------------------------------------------------------\n\nIf the request contains path or query string arguments, you cannot use a simple\n`Message` class as described in\n[Create the API](/endpoints/docs/frameworks/python/create_api#creating_the_api).\nInstead, you must use a `ResourceContainer` class, as follows:\n\n1. Define a `Message` class that has all the arguments that are passed in\n the request body. If there aren't any arguments in the request body, you don't\n need to define a `Message` class: simply use `message_types.VoidMessage`.) For\n example:\n\n class Greeting(messages.Message):\n \"\"\"Greeting that stores a message.\"\"\"\n\n message = messages.StringField(1)\n\n2. Define a `ResourceContainer` with the `Message` class that you defined in the\n previous step as the first parameter. Specify the path and query string\n arguments in the subsequent parameters. For example:\n\n MULTIPLY_RESOURCE = endpoints.ResourceContainer(\n Greeting,\n times=messages.IntegerField(2, variant=messages.Variant.INT32, required=True),\n\n where the first argument is the `Message` class for the data in the request\n body and `times` is a number expected in the path or query string accompanying\n the request.\n3. Supply the `ResourceContainer` to the method handling the request, in the\n first parameter replacing the request `Message` class that would otherwise be\n supplied in that location. This snippet shows both the `ResourceContainer` and\n the `endpoints.method`:\n\n # This ResourceContainer is similar to the one used for get_greeting, but\n # this one also contains a request body in the form of a Greeting message.\n MULTIPLY_RESOURCE = endpoints.ResourceContainer(\n Greeting,\n times=messages.IntegerField(2, variant=messages.Variant.INT32, required=True),\n )\n\n @endpoints.method(\n # This method accepts a request body containing a Greeting message\n # and a URL parameter specifying how many times to multiply the\n # message.\n MULTIPLY_RESOURCE,\n # This method returns a Greeting message.\n Greeting,\n path=\"greetings/multiply/{times}\",\n http_method=\"POST\",\n name=\"greetings.multiply\",\n )\n def multiply_greeting(self, request):\n return Greeting(message=request.message * request.times)\n\n4. Add the `path` parameter as shown, to include your API.\n\n5. If your `ResourceContainer` has a required argument, a client request must\n include it either in a query string (for example, `yourApi?times=2`), or the\n URL path (for example, `yourApi/2`). However, in order for your API to receive\n an argument value by using the URL path, you must also add the argument name to\n the API path as shown for the `{times}` argument in `path='yourApi/{times}`.\n\nWhat's next\n-----------\n\n- [Creating the API](/endpoints/docs/frameworks/python/create_api)\n- [Creating an API implemented with multiple classes](/endpoints/docs/frameworks/python/create-multi-class-api)"]]