{"id":19035737,"url":"https://github.com/freeclimbapi/python-sdk","last_synced_at":"2026-02-13T12:39:21.310Z","repository":{"id":37056404,"uuid":"243300701","full_name":"FreeClimbAPI/python-sdk","owner":"FreeClimbAPI","description":"Python SDK for the FreeClimb API","archived":false,"fork":false,"pushed_at":"2024-10-18T13:17:10.000Z","size":1630,"stargazers_count":0,"open_issues_count":2,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-10-20T04:07:07.034Z","etag":null,"topics":["library","sdk"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FreeClimbAPI.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-26T15:46:33.000Z","updated_at":"2024-09-12T19:20:19.000Z","dependencies_parsed_at":"2024-07-10T16:28:05.180Z","dependency_job_id":"971809cb-9543-4003-8860-39a12d69d867","html_url":"https://github.com/FreeClimbAPI/python-sdk","commit_stats":null,"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FreeClimbAPI%2Fpython-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FreeClimbAPI%2Fpython-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FreeClimbAPI%2Fpython-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FreeClimbAPI%2Fpython-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FreeClimbAPI","download_url":"https://codeload.github.com/FreeClimbAPI/python-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223759844,"owners_count":17197861,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["library","sdk"],"created_at":"2024-11-08T21:51:57.106Z","updated_at":"2026-02-13T12:39:21.285Z","avatar_url":"https://github.com/FreeClimbAPI.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FreeClimb\nFreeClimb is a cloud-based application programming interface (API) that puts the power of the Vail platform in your hands. FreeClimb simplifies the process of creating applications that can use a full range of telephony features without requiring specialized or on-site telephony equipment. Using the FreeClimb REST API to write applications is easy! You have the option to use the language of your choice or hit the API directly. Your application can execute a command by issuing a RESTful request to the FreeClimb API. The base URL to send HTTP requests to the FreeClimb REST API is: /apiserver. FreeClimb authenticates and processes your request.\n\nThis Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:\n\n- API version: 1.0.0\n- Package version: 5.3.0\n- Generator version: 7.9.0\n- Build package: org.openapitools.codegen.languages.PythonClientCodegen\nFor more information, please visit [https://www.freeclimb.com/support/](https://www.freeclimb.com/support/)\n\n## Requirements.\n\nPython 3.7+\n\n## Installation \u0026 Usage\n### pip install\n\nIf the python package is hosted on a repository, you can install directly using:\n\n```sh\npip install git+https://github.com/freeclimbapi/python-sdk.git\n```\n(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/freeclimbapi/python-sdk.git`)\n\nThen import the package:\n```python\nimport freeclimb\n```\n\n### Setuptools\n\nInstall via [Setuptools](http://pypi.python.org/pypi/setuptools).\n\n```sh\npython setup.py install --user\n```\n(or `sudo python setup.py install` to install the package for all users)\n\nThen import the package:\n```python\nimport freeclimb\n```\n\n### Tests\n\nExecute `pytest` to run the tests.\n\n## Getting Started\n\nPlease follow the [installation procedure](#installation--usage) and then run the following:\n\n```python\n\nimport freeclimb\nfrom freeclimb.rest import ApiException\nfrom pprint import pprint\n\n# Defining the host is optional and defaults to https://www.freeclimb.com/apiserver\n# See configuration.py for a list of all supported configuration parameters.\nconfiguration = freeclimb.Configuration(\n    host = \"https://www.freeclimb.com/apiserver\"\n)\n\n# The client must configure the authentication and authorization parameters\n# in accordance with the API server security policy.\n# Examples for each auth method are provided below, use the example that\n# satisfies your auth use case.\n\n# Configure HTTP basic authorization: fc\nconfiguration = freeclimb.Configuration(\n    username = 'ACCOUNT_ID',\n    password = 'API_KEY'\n)\n\n\n# Enter a context with an instance of the API client\nwith freeclimb.ApiClient(configuration) as api_client:\n    # Create an instance of the API class\n    api_instance = freeclimb.DefaultApi(api_client)\n    \n    buy_incoming_number_request = freeclimb.BuyIncomingNumberRequest() # BuyIncomingNumberRequest | Incoming Number transaction details\n        \n\n    try:\n        # Buy a Phone Number\n        api_response = api_instance.buy_a_phone_number(buy_incoming_number_request)\n        print(\"The response of DefaultApi-\u003ebuy_a_phone_number:\\n\")\n        pprint(api_response)\n    except ApiException as e:\n        print(\"Exception when calling DefaultApi-\u003ebuy_a_phone_number: %s\\n\" % e)\n\n```\n## Documentation for PerCL\n\nThe Performance Command Language (PerCL) defines a set of instructions, written in JSON format, that express telephony actions to be performed in response to an event on the FreeClimb platform. FreeClimb communicates with the application server when events associated with the application occur, so the webserver can instruct FreeClimb how to handle such events using PerCL scripts.\nPerCL commands are a part of the model schema and can be serialized into JSON like so:\n\n```python\nimport freeclimb\n\nsay = freeclimb.Say(text='Hello, World')\nplay = freeclimb.Play(file='Example File')\nget_digits = freeclimb.GetDigits(\n    action_url='Example Action URL', prompts=[play, say])\npercl_script = freeclimb.PerclScript(commands=[get_digits])\n\nprint(percl_script.to_json())\n```\n\n\n## Documentation for API Endpoints\n\nAll URIs are relative to *https://www.freeclimb.com/apiserver*\n\nClass | Method | HTTP request | Description\n------------ | ------------- | ------------- | -------------\n*DefaultApi* | [**buy_a_phone_number**](docs/DefaultApi.md#buy_a_phone_number) | **POST** /Accounts/{accountId}/IncomingPhoneNumbers | Buy a Phone Number\n*DefaultApi* | [**create_a_conference**](docs/DefaultApi.md#create_a_conference) | **POST** /Accounts/{accountId}/Conferences | Create a Conference\n*DefaultApi* | [**create_a_queue**](docs/DefaultApi.md#create_a_queue) | **POST** /Accounts/{accountId}/Queues | Create a Queue\n*DefaultApi* | [**create_an_application**](docs/DefaultApi.md#create_an_application) | **POST** /Accounts/{accountId}/Applications | Create an application\n*DefaultApi* | [**create_blob**](docs/DefaultApi.md#create_blob) | **POST** /Accounts/{accountId}/Blobs | Create a Blob\n*DefaultApi* | [**create_export**](docs/DefaultApi.md#create_export) | **POST** /Accounts/{accountId}/Exports | Create an Export\n*DefaultApi* | [**create_knowledge_base_completion**](docs/DefaultApi.md#create_knowledge_base_completion) | **POST** /Accounts/{accountId}/KnowledgeBases/{knowledgeBaseId}/Completion | Query the knowledge base\n*DefaultApi* | [**delete_a_recording**](docs/DefaultApi.md#delete_a_recording) | **DELETE** /Accounts/{accountId}/Recordings/{recordingId} | Delete a Recording\n*DefaultApi* | [**delete_an_application**](docs/DefaultApi.md#delete_an_application) | **DELETE** /Accounts/{accountId}/Applications/{applicationId} | Delete an application\n*DefaultApi* | [**delete_an_export**](docs/DefaultApi.md#delete_an_export) | **DELETE** /Accounts/{accountId}/Exports/{exportId} | Delete an Export\n*DefaultApi* | [**delete_an_incoming_number**](docs/DefaultApi.md#delete_an_incoming_number) | **DELETE** /Accounts/{accountId}/IncomingPhoneNumbers/{phoneNumberId} | Delete an Incoming Number\n*DefaultApi* | [**delete_blob**](docs/DefaultApi.md#delete_blob) | **DELETE** /Accounts/{accountId}/Blobs/{blobId} | Delete Blob\n*DefaultApi* | [**dequeue_a_member**](docs/DefaultApi.md#dequeue_a_member) | **POST** /Accounts/{accountId}/Queues/{queueId}/Members/{callId} | Dequeue a Member\n*DefaultApi* | [**dequeue_head_member**](docs/DefaultApi.md#dequeue_head_member) | **POST** /Accounts/{accountId}/Queues/{queueId}/Members/Front | Dequeue Head Member\n*DefaultApi* | [**download_a_recording_file**](docs/DefaultApi.md#download_a_recording_file) | **GET** /Accounts/{accountId}/Recordings/{recordingId}/Download | Download a Recording File\n*DefaultApi* | [**download_an_export**](docs/DefaultApi.md#download_an_export) | **GET** /Accounts/{accountId}/Exports/{exportId}/Download | Download an Export\n*DefaultApi* | [**filter_logs**](docs/DefaultApi.md#filter_logs) | **POST** /Accounts/{accountId}/Logs | Filter Logs\n*DefaultApi* | [**get_a_call**](docs/DefaultApi.md#get_a_call) | **GET** /Accounts/{accountId}/Calls/{callId} | Get a Call\n*DefaultApi* | [**get_a_conference**](docs/DefaultApi.md#get_a_conference) | **GET** /Accounts/{accountId}/Conferences/{conferenceId} | Get a Conference\n*DefaultApi* | [**get_a_member**](docs/DefaultApi.md#get_a_member) | **GET** /Accounts/{accountId}/Queues/{queueId}/Members/{callId} | Get a Member\n*DefaultApi* | [**get_a_participant**](docs/DefaultApi.md#get_a_participant) | **GET** /Accounts/{accountId}/Conferences/{conferenceId}/Participants/{callId} | Get a Participant\n*DefaultApi* | [**get_a_queue**](docs/DefaultApi.md#get_a_queue) | **GET** /Accounts/{accountId}/Queues/{queueId} | Get a Queue\n*DefaultApi* | [**get_a_recording**](docs/DefaultApi.md#get_a_recording) | **GET** /Accounts/{accountId}/Recordings/{recordingId} | Get a Recording\n*DefaultApi* | [**get_an_account**](docs/DefaultApi.md#get_an_account) | **GET** /Accounts/{accountId} | Get an Account\n*DefaultApi* | [**get_an_application**](docs/DefaultApi.md#get_an_application) | **GET** /Accounts/{accountId}/Applications/{applicationId} | Get an Application\n*DefaultApi* | [**get_an_export**](docs/DefaultApi.md#get_an_export) | **GET** /Accounts/{accountId}/Exports/{exportId} | Get an Export\n*DefaultApi* | [**get_an_incoming_number**](docs/DefaultApi.md#get_an_incoming_number) | **GET** /Accounts/{accountId}/IncomingPhoneNumbers/{phoneNumberId} | Get an Incoming Number\n*DefaultApi* | [**get_an_sms_message**](docs/DefaultApi.md#get_an_sms_message) | **GET** /Accounts/{accountId}/Messages/{messageId} | Get an SMS Message\n*DefaultApi* | [**get_blob**](docs/DefaultApi.md#get_blob) | **GET** /Accounts/{accountId}/Blobs/{blobId} | Get Blob\n*DefaultApi* | [**get_head_member**](docs/DefaultApi.md#get_head_member) | **GET** /Accounts/{accountId}/Queues/{queueId}/Members/Front | Get Head Member\n*DefaultApi* | [**get_ten_dlc_sms_brand**](docs/DefaultApi.md#get_ten_dlc_sms_brand) | **GET** /Accounts/{accountId}/Messages/10DLC/Brands/{brandId} | Get a 10DLC SMS Brand\n*DefaultApi* | [**get_ten_dlc_sms_brands**](docs/DefaultApi.md#get_ten_dlc_sms_brands) | **GET** /Accounts/{accountId}/Messages/10DLC/Brands | Get list of SMS 10DLC Brands\n*DefaultApi* | [**get_ten_dlc_sms_campaign**](docs/DefaultApi.md#get_ten_dlc_sms_campaign) | **GET** /Accounts/{accountId}/Messages/10DLC/Campaigns/{campaignId} | Get a 10DLC SMS Campaign\n*DefaultApi* | [**get_ten_dlc_sms_campaigns**](docs/DefaultApi.md#get_ten_dlc_sms_campaigns) | **GET** /Accounts/{accountId}/Messages/10DLC/Campaigns | Get list of SMS 10DLC Campaigns\n*DefaultApi* | [**get_ten_dlc_sms_partner_campaign**](docs/DefaultApi.md#get_ten_dlc_sms_partner_campaign) | **GET** /Accounts/{accountId}/Messages/10DLC/PartnerCampaigns/{campaignId} | Get a 10DLC SMS Partner Campaign\n*DefaultApi* | [**get_ten_dlc_sms_partner_campaigns**](docs/DefaultApi.md#get_ten_dlc_sms_partner_campaigns) | **GET** /Accounts/{accountId}/Messages/10DLC/PartnerCampaigns | Get list of SMS 10DLC Partner Campaigns\n*DefaultApi* | [**get_toll_free_sms_campaign**](docs/DefaultApi.md#get_toll_free_sms_campaign) | **GET** /Accounts/{accountId}/Messages/TollFree/Campaigns/{campaignId} | Get a TollFree SMS Campaign\n*DefaultApi* | [**get_toll_free_sms_campaigns**](docs/DefaultApi.md#get_toll_free_sms_campaigns) | **GET** /Accounts/{accountId}/Messages/TollFree/Campaigns | Get list of TollFree Campaigns\n*DefaultApi* | [**list_active_queues**](docs/DefaultApi.md#list_active_queues) | **GET** /Accounts/{accountId}/Queues | List Active Queues\n*DefaultApi* | [**list_all_account_logs**](docs/DefaultApi.md#list_all_account_logs) | **GET** /Accounts/{accountId}/Logs | List All Account Logs\n*DefaultApi* | [**list_applications**](docs/DefaultApi.md#list_applications) | **GET** /Accounts/{accountId}/Applications | List applications\n*DefaultApi* | [**list_available_numbers**](docs/DefaultApi.md#list_available_numbers) | **GET** /AvailablePhoneNumbers | List available numbers\n*DefaultApi* | [**list_blobs**](docs/DefaultApi.md#list_blobs) | **GET** /Accounts/{accountId}/Blobs | List Blobs belonging to an account.\n*DefaultApi* | [**list_call_logs**](docs/DefaultApi.md#list_call_logs) | **GET** /Accounts/{accountId}/Calls/{callId}/Logs | List Call Logs\n*DefaultApi* | [**list_call_recordings**](docs/DefaultApi.md#list_call_recordings) | **GET** /Accounts/{accountId}/Calls/{callId}/Recordings | List Call Recordings\n*DefaultApi* | [**list_calls**](docs/DefaultApi.md#list_calls) | **GET** /Accounts/{accountId}/Calls | List Calls\n*DefaultApi* | [**list_conference_recordings**](docs/DefaultApi.md#list_conference_recordings) | **GET** /Accounts/{accountId}/Conferences/{conferenceId}/Recordings | List Conference Recordings\n*DefaultApi* | [**list_conferences**](docs/DefaultApi.md#list_conferences) | **GET** /Accounts/{accountId}/Conferences | List Conferences\n*DefaultApi* | [**list_exports**](docs/DefaultApi.md#list_exports) | **GET** /Accounts/{accountId}/Exports | List Exports\n*DefaultApi* | [**list_incoming_numbers**](docs/DefaultApi.md#list_incoming_numbers) | **GET** /Accounts/{accountId}/IncomingPhoneNumbers | List Incoming Numbers\n*DefaultApi* | [**list_members**](docs/DefaultApi.md#list_members) | **GET** /Accounts/{accountId}/Queues/{queueId}/Members | List Members\n*DefaultApi* | [**list_participants**](docs/DefaultApi.md#list_participants) | **GET** /Accounts/{accountId}/Conferences/{conferenceId}/Participants | List Participants\n*DefaultApi* | [**list_recordings**](docs/DefaultApi.md#list_recordings) | **GET** /Accounts/{accountId}/Recordings | List Recordings\n*DefaultApi* | [**list_sms_messages**](docs/DefaultApi.md#list_sms_messages) | **GET** /Accounts/{accountId}/Messages | List SMS Messages\n*DefaultApi* | [**make_a_call**](docs/DefaultApi.md#make_a_call) | **POST** /Accounts/{accountId}/Calls | Make a Call\n*DefaultApi* | [**make_a_webrtc_jwt**](docs/DefaultApi.md#make_a_webrtc_jwt) | **POST** /Accounts/{accountId}/Calls/WebRTC/Token | Make a JWT for WebRTC calling\n*DefaultApi* | [**modify_blob**](docs/DefaultApi.md#modify_blob) | **PATCH** /Accounts/{accountId}/Blobs/{blobId} | Modify Blob\n*DefaultApi* | [**remove_a_participant**](docs/DefaultApi.md#remove_a_participant) | **DELETE** /Accounts/{accountId}/Conferences/{conferenceId}/Participants/{callId} | Remove a Participant\n*DefaultApi* | [**replace_blob**](docs/DefaultApi.md#replace_blob) | **PUT** /Accounts/{accountId}/Blobs/{blobId} | Replace Blob\n*DefaultApi* | [**send_an_sms_message**](docs/DefaultApi.md#send_an_sms_message) | **POST** /Accounts/{accountId}/Messages | Send an SMS Message\n*DefaultApi* | [**stream_a_recording_file**](docs/DefaultApi.md#stream_a_recording_file) | **GET** /Accounts/{accountId}/Recordings/{recordingId}/Stream | Stream a Recording File\n*DefaultApi* | [**update_a_conference**](docs/DefaultApi.md#update_a_conference) | **POST** /Accounts/{accountId}/Conferences/{conferenceId} | Update a Conference\n*DefaultApi* | [**update_a_live_call**](docs/DefaultApi.md#update_a_live_call) | **POST** /Accounts/{accountId}/Calls/{callId} | Update a Live Call\n*DefaultApi* | [**update_a_participant**](docs/DefaultApi.md#update_a_participant) | **POST** /Accounts/{accountId}/Conferences/{conferenceId}/Participants/{callId} | Update a Participant\n*DefaultApi* | [**update_a_queue**](docs/DefaultApi.md#update_a_queue) | **POST** /Accounts/{accountId}/Queues/{queueId} | Update a Queue\n*DefaultApi* | [**update_an_account**](docs/DefaultApi.md#update_an_account) | **POST** /Accounts/{accountId} | Manage an account\n*DefaultApi* | [**update_an_application**](docs/DefaultApi.md#update_an_application) | **POST** /Accounts/{accountId}/Applications/{applicationId} | Update an application\n*DefaultApi* | [**update_an_incoming_number**](docs/DefaultApi.md#update_an_incoming_number) | **POST** /Accounts/{accountId}/IncomingPhoneNumbers/{phoneNumberId} | Update an Incoming Number\n\n*DefaultApi* | [get_next_page](docs/DefaultApi.md#get_next_page) | **GET** | Get Next Page of Paginated List Resource\n\n## Documentation For Models\n\n - [AccountRequest](docs/AccountRequest.md)\n - [AccountResult](docs/AccountResult.md)\n - [AccountStatus](docs/AccountStatus.md)\n - [AccountType](docs/AccountType.md)\n - [AddToConference](docs/AddToConference.md)\n - [AddToConferenceNotificationWebhook](docs/AddToConferenceNotificationWebhook.md)\n - [AddToQueueNotificationWebhook](docs/AddToQueueNotificationWebhook.md)\n - [AnsweredBy](docs/AnsweredBy.md)\n - [ApplicationList](docs/ApplicationList.md)\n - [ApplicationRequest](docs/ApplicationRequest.md)\n - [ApplicationResult](docs/ApplicationResult.md)\n - [AvailableNumber](docs/AvailableNumber.md)\n - [AvailableNumberList](docs/AvailableNumberList.md)\n - [BargeInReason](docs/BargeInReason.md)\n - [BlobListResponse](docs/BlobListResponse.md)\n - [BlobResult](docs/BlobResult.md)\n - [BuyIncomingNumberRequest](docs/BuyIncomingNumberRequest.md)\n - [CallControlWebhook](docs/CallControlWebhook.md)\n - [CallDirection](docs/CallDirection.md)\n - [CallEndedReason](docs/CallEndedReason.md)\n - [CallList](docs/CallList.md)\n - [CallResult](docs/CallResult.md)\n - [CallStatus](docs/CallStatus.md)\n - [CallStatusWebhook](docs/CallStatusWebhook.md)\n - [Capabilities](docs/Capabilities.md)\n - [CompletionRequest](docs/CompletionRequest.md)\n - [CompletionResult](docs/CompletionResult.md)\n - [CompletionResultStatus](docs/CompletionResultStatus.md)\n - [ConferenceList](docs/ConferenceList.md)\n - [ConferenceParticipantList](docs/ConferenceParticipantList.md)\n - [ConferenceParticipantResult](docs/ConferenceParticipantResult.md)\n - [ConferenceRecordingStatusWebhook](docs/ConferenceRecordingStatusWebhook.md)\n - [ConferenceResult](docs/ConferenceResult.md)\n - [ConferenceStatus](docs/ConferenceStatus.md)\n - [ConferenceStatusWebhook](docs/ConferenceStatusWebhook.md)\n - [CreateBlobRequest](docs/CreateBlobRequest.md)\n - [CreateConference](docs/CreateConference.md)\n - [CreateConferenceRequest](docs/CreateConferenceRequest.md)\n - [CreateConferenceWebhook](docs/CreateConferenceWebhook.md)\n - [CreateWebRTCToken](docs/CreateWebRTCToken.md)\n - [Dequeue](docs/Dequeue.md)\n - [DequeueWebhook](docs/DequeueWebhook.md)\n - [Enqueue](docs/Enqueue.md)\n - [ExportList](docs/ExportList.md)\n - [ExportOutputType](docs/ExportOutputType.md)\n - [ExportRequest](docs/ExportRequest.md)\n - [ExportRequestOutput](docs/ExportRequestOutput.md)\n - [ExportResourceType](docs/ExportResourceType.md)\n - [ExportResult](docs/ExportResult.md)\n - [ExportResultOutput](docs/ExportResultOutput.md)\n - [ExportStatus](docs/ExportStatus.md)\n - [FilterLogsRequest](docs/FilterLogsRequest.md)\n - [GetDigits](docs/GetDigits.md)\n - [GetDigitsReason](docs/GetDigitsReason.md)\n - [GetDigitsWebhook](docs/GetDigitsWebhook.md)\n - [GetSpeech](docs/GetSpeech.md)\n - [GetSpeechReason](docs/GetSpeechReason.md)\n - [GetSpeechWebhook](docs/GetSpeechWebhook.md)\n - [GrammarFileBuiltIn](docs/GrammarFileBuiltIn.md)\n - [GrammarType](docs/GrammarType.md)\n - [Hangup](docs/Hangup.md)\n - [IfMachine](docs/IfMachine.md)\n - [InboundCallWebhook](docs/InboundCallWebhook.md)\n - [IncomingNumberList](docs/IncomingNumberList.md)\n - [IncomingNumberRequest](docs/IncomingNumberRequest.md)\n - [IncomingNumberResult](docs/IncomingNumberResult.md)\n - [Language](docs/Language.md)\n - [LeaveConferenceWebhook](docs/LeaveConferenceWebhook.md)\n - [LogLevel](docs/LogLevel.md)\n - [LogList](docs/LogList.md)\n - [LogResult](docs/LogResult.md)\n - [MachineDetectedWebhook](docs/MachineDetectedWebhook.md)\n - [MachineType](docs/MachineType.md)\n - [MakeCallRequest](docs/MakeCallRequest.md)\n - [MessageDeliveryWebhook](docs/MessageDeliveryWebhook.md)\n - [MessageDirection](docs/MessageDirection.md)\n - [MessageRequest](docs/MessageRequest.md)\n - [MessageResult](docs/MessageResult.md)\n - [MessageStatus](docs/MessageStatus.md)\n - [MessageStatusWebhook](docs/MessageStatusWebhook.md)\n - [MessagesList](docs/MessagesList.md)\n - [ModifyBlobRequest](docs/ModifyBlobRequest.md)\n - [MutableResourceModel](docs/MutableResourceModel.md)\n - [OutDial](docs/OutDial.md)\n - [OutDialApiConnectWebhook](docs/OutDialApiConnectWebhook.md)\n - [OutDialConnectWebhook](docs/OutDialConnectWebhook.md)\n - [OutDialStartWebhook](docs/OutDialStartWebhook.md)\n - [PaginationModel](docs/PaginationModel.md)\n - [Park](docs/Park.md)\n - [Pause](docs/Pause.md)\n - [PerclCommand](docs/PerclCommand.md)\n - [PerclScript](docs/PerclScript.md)\n - [PlatformError](docs/PlatformError.md)\n - [Play](docs/Play.md)\n - [PlayBeep](docs/PlayBeep.md)\n - [PlayEarlyMedia](docs/PlayEarlyMedia.md)\n - [QueueList](docs/QueueList.md)\n - [QueueMember](docs/QueueMember.md)\n - [QueueMemberList](docs/QueueMemberList.md)\n - [QueueRequest](docs/QueueRequest.md)\n - [QueueResult](docs/QueueResult.md)\n - [QueueResultStatus](docs/QueueResultStatus.md)\n - [QueueWaitWebhook](docs/QueueWaitWebhook.md)\n - [RecordUtterance](docs/RecordUtterance.md)\n - [RecordUtteranceTermReason](docs/RecordUtteranceTermReason.md)\n - [RecordWebhook](docs/RecordWebhook.md)\n - [RecordingList](docs/RecordingList.md)\n - [RecordingResult](docs/RecordingResult.md)\n - [Redirect](docs/Redirect.md)\n - [RedirectWebhook](docs/RedirectWebhook.md)\n - [Reject](docs/Reject.md)\n - [RemoveFromConference](docs/RemoveFromConference.md)\n - [RemoveFromQueueNotificationWebhook](docs/RemoveFromQueueNotificationWebhook.md)\n - [ReplaceBlobRequest](docs/ReplaceBlobRequest.md)\n - [RequestType](docs/RequestType.md)\n - [SMSTenDLCBrand](docs/SMSTenDLCBrand.md)\n - [SMSTenDLCBrandAltBusinessIdType](docs/SMSTenDLCBrandAltBusinessIdType.md)\n - [SMSTenDLCBrandEntityType](docs/SMSTenDLCBrandEntityType.md)\n - [SMSTenDLCBrandIdentityStatus](docs/SMSTenDLCBrandIdentityStatus.md)\n - [SMSTenDLCBrandRelationship](docs/SMSTenDLCBrandRelationship.md)\n - [SMSTenDLCBrandStockExchange](docs/SMSTenDLCBrandStockExchange.md)\n - [SMSTenDLCBrandsListResult](docs/SMSTenDLCBrandsListResult.md)\n - [SMSTenDLCCampaign](docs/SMSTenDLCCampaign.md)\n - [SMSTenDLCCampaignStatus](docs/SMSTenDLCCampaignStatus.md)\n - [SMSTenDLCCampaignsListResult](docs/SMSTenDLCCampaignsListResult.md)\n - [SMSTenDLCPartnerCampaign](docs/SMSTenDLCPartnerCampaign.md)\n - [SMSTenDLCPartnerCampaignBrand](docs/SMSTenDLCPartnerCampaignBrand.md)\n - [SMSTenDLCPartnerCampaignStatus](docs/SMSTenDLCPartnerCampaignStatus.md)\n - [SMSTenDLCPartnerCampaignsListResult](docs/SMSTenDLCPartnerCampaignsListResult.md)\n - [SMSTollFreeCampaign](docs/SMSTollFreeCampaign.md)\n - [SMSTollFreeCampaignRegistrationStatus](docs/SMSTollFreeCampaignRegistrationStatus.md)\n - [SMSTollFreeCampaignsListResult](docs/SMSTollFreeCampaignsListResult.md)\n - [Say](docs/Say.md)\n - [SendDigits](docs/SendDigits.md)\n - [SetDTMFPassThrough](docs/SetDTMFPassThrough.md)\n - [SetListen](docs/SetListen.md)\n - [SetTalk](docs/SetTalk.md)\n - [Sms](docs/Sms.md)\n - [StartRecordCall](docs/StartRecordCall.md)\n - [TFN](docs/TFN.md)\n - [TFNCampaign](docs/TFNCampaign.md)\n - [TTSEngine](docs/TTSEngine.md)\n - [TTSEngineName](docs/TTSEngineName.md)\n - [TerminateConference](docs/TerminateConference.md)\n - [TranscribeReason](docs/TranscribeReason.md)\n - [TranscribeTermReason](docs/TranscribeTermReason.md)\n - [TranscribeUtterance](docs/TranscribeUtterance.md)\n - [TranscribeUtteranceRecord](docs/TranscribeUtteranceRecord.md)\n - [TranscribeWebhook](docs/TranscribeWebhook.md)\n - [Unpark](docs/Unpark.md)\n - [UpdateCallRequest](docs/UpdateCallRequest.md)\n - [UpdateCallRequestStatus](docs/UpdateCallRequestStatus.md)\n - [UpdateConferenceParticipantRequest](docs/UpdateConferenceParticipantRequest.md)\n - [UpdateConferenceRequest](docs/UpdateConferenceRequest.md)\n - [UpdateConferenceRequestStatus](docs/UpdateConferenceRequestStatus.md)\n - [Webhook](docs/Webhook.md)\n\n\n\u003ca id=\"documentation-for-authorization\"\u003e\u003c/a\u003e\n## Documentation For Authorization\n\n\nAuthentication schemes defined for the API:\n\u003ca id=\"fc\"\u003e\u003c/a\u003e\n### fc\n\n- **Type**: HTTP basic authentication\n\n\n\u003ca name=\"documentation-for-verify-request-signature\"\u003e\u003c/a\u003e\n\n## Documentation for verifying request signature\n\n- To verify the request signature, we will need to use the verify_request_signature method within the Request Verifier class\n\n  RequestVerifier.verify_request_signature(requestBody, requestHeader, signingSecret, tolerance)\n\n  This is a method that you can call directly from the request verifier class, it will throw exceptions depending on whether all parts of the request signature is valid otherwise it will throw a specific error message depending on which request signature part is causing issues\n\n  This method requires a requestBody of type string, a requestHeader of type string, a signingSecret of type string, and a tolerance value of type int\n\n  Example code down below\n\n  ```python\n  from freeclimb.utils.request_verifier import RequestVerifier\n\n  class RequestVerifierExample():\n        def verify_request_signature_example():\n            request_body = \"{\\\"accountId\\\":\\\"AC1334ffb694cd8d969f51cddf5f7c9b478546d50c\\\",\\\"callId\\\":\\\"CAccb0b00506553cda09b51c5477f672a49e0b2213\\\",\\\"callStatus\\\":\\\"ringing\\\",\\\"conferenceId\\\":null,\\\"direction\\\":\\\"inbound\\\",\\\"from\\\":\\\"+13121000109\\\",\\\"parentCallId\\\":null,\\\"queueId\\\":null,\\\"requestType\\\":\\\"inboundCall\\\",\\\"to\\\":\\\"+13121000096\\\"}\"\n            signing_secret = \"sigsec_ead6d3b6904196c60835d039e91b3341c77a7793\"\n            tolerance = 5 * 60\n            request_header = \"t=1679944186,v1=c3957749baf61df4b1506802579cc69a74c77a1ae21447b930e5a704f9ec4120,v1=1ba18712726898fbbe48cd862dd096a709f7ad761a5bab14bda9ac24d963a6a8\"\n            RequestVerifier.verify_request_signature(request_body, request_header, signing_secret, tolerance)\n  ```\n\n\n\n## Author\n\nsupport@freeclimb.com\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreeclimbapi%2Fpython-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreeclimbapi%2Fpython-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreeclimbapi%2Fpython-sdk/lists"}