diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 3649d297..1dd39914 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: fca0ac3a-5f4e-452c-bbc7-2311afa8da40 management: - docChecksum: 3760508ebc1a487df8efe2186815cf51 - docVersion: 10.24.47 + docChecksum: 2f5085044fbc03727d23c818c446a980 + docVersion: 10.25.3 speakeasyVersion: 1.656.1 generationVersion: 2.753.1 - releaseVersion: 0.31.30 - configChecksum: 76f5dfe49cbd1054d637271afd4e0b8f + releaseVersion: 0.32.0 + configChecksum: cd07201cf799bcc40cfc0480e97233d9 repoURL: https://github.com/apideck-libraries/sdk-python.git installationURL: https://github.com/apideck-libraries/sdk-python.git published: true @@ -677,6 +677,8 @@ generatedFiles: - docs/models/connectionhealth.md - docs/models/connectionimportdata.md - docs/models/connectioninput.md + - docs/models/connectionmetadata.md + - docs/models/connectionmetadatainput.md - docs/models/connectionstate.md - docs/models/connectionstatus.md - docs/models/connectionvalue.md @@ -897,6 +899,12 @@ generatedFiles: - docs/models/crmleadsupdateglobals.md - docs/models/crmleadsupdaterequest.md - docs/models/crmleadsupdateresponse.md + - docs/models/crmlistsallglobals.md + - docs/models/crmlistsallrequest.md + - docs/models/crmlistsallresponse.md + - docs/models/crmlistsoneglobals.md + - docs/models/crmlistsonerequest.md + - docs/models/crmlistsoneresponse.md - docs/models/crmnotesaddglobals.md - docs/models/crmnotesaddrequest.md - docs/models/crmnotesaddresponse.md @@ -1384,6 +1392,8 @@ generatedFiles: - docs/models/getleadsresponse.md - docs/models/getledgeraccountresponse.md - docs/models/getledgeraccountsresponse.md + - docs/models/getlistresponse.md + - docs/models/getlistsresponse.md - docs/models/getlogsresponse.md - docs/models/getmessageresponse.md - docs/models/getmessagesresponse.md @@ -1648,6 +1658,9 @@ generatedFiles: - docs/models/linkedtrackingcategory.md - docs/models/linkedworktag.md - docs/models/links.md + - docs/models/listt.md + - docs/models/listtype.md + - docs/models/listvisibility.md - docs/models/locationstatus.md - docs/models/log.md - docs/models/logsfilter.md @@ -1658,6 +1671,7 @@ generatedFiles: - docs/models/messagestatus.md - docs/models/messagetype.md - docs/models/meta.md + - docs/models/metadata.md - docs/models/mode.md - docs/models/note.md - docs/models/noteinput.md @@ -2136,6 +2150,7 @@ generatedFiles: - docs/sdks/journalentries/README.md - docs/sdks/leads/README.md - docs/sdks/ledgeraccounts/README.md + - docs/sdks/lists/README.md - docs/sdks/locations/README.md - docs/sdks/logs/README.md - docs/sdks/messages/README.md @@ -2250,6 +2265,7 @@ generatedFiles: - src/apideck_unify/journalentries.py - src/apideck_unify/leads.py - src/apideck_unify/ledgeraccounts.py + - src/apideck_unify/lists.py - src/apideck_unify/locations.py - src/apideck_unify/logs.py - src/apideck_unify/messages.py @@ -2609,6 +2625,8 @@ generatedFiles: - src/apideck_unify/models/crm_leadsdeleteop.py - src/apideck_unify/models/crm_leadsoneop.py - src/apideck_unify/models/crm_leadsupdateop.py + - src/apideck_unify/models/crm_listsallop.py + - src/apideck_unify/models/crm_listsoneop.py - src/apideck_unify/models/crm_notesaddop.py - src/apideck_unify/models/crm_notesallop.py - src/apideck_unify/models/crm_notesdeleteop.py @@ -2896,6 +2914,8 @@ generatedFiles: - src/apideck_unify/models/getleadsresponse.py - src/apideck_unify/models/getledgeraccountresponse.py - src/apideck_unify/models/getledgeraccountsresponse.py + - src/apideck_unify/models/getlistresponse.py + - src/apideck_unify/models/getlistsresponse.py - src/apideck_unify/models/getlogsresponse.py - src/apideck_unify/models/getmessageresponse.py - src/apideck_unify/models/getmessagesresponse.py @@ -3040,6 +3060,7 @@ generatedFiles: - src/apideck_unify/models/linkedtrackingcategory.py - src/apideck_unify/models/linkedworktag.py - src/apideck_unify/models/links.py + - src/apideck_unify/models/list.py - src/apideck_unify/models/log.py - src/apideck_unify/models/logsfilter.py - src/apideck_unify/models/message.py @@ -6464,6 +6485,7 @@ examples: raw: false limit: 20 fields: "id,updated_at" + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -6732,6 +6754,7 @@ examples: limit: 20 fields: "id,updated_at" filter: {"subsidiary": "1"} + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -7000,6 +7023,7 @@ examples: limit: 20 fields: "id,updated_at" filter: {"subsidiary": "1"} + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -7270,6 +7294,7 @@ examples: raw: false limit: 20 fields: "id,updated_at" + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -8114,6 +8139,7 @@ examples: raw: false limit: 20 filter: {"updated_since": "2020-09-30T07:43:32.000Z", "status": "draft", "type": "expense"} + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -17814,7 +17840,7 @@ examples: parameters: query: limit: 20 - filter: {"exclude_apis": "vault,proxy", "consumer_id": "test_user_id", "entity_type": "Connection", "event_type": "vault.connection.callable"} + filter: {"exclude_apis": "vault,proxy", "consumer_id": "test_user_id", "entity_type": "Connection", "event_type": "vault.connection.callable", "start_date": "2024-01-01T00:00:00.000Z", "end_date": "2024-01-31T23:59:59.999Z", "status_code": 201, "status_codes": [200, 201, 204]} header: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" responses: @@ -18374,6 +18400,7 @@ examples: limit: 20 fields: "id,updated_at" filter: {"type": "expense"} + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -18430,6 +18457,7 @@ examples: raw: false limit: 20 filter: {"updated_since": "2020-09-30T07:43:32.000Z", "created_since": "2020-09-30T07:43:32.000Z", "number": "OIT00546"} + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -19053,6 +19081,7 @@ examples: limit: 20 fields: "id,updated_at" filter: {"updated_since": "2020-09-30T07:43:32.000Z", "status": "active"} + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -19187,6 +19216,7 @@ examples: limit: 20 fields: "id,updated_at" filter: {"updated_since": "2020-09-30T07:43:32.000Z", "status": "active"} + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -19321,6 +19351,7 @@ examples: limit: 20 fields: "id,updated_at" filter: {"updated_since": "2020-09-30T07:43:32.000Z", "status": "submitted"} + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -19590,6 +19621,7 @@ examples: raw: false limit: 20 fields: "id,updated_at" + pass_through: {"search": "San Francisco"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -19748,8 +19780,63 @@ examples: application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} default: application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + crm.listsAll: + speakeasy-default-crm-lists-all: + parameters: + query: + raw: false + limit: 20 + pass_through: {"search": "San Francisco"} + fields: "id,updated_at" + header: + x-apideck-consumer-id: "test-consumer" + x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" + x-apideck-service-id: "salesforce" + responses: + "200": + application/json: {"status_code": 200, "status": "OK", "service": "hubspot", "resource": "lists", "operation": "all", "data": [{"id": "12345", "name": "Newsletter Subscribers", "description": "Contacts who opted in to the monthly newsletter.", "type": "dynamic", "visibility": "shared", "owner_id": "12345", "filter_criteria": {"type": "and", "queries": [{"type": "object_type", "object_type": "contact"}]}, "record_count": 42, "folder_id": "12345", "object_type": "contacts", "is_dynamic": true, "is_favorite": false, "is_default": false, "is_system": false, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "tags": ["New"], "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z"}], "meta": {"items_on_page": 50, "cursors": {"previous": "em9oby1jcm06OnBhZ2U6OjE=", "current": "em9oby1jcm06OnBhZ2U6OjI=", "next": "em9oby1jcm06OnBhZ2U6OjM="}, "total_count": 1, "warnings": [{"type": "downstream_request_failed", "status_code": 429, "operation": "getManager"}]}, "links": {"previous": "https://unify.apideck.com/crm/companies?cursor=em9oby1jcm06OnBhZ2U6OjE%3D", "current": "https://unify.apideck.com/crm/companies", "next": "https://unify.apideck.com/crm/companies?cursor=em9oby1jcm06OnBhZ2U6OjM"}} + "400": + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} + "401": + application/json: {"status_code": 401, "error": "Unauthorized", "type_name": "UnauthorizedError", "message": "Unauthorized Request", "detail": "Missing authentication", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + "402": + application/json: {"status_code": 402, "error": "Payment Required", "type_name": "RequestLimitError", "message": "Request Limit Reached", "detail": "You have reached your limit of 2000", "ref": "https://developers.apideck.com/errors#requestlimiterror"} + "404": + application/json: {"status_code": 404, "error": "Not Found", "type_name": "EntityNotFoundError", "message": "Unknown Widget", "detail": "Could not find widget with id: '123'", "ref": "https://developers.apideck.com/errors#entitynotfounderror"} + "422": + application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} + default: + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + crm.listsOne: + speakeasy-default-crm-lists-one: + parameters: + path: + id: "" + query: + raw: false + fields: "id,updated_at" + header: + x-apideck-consumer-id: "test-consumer" + x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" + x-apideck-service-id: "salesforce" + responses: + "200": + application/json: {"status_code": 200, "status": "OK", "service": "hubspot", "resource": "lists", "operation": "one", "data": {"id": "12345", "name": "Newsletter Subscribers", "description": "Contacts who opted in to the monthly newsletter.", "type": "dynamic", "visibility": "shared", "owner_id": "12345", "filter_criteria": {"type": "and", "queries": [{"type": "object_type", "object_type": "contact"}]}, "record_count": 42, "folder_id": "12345", "object_type": "contacts", "is_dynamic": true, "is_favorite": false, "is_default": false, "is_system": false, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "tags": ["New"], "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z"}, "meta": {"items_on_page": 50, "cursors": {"previous": "em9oby1jcm06OnBhZ2U6OjE=", "current": "em9oby1jcm06OnBhZ2U6OjI=", "next": "em9oby1jcm06OnBhZ2U6OjM="}, "total_count": 1, "warnings": [{"type": "downstream_request_failed", "status_code": 429, "operation": "getManager"}]}} + "400": + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} + "401": + application/json: {"status_code": 401, "error": "Unauthorized", "type_name": "UnauthorizedError", "message": "Unauthorized Request", "detail": "Missing authentication", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + "402": + application/json: {"status_code": 402, "error": "Payment Required", "type_name": "RequestLimitError", "message": "Request Limit Reached", "detail": "You have reached your limit of 2000", "ref": "https://developers.apideck.com/errors#requestlimiterror"} + "404": + application/json: {"status_code": 404, "error": "Not Found", "type_name": "EntityNotFoundError", "message": "Unknown Widget", "detail": "Could not find widget with id: '123'", "ref": "https://developers.apideck.com/errors#entitynotfounderror"} + "422": + application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} + default: + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} examplesVersion: 1.0.2 generatedTests: {} +releaseNotes: "## Python SDK Changes Detected:\n* `apideck.vault.consumers.create()`: `response.data.connections.[].metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.connection_settings.update()`: \n * `request.metadata` **Changed** **Breaking** :warning:\n * `response.data.metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.connection_settings.list()`: `response.data.metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.connections.token()`: `response.data.metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.connections.imports()`: `response.data.metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.connections.update()`: \n * `request.metadata` **Changed** **Breaking** :warning:\n * `response.data.metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.connections.get()`: `response.data.metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.connections.list()`: `response.data.[].metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.consumers.update()`: `response.data.connections.[].metadata` **Changed** **Breaking** :warning:\n* `apideck.vault.consumers.get()`: `response.data.connections.[].metadata` **Changed** **Breaking** :warning:\n* `apideck.accounting.attachments.list()`: `request.pass_through` **Added**\n* `apideck.crm.lists.list()`: **Added**\n* `apideck.accounting.expense_reports.list()`: `request.pass_through` **Added**\n* `apideck.accounting.employees.list()`: `request.pass_through` **Added**\n* `apideck.accounting.quotes.list()`: `request.pass_through` **Added**\n* `apideck.accounting.categories.list()`: `request.pass_through` **Added**\n* `apideck.accounting.expenses.list()`: `request.pass_through` **Added**\n* `apideck.accounting.expense_categories.list()`: `request.pass_through` **Added**\n* `apideck.accounting.departments.list()`: `request.pass_through` **Added**\n* `apideck.accounting.locations.list()`: `request.pass_through` **Added**\n* `apideck.accounting.subsidiaries.list()`: `request.pass_through` **Added**\n* `apideck.accounting.companies.list()`: `request.pass_through` **Added**\n* `apideck.crm.lists.get()`: **Added**\n* `apideck.webhook.event_logs.list()`: `request.filter` **Changed**\n" trackedFiles: .devcontainer/README.md: last_write_checksum: sha1:07adb0c0c051a9be4d479ea06461f3a9b3bbeb2f @@ -19778,7 +19865,7 @@ trackedFiles: docs/models/accountingattachmentsallglobals.md: last_write_checksum: sha1:f0679380b22af912ad11a95200e6c3891d7c42fa docs/models/accountingattachmentsallrequest.md: - last_write_checksum: sha1:c1ce6d561970ce34db82a4e7be76fee2d8f2c0fc + last_write_checksum: sha1:2f003a74510284a4ca6259dbd2f55e7201a2bc3c docs/models/accountingattachmentsallresponse.md: last_write_checksum: sha1:23303369ee524b9b04dceb712f41e97c5940bb46 docs/models/accountingattachmentsdeleteglobals.md: @@ -19972,7 +20059,7 @@ trackedFiles: docs/models/accountingcategoriesallglobals.md: last_write_checksum: sha1:290f1c7b95250e17494bf80b6360ae153a8d349a docs/models/accountingcategoriesallrequest.md: - last_write_checksum: sha1:cf753ba0b181ba2412ce1beb57e644f1d0ab19e1 + last_write_checksum: sha1:e6f760f7e20619910e740f060f5394b9e7432269 docs/models/accountingcategoriesallresponse.md: last_write_checksum: sha1:3c9265eede3aa5a13f61fe6933d3a79014b7373b docs/models/accountingcategoriesoneglobals.md: @@ -19984,7 +20071,7 @@ trackedFiles: docs/models/accountingcompaniesallglobals.md: last_write_checksum: sha1:7e26c24fb42f82ea56def2a81e0bbc8bd68100a2 docs/models/accountingcompaniesallrequest.md: - last_write_checksum: sha1:11f01262c9421cdf1887c196f70c5325808ca589 + last_write_checksum: sha1:4d0ebdd2429e1f3271a520e9f258b30f45217c5b docs/models/accountingcompaniesallresponse.md: last_write_checksum: sha1:a2e1ce23062564d62f281931e5cbb7884da64354 docs/models/accountingcompanyinfooneglobals.md: @@ -20068,7 +20155,7 @@ trackedFiles: docs/models/accountingdepartmentsallglobals.md: last_write_checksum: sha1:30dc0be9397ce9bce1ae06d125950d1bf35f3641 docs/models/accountingdepartmentsallrequest.md: - last_write_checksum: sha1:e18247c8049adc357f65ef9c3a5613c540a0604c + last_write_checksum: sha1:c9333b46720b05d5d364c0607fe92dfc2c321529 docs/models/accountingdepartmentsallresponse.md: last_write_checksum: sha1:3ae6a0f568c1db8a383efc953a9cbcacae0aff47 docs/models/accountingdepartmentsdeleteglobals.md: @@ -20106,7 +20193,7 @@ trackedFiles: docs/models/accountingemployeesallglobals.md: last_write_checksum: sha1:bd8564cedc871ccec59aaa083e31e7c9390e36d8 docs/models/accountingemployeesallrequest.md: - last_write_checksum: sha1:943e2e072197f8225eecd23503629fac6c1e4085 + last_write_checksum: sha1:da3ba00625498d05b2fe7c557d88b3487222b68a docs/models/accountingemployeesallresponse.md: last_write_checksum: sha1:8e69640b825370f8efb374195fade162a43bac34 docs/models/accountingemployeesdeleteglobals.md: @@ -20140,7 +20227,7 @@ trackedFiles: docs/models/accountingexpensecategoriesallglobals.md: last_write_checksum: sha1:ae306bd39721a32767f7ac538653ccc02de78166 docs/models/accountingexpensecategoriesallrequest.md: - last_write_checksum: sha1:7df3912608a105f19401cd89b3d4a335032aa3fb + last_write_checksum: sha1:311de94339168bcc1a5482c950ea194d6a48486f docs/models/accountingexpensecategoriesallresponse.md: last_write_checksum: sha1:031426f4daa45c9f16bb163b127d5ac4c90b6e69 docs/models/accountingexpensecategoriesdeleteglobals.md: @@ -20170,7 +20257,7 @@ trackedFiles: docs/models/accountingexpensereportsallglobals.md: last_write_checksum: sha1:7bbdefee23df47487664f0814eb7400bf9ea63f9 docs/models/accountingexpensereportsallrequest.md: - last_write_checksum: sha1:17883cb5a623502e55eeca2eda5b05a9baeb8a0b + last_write_checksum: sha1:dc2d8b6a489afce63416867de1eb57c8e4b00f63 docs/models/accountingexpensereportsallresponse.md: last_write_checksum: sha1:26cc9c00d359bd0b5f43bcfc5992253f0d3eef51 docs/models/accountingexpensereportsdeleteglobals.md: @@ -20200,7 +20287,7 @@ trackedFiles: docs/models/accountingexpensesallglobals.md: last_write_checksum: sha1:3c99749c6ef4aced8ae9fadeba9927beec807554 docs/models/accountingexpensesallrequest.md: - last_write_checksum: sha1:b3fc85c18f140c5f07a5b10682799d558a908024 + last_write_checksum: sha1:a3802199ac14f1c3cad2d13192114ff8e1007913 docs/models/accountingexpensesallresponse.md: last_write_checksum: sha1:6f3b1f5eac6590647cd71afcbece9319799bd63f docs/models/accountingexpensesdeleteglobals.md: @@ -20366,7 +20453,7 @@ trackedFiles: docs/models/accountinglocationsallglobals.md: last_write_checksum: sha1:4e6d148403ea169561dfdac335d4815a8a4a187a docs/models/accountinglocationsallrequest.md: - last_write_checksum: sha1:9861d87a6498d4178649fbd0db349578e78c64e0 + last_write_checksum: sha1:f913e2f3f8c2e9f7ed54cca9c9301919fd8b2964 docs/models/accountinglocationsallresponse.md: last_write_checksum: sha1:a056ab2184de7ec2d6ff24385e97300cad9ed2e3 docs/models/accountinglocationsdeleteglobals.md: @@ -20498,7 +20585,7 @@ trackedFiles: docs/models/accountingquotesallglobals.md: last_write_checksum: sha1:3dc0a08da96f7926e90a33a515d7389347c30220 docs/models/accountingquotesallrequest.md: - last_write_checksum: sha1:f1d0f2f9f31e4fb3b8e05dcfd5618857e27c5851 + last_write_checksum: sha1:24d33b83669fdb1c26c7a4023c1600b539a641f5 docs/models/accountingquotesallresponse.md: last_write_checksum: sha1:a7c9586c9cc2b2977614139a7f209f5beeab4ef5 docs/models/accountingquotesdeleteglobals.md: @@ -20558,7 +20645,7 @@ trackedFiles: docs/models/accountingsubsidiariesallglobals.md: last_write_checksum: sha1:361375cf3886c71e44dbbc412651d3baea309351 docs/models/accountingsubsidiariesallrequest.md: - last_write_checksum: sha1:d7dbc5f55893d20b9923653f77cd7b1c1280b7c6 + last_write_checksum: sha1:7b78c758cbd39df237a87c774cc0d9df5f5c3f15 docs/models/accountingsubsidiariesallresponse.md: last_write_checksum: sha1:3dafb970f4b4cb8a4b627a3bf1dc040f6fd4d423 docs/models/accountingsubsidiariesdeleteglobals.md: @@ -21000,7 +21087,7 @@ trackedFiles: docs/models/configuration.md: last_write_checksum: sha1:d7316959670bb33007c8e75596a6b67e3e860b55 docs/models/connection.md: - last_write_checksum: sha1:a1b907eb47674aaaaad8e861e070f8b9a388756d + last_write_checksum: sha1:fd1bc93338e93a27f12fc8c93f59574f1f78129b docs/models/connectionconfiguration.md: last_write_checksum: sha1:b8373ebad4674b14991c53b0b805d1d82739022f docs/models/connectiondefaults.md: @@ -21010,7 +21097,11 @@ trackedFiles: docs/models/connectionimportdata.md: last_write_checksum: sha1:0b06e09351ee734a771f4816621486ce38d65f56 docs/models/connectioninput.md: - last_write_checksum: sha1:7634ec94908c77bcb26fdc8cd3c22b1afa85c0ce + last_write_checksum: sha1:00bd2596ecfa7096f566060ccbc5b1f81f318d4e + docs/models/connectionmetadata.md: + last_write_checksum: sha1:f618ae678ec59b842fe18fe688587b1301d59325 + docs/models/connectionmetadatainput.md: + last_write_checksum: sha1:353dce9726c8dd09bfabf40ace264a53cf4d4f9b docs/models/connectionstate.md: last_write_checksum: sha1:84ce695b7c2812c878d5183be67fe19ee2c0e0f8 docs/models/connectionstatus.md: @@ -21096,7 +21187,7 @@ trackedFiles: docs/models/consumer.md: last_write_checksum: sha1:f5edfa319764fdf28f036696938f868e7df2ca52 docs/models/consumerconnection.md: - last_write_checksum: sha1:ea5241d780fd0da922834f75efe32216c3aa3f30 + last_write_checksum: sha1:7e0540cff43ff621550b2a0f5f4db326b7f5178c docs/models/consumermetadata.md: last_write_checksum: sha1:4860b4b5c0e4db4aece222faae0586fecaaa1309 docs/models/consumerrequestcountsindaterangeresponse.md: @@ -21451,6 +21542,18 @@ trackedFiles: last_write_checksum: sha1:32a155860e345df5e809bc1b758d0e69d8d776df docs/models/crmleadsupdateresponse.md: last_write_checksum: sha1:b5c8aff63d9dba4574290902992390d816e33e0b + docs/models/crmlistsallglobals.md: + last_write_checksum: sha1:b547ed0770dc3ec9bc7304b5f26ac856b69bddf5 + docs/models/crmlistsallrequest.md: + last_write_checksum: sha1:2b8da2d093b1476f43903be0957e807ce6ae765d + docs/models/crmlistsallresponse.md: + last_write_checksum: sha1:2c33fca55038a051e7afcaec1da038be5bfd5c62 + docs/models/crmlistsoneglobals.md: + last_write_checksum: sha1:391ac7fcc1902b62f28458b80df552ff6c1b964f + docs/models/crmlistsonerequest.md: + last_write_checksum: sha1:b55796575122fd1e890996cf55a405e696f37a2d + docs/models/crmlistsoneresponse.md: + last_write_checksum: sha1:0fdfa9cac8c47450caf5a9542d93726199dcaf8d docs/models/crmnotesaddglobals.md: last_write_checksum: sha1:4e0c27660c3c799a1ea55324ff39ea2163c46160 docs/models/crmnotesaddrequest.md: @@ -22425,6 +22528,10 @@ trackedFiles: last_write_checksum: sha1:d5132371085b9dad52ede250fb7043322d1fd939 docs/models/getledgeraccountsresponse.md: last_write_checksum: sha1:1732da4f6dbd356ef365a68a0046408173b8f6f1 + docs/models/getlistresponse.md: + last_write_checksum: sha1:a3184f25f088cbd953669dd95ce196f2a53687a8 + docs/models/getlistsresponse.md: + last_write_checksum: sha1:6bb4e0870e09d43884f5252fc1dcb0184fa5e483 docs/models/getlogsresponse.md: last_write_checksum: sha1:ab4b9d4b432d087ef9a32b1f1b2b2d0447976881 docs/models/getmessageresponse.md: @@ -22953,6 +23060,12 @@ trackedFiles: last_write_checksum: sha1:172939293e1ae9cd89024736a9c64f8aaea531c2 docs/models/links.md: last_write_checksum: sha1:84288ced7c6386b2e81e9c201ab3c7a363695444 + docs/models/listt.md: + last_write_checksum: sha1:a9b62ff24c47fa595e824b82efde40c4c6f1937c + docs/models/listtype.md: + last_write_checksum: sha1:378b6430511bc69706d689ecf0955082851c0b1e + docs/models/listvisibility.md: + last_write_checksum: sha1:5ac6ef8620d6c979a81a9ba0f163b591cd7cbe90 docs/models/locationstatus.md: last_write_checksum: sha1:030498c0c499888e46a722d2c4ee6370cb4b6bc7 docs/models/log.md: @@ -22973,6 +23086,8 @@ trackedFiles: last_write_checksum: sha1:42a90fe67b73fa85db9e876acb4ece464b8249ce docs/models/meta.md: last_write_checksum: sha1:b0980e7585912f70225f3f0c28c1255b02fcf4a7 + docs/models/metadata.md: + last_write_checksum: sha1:69399648e9a0148e24758bcbca257fa2828d502a docs/models/mode.md: last_write_checksum: sha1:8a3d28bc07340caca89823d0c43aee120483ed23 docs/models/note.md: @@ -23750,11 +23865,11 @@ trackedFiles: docs/models/webhookeventlogservice.md: last_write_checksum: sha1:4c4bf608001bdfd56d273ea0b9326272aa6dfff0 docs/models/webhookeventlogsfilter.md: - last_write_checksum: sha1:830f2f264edbf7189d57cafebae8abb991cacd3d + last_write_checksum: sha1:5fb407da5fd54242459487c9e5fc33a3bcbbfe51 docs/models/webhookeventlogsfilterservice.md: last_write_checksum: sha1:91879316d2b412d23cf082cca77d946dda736357 docs/models/webhookeventtype.md: - last_write_checksum: sha1:2faa74320fe3ca8e52e8f1f583204bf8f6a7d634 + last_write_checksum: sha1:5707458b27a306735ac568606a63bd3568db9457 docs/models/webhooksubscription.md: last_write_checksum: sha1:a698dbef407f125cd3e724b8a0920760f88182cb docs/models/webhooksupport.md: @@ -23826,7 +23941,7 @@ trackedFiles: docs/sdks/applications/README.md: last_write_checksum: sha1:46a22b489c4872fb33f7b73705232d893785bc3e docs/sdks/attachments/README.md: - last_write_checksum: sha1:3c76d67d36c1833aa35d699fff741c96ae14b9bf + last_write_checksum: sha1:e3747c8b49f54270c7f8cd181cdcf8c2fc72f4bf docs/sdks/balancesheetsdk/README.md: last_write_checksum: sha1:47308e0099d4f7a4de9fd131ebcf4eb2f53f26e2 docs/sdks/bankaccounts/README.md: @@ -23840,7 +23955,7 @@ trackedFiles: docs/sdks/bills/README.md: last_write_checksum: sha1:557212a11c4371c816cb92f87db73884c5d67f0a docs/sdks/categories/README.md: - last_write_checksum: sha1:b6fb489fc07ff21a7b0b77c7c362e970e8991950 + last_write_checksum: sha1:f4ba2fe95e14ca1636ff03b02ba8dcadfc915120 docs/sdks/collections/README.md: last_write_checksum: sha1:80426c06731a91bfafb5240858ef2430ac0a71a6 docs/sdks/collectiontags/README.md: @@ -23852,7 +23967,7 @@ trackedFiles: docs/sdks/collectionusers/README.md: last_write_checksum: sha1:d98c200b5eb94a6cf2871b68996577ccc6de274a docs/sdks/companies/README.md: - last_write_checksum: sha1:5e9ae995de17ada13bc021e2aeb988ba6255e420 + last_write_checksum: sha1:0ea876013eb3182fe6f8444963003b3197254124 docs/sdks/companyinfosdk/README.md: last_write_checksum: sha1:603ef7f822e685a06530e33ed35e3e84f72c5643 docs/sdks/connectionconsent/README.md: @@ -23862,9 +23977,9 @@ trackedFiles: docs/sdks/connectioncustommappings/README.md: last_write_checksum: sha1:ee38aaa8e38cf2ef7032c4c5e185d88b21230623 docs/sdks/connections/README.md: - last_write_checksum: sha1:93a27ba12880b3f65b85f2c1c50528e3af367376 + last_write_checksum: sha1:2793d1484bde4c808720d7397557612dc31d5079 docs/sdks/connectionsettings/README.md: - last_write_checksum: sha1:3caaca1151c8edac0f0344cae16d2ffa07b3a10f + last_write_checksum: sha1:bc14e30ee33d313b48ba28883065413c471d182c docs/sdks/connectordocs/README.md: last_write_checksum: sha1:610ca819f7ee6051b38ec53243d69f2a8e0adf77 docs/sdks/connectorresources/README.md: @@ -23892,7 +24007,7 @@ trackedFiles: docs/sdks/customobjectschemas/README.md: last_write_checksum: sha1:a2b32d27c3ac584114aed28acb506de116856a3a docs/sdks/departments/README.md: - last_write_checksum: sha1:cebc108802053c6e2be49ec9512385959cc6fd49 + last_write_checksum: sha1:0baedda963aabb04fe9c45fa7a9088fa9aadd8f4 docs/sdks/drivegroups/README.md: last_write_checksum: sha1:6f2f443075993d087b78279ba1fb9b88832b9a7d docs/sdks/drives/README.md: @@ -23900,17 +24015,17 @@ trackedFiles: docs/sdks/employeepayrolls/README.md: last_write_checksum: sha1:e09121648dcd0f921c9ca84727e3df556c143136 docs/sdks/employees/README.md: - last_write_checksum: sha1:8340442a78abdbe6e1fefc9a8a12869f4fa68d4c + last_write_checksum: sha1:1bbdad3f0ecd73851f9e148d71b629c4b252db43 docs/sdks/employeeschedulessdk/README.md: last_write_checksum: sha1:c1af996d6e52135a93af82e9c705a83d894b165e docs/sdks/eventlogs/README.md: last_write_checksum: sha1:d48376fe80b03118f59d1dbcbda4dacee05fa096 docs/sdks/expensecategories/README.md: - last_write_checksum: sha1:460f0adeddf95d47fc40758b894f6340cb6e912e + last_write_checksum: sha1:2b7be1230724d3f0e00dbcb93913f69c1a8cc735 docs/sdks/expensereports/README.md: - last_write_checksum: sha1:426c78a40f37559014659d8d4eef87889137d3b0 + last_write_checksum: sha1:2a032010ac77a4d9b0051295db05b50c01013d6e docs/sdks/expenses/README.md: - last_write_checksum: sha1:f5db619fb412065eee8fb8a5f97d365b2c3fd07f + last_write_checksum: sha1:807b3f70c96441c34b9d080b79dda4a57df8f52a docs/sdks/files/README.md: last_write_checksum: sha1:6fafca167285487e1d60275037ff6cb4ac3978f3 docs/sdks/folders/README.md: @@ -23929,8 +24044,10 @@ trackedFiles: last_write_checksum: sha1:e522eeb94afc227e5f89f40f3ac6a28c31246eee docs/sdks/ledgeraccounts/README.md: last_write_checksum: sha1:a40405e175ffed52b1322d2cf7ef360fda402884 + docs/sdks/lists/README.md: + last_write_checksum: sha1:6877b39c27260930d8917aa45e32131c36a1d476 docs/sdks/locations/README.md: - last_write_checksum: sha1:21fc89ab39c944c958294ada71569846a4e7ddf2 + last_write_checksum: sha1:e60fafcbea996ef5b78ba36ab5243846b07a513a docs/sdks/logs/README.md: last_write_checksum: sha1:4ccfaa2fd3ce10de65b4da89332553a2a83b6ab9 docs/sdks/messages/README.md: @@ -23958,7 +24075,7 @@ trackedFiles: docs/sdks/purchaseorders/README.md: last_write_checksum: sha1:fb84ad40ffac3213e8249afbb310b4c4d5b4dfed docs/sdks/quotes/README.md: - last_write_checksum: sha1:800c2973ae672f661ded08df85fb324484cb9b0a + last_write_checksum: sha1:d14b65d1f60c0d91f086a81c3e837077154e109d docs/sdks/refunds/README.md: last_write_checksum: sha1:f02f4f6ba8629d448e1708c0a82e505f526c7079 docs/sdks/sessions/README.md: @@ -23968,7 +24085,7 @@ trackedFiles: docs/sdks/stores/README.md: last_write_checksum: sha1:46610e549794eb132d30e441fe6cb54e75108d38 docs/sdks/subsidiaries/README.md: - last_write_checksum: sha1:67f498ad1fbe98ea813b0b5ab7b0fd5ff7751d3b + last_write_checksum: sha1:1df130dfbfeba620f14ec69e24e833de8fac3cef docs/sdks/suppliers/README.md: last_write_checksum: sha1:17180ae89b34ae8cb340b81bbb6c7ed17938e26c docs/sdks/taxrates/README.md: @@ -24006,7 +24123,7 @@ trackedFiles: src/apideck_unify/_hooks/types.py: last_write_checksum: sha1:d57be38e644de01983a9224b9733ae0add898d43 src/apideck_unify/_version.py: - last_write_checksum: sha1:55c5c3d6e5c9927c3346a3a536d72e0d45d98426 + last_write_checksum: sha1:cdc78bc2895641ddcefa9eaf1318e63de572784b src/apideck_unify/accounting.py: last_write_checksum: sha1:63ea555e29266c0cbe993e2bddf21ffecd9b02b9 src/apideck_unify/activities.py: @@ -24022,7 +24139,7 @@ trackedFiles: src/apideck_unify/apideck_departments.py: last_write_checksum: sha1:9c6e4af55297ccb825e8bf5bb5c4089e53e344b5 src/apideck_unify/apideck_employees.py: - last_write_checksum: sha1:ea816fad6fae3e31928f5c2510d041e8b6759fa5 + last_write_checksum: sha1:2682fbaaa6c9794a55bb5ecac9b515af6439ea0c src/apideck_unify/apideck_hris_companies.py: last_write_checksum: sha1:8b1eb48fe3ec7b1d4d84e283a19556d98160d3ca src/apideck_unify/apiresourcecoverage_sdk.py: @@ -24038,23 +24155,23 @@ trackedFiles: src/apideck_unify/ats.py: last_write_checksum: sha1:0d5c5cedbfeb231840eb69958e0240f2fbb630f8 src/apideck_unify/attachments.py: - last_write_checksum: sha1:f04b1047969e6d005936c29be7e344d2e17ac8ba + last_write_checksum: sha1:964b71740b1a14cbf1b72e38a05b2c911a7ad81f src/apideck_unify/balancesheet_sdk.py: last_write_checksum: sha1:31ef71c6f4e4d19f5bc4eb0b677516d43158d2ce src/apideck_unify/bankaccounts.py: - last_write_checksum: sha1:f109c57ee32ff795d37a97bc69f2f8d89f794501 + last_write_checksum: sha1:ee3fcef1e3f733cc7167a550904261fed2ba8ae6 src/apideck_unify/bankfeedaccounts.py: - last_write_checksum: sha1:7e46a8fd6ffce018d76b8baed6dff6decc8480cd + last_write_checksum: sha1:3ce766d9daa3d36b75fca67fb551bb40c7c5100c src/apideck_unify/bankfeedstatements.py: - last_write_checksum: sha1:dd24d2291863c7d7fbbe72366b235ffc80b5f6dd + last_write_checksum: sha1:544cb60ac5965293d50a85f224eb91feada25d39 src/apideck_unify/basesdk.py: last_write_checksum: sha1:02f62bd40dfedb9697666050be333be287dd5a5b src/apideck_unify/billpayments.py: last_write_checksum: sha1:dce7d7b1645cb0f11e0e2b03a1743bbca268df48 src/apideck_unify/bills.py: - last_write_checksum: sha1:33f17906d089344daa45c0366ee3d66ee7846263 + last_write_checksum: sha1:ed5771e51139f4dd5fd46ca724774a71e2bd68ef src/apideck_unify/categories.py: - last_write_checksum: sha1:6868f4ca8cb346baa2bf46c69f51fd76181f61e0 + last_write_checksum: sha1:e1ea6fe95dd3b5357c4b6dab95d0cf6e78f33750 src/apideck_unify/collections.py: last_write_checksum: sha1:e9be5fb54f24427f714c38ee26da1345646dfe9b src/apideck_unify/collectiontags.py: @@ -24062,11 +24179,11 @@ trackedFiles: src/apideck_unify/collectionticketcomments.py: last_write_checksum: sha1:2aa0e6feed57783a8daf27716f93a40b29b9c685 src/apideck_unify/collectiontickets.py: - last_write_checksum: sha1:06510a5a8e766dee54d6f42f10bd81d9a39498af + last_write_checksum: sha1:9aa43db32268ae90d989a3234b1a69fdfe7f41d7 src/apideck_unify/collectionusers.py: last_write_checksum: sha1:1086a85c1d8c9d6b1ffa0e596689b21216b89b16 src/apideck_unify/companies.py: - last_write_checksum: sha1:74f3409fc8f88bcc3ec321b9f8d7bfd44cbe091c + last_write_checksum: sha1:97c791234c71c69085843c7b88906617a3327090 src/apideck_unify/companyinfo_sdk.py: last_write_checksum: sha1:38bbe655d3dfbb4cdf1604241bb941905237e8d9 src/apideck_unify/connectionconsent.py: @@ -24076,9 +24193,9 @@ trackedFiles: src/apideck_unify/connectioncustommappings.py: last_write_checksum: sha1:d2fd0a88db94b2c37465ffbb9b592143afc2b4ed src/apideck_unify/connections.py: - last_write_checksum: sha1:c71e744706e4e46bfc48c3e11d612b53505df02b + last_write_checksum: sha1:9556e3105de03628e7ffecb224d4f400a478fe54 src/apideck_unify/connectionsettings.py: - last_write_checksum: sha1:e8596b3830a0cfd60d2b4140ac57f6691ff36e64 + last_write_checksum: sha1:59e6c14890f4f77881daaef0c6df2aced9d02ee8 src/apideck_unify/connector_sdk.py: last_write_checksum: sha1:2612a2326d4070d9551e7865993fee5a42931c89 src/apideck_unify/connectordocs.py: @@ -24096,9 +24213,9 @@ trackedFiles: src/apideck_unify/createcallback.py: last_write_checksum: sha1:fa6cddb89b59b3890fbc0a06c4b7730e91e76f2e src/apideck_unify/creditnotes.py: - last_write_checksum: sha1:50182cb4e1074e11a0eacaa0f22754734c57f4a7 + last_write_checksum: sha1:ec132876ae828ec3524f73d210fe8e1c84a9ec37 src/apideck_unify/crm.py: - last_write_checksum: sha1:8bbf1c9e4f092b110c8f9b2cbaf5d4af099cd6a1 + last_write_checksum: sha1:36ede783f767decc1cf2e32812890740f1a85f58 src/apideck_unify/customers.py: last_write_checksum: sha1:4c57991f3f141ca7542171920e1d163c1ed81d56 src/apideck_unify/customfields.py: @@ -24110,7 +24227,7 @@ trackedFiles: src/apideck_unify/customobjectschemas.py: last_write_checksum: sha1:79befec63cb3d5bdbc8b94bd28baa361d4e784e7 src/apideck_unify/departments.py: - last_write_checksum: sha1:d64d7d0b15ea8cdf64f032d15d678f750486ac83 + last_write_checksum: sha1:90065b3fa3a77066b900946599578da0041eabfd src/apideck_unify/drivegroups.py: last_write_checksum: sha1:171da83d1abba6a961388d876c506c9a284f016c src/apideck_unify/drives.py: @@ -24120,17 +24237,17 @@ trackedFiles: src/apideck_unify/employeepayrolls.py: last_write_checksum: sha1:c84a061f34d666312600b49bf07abc88e56942a5 src/apideck_unify/employees.py: - last_write_checksum: sha1:66be814d3f14f3d9473228ab3450ef064c16262c + last_write_checksum: sha1:7bacbbfd28883dbeeb7df5c78f40d83094ed2467 src/apideck_unify/employeeschedules_sdk.py: last_write_checksum: sha1:a6be96924e77fe71013a32069043a73d29185028 src/apideck_unify/eventlogs.py: last_write_checksum: sha1:d1729709f928d9c708ff4d4eb825cb98c5423f1f src/apideck_unify/expensecategories.py: - last_write_checksum: sha1:ee6b1f859e7682b614859e13b7a871dee904bc16 + last_write_checksum: sha1:544e423a166f01fc368728ce058e837803221af1 src/apideck_unify/expensereports.py: - last_write_checksum: sha1:b2d95353744f922d624c0fbb2fa3be356010212b + last_write_checksum: sha1:19600559af350019cb4f523de822d8710d73a984 src/apideck_unify/expenses.py: - last_write_checksum: sha1:d8000cb14c4589a64a8f49c2a280844df5d7c705 + last_write_checksum: sha1:f7682632907af697bde9fac91d1d826564eb4d77 src/apideck_unify/files.py: last_write_checksum: sha1:d2a613a636558499fec8b923c3aa0d46a7e7e9ad src/apideck_unify/filestorage.py: @@ -24146,7 +24263,7 @@ trackedFiles: src/apideck_unify/invoiceitems.py: last_write_checksum: sha1:d1d420deeaa6c5115a785c603ab4be7d4db8edde src/apideck_unify/invoices.py: - last_write_checksum: sha1:9c9de969726b2c9638c5ba98a149c542a5ebcd0f + last_write_checksum: sha1:765cd08654bf9f98ede88475941377566ebb18dc src/apideck_unify/issuetracking.py: last_write_checksum: sha1:a18420473c9ae884dcdc562042a52205924643c5 src/apideck_unify/jobs.py: @@ -24156,21 +24273,23 @@ trackedFiles: src/apideck_unify/leads.py: last_write_checksum: sha1:5d80324040a7a6053d78c7228735a80c40478d0a src/apideck_unify/ledgeraccounts.py: - last_write_checksum: sha1:2bac19bc954345e580c4e48366ddf0be6b5cf13c + last_write_checksum: sha1:9ae98e3f302b1e9da3024bcb2385b4e9bd1ae0f2 + src/apideck_unify/lists.py: + last_write_checksum: sha1:302e329249882f5f6c7cd4e8a55561393c3456e6 src/apideck_unify/locations.py: - last_write_checksum: sha1:21ce36295083fca77b0f3b6f84be16f2f1ab27fa + last_write_checksum: sha1:8d2c95329ad3a695ec8c447c577364f3ba2ad24c src/apideck_unify/logs.py: last_write_checksum: sha1:e72432784f35bf5d801fcbb8f946c8ea9939d02d src/apideck_unify/messages.py: last_write_checksum: sha1:8b1e180d3c7d2ae9916b1f645460caebf5281d7b src/apideck_unify/models/__init__.py: - last_write_checksum: sha1:d14c866d05cb5b5f1041f35944e98f95cd6d1288 + last_write_checksum: sha1:8f097021f62cd7b72c877502bfb7bdcdc3a3b27e src/apideck_unify/models/accounting_agedcreditorsoneop.py: last_write_checksum: sha1:7346d1ab1c21db21995aae34c5ba01549c2786c2 src/apideck_unify/models/accounting_ageddebtorsoneop.py: last_write_checksum: sha1:8e1742dfbe4efe05e8375efe405db00ffdd16f46 src/apideck_unify/models/accounting_attachmentsallop.py: - last_write_checksum: sha1:e575864495b0a5964847cc967ddc4c11918ad8fd + last_write_checksum: sha1:2847c529e6aa7e4d548a66ae8f84d360ec1ce71f src/apideck_unify/models/accounting_attachmentsdeleteop.py: last_write_checksum: sha1:eba00e4e65bde241fb837e72df78c988d0225be3 src/apideck_unify/models/accounting_attachmentsdownloadop.py: @@ -24232,11 +24351,11 @@ trackedFiles: src/apideck_unify/models/accounting_billsupdateop.py: last_write_checksum: sha1:e0b394e371b43eece90b5d8f57a3597699a796e1 src/apideck_unify/models/accounting_categoriesallop.py: - last_write_checksum: sha1:a06020fb1dc6dda55a8301ccddc0ea8d513968d2 + last_write_checksum: sha1:90a95abd2fe01852626b4f3bda302edc2e5fe9a4 src/apideck_unify/models/accounting_categoriesoneop.py: last_write_checksum: sha1:84b2bcf1b09e81976e6f97072d76039376420cfd src/apideck_unify/models/accounting_companiesallop.py: - last_write_checksum: sha1:c5c74807c5737a6b79f2d079b8b65160739e02ac + last_write_checksum: sha1:526d18c9710b713916924a5136a2ca4270cdddad src/apideck_unify/models/accounting_companyinfooneop.py: last_write_checksum: sha1:fc9ed0490eaabf78dbbc0e89abde000d41978877 src/apideck_unify/models/accounting_creditnotesaddop.py: @@ -24262,7 +24381,7 @@ trackedFiles: src/apideck_unify/models/accounting_departmentsaddop.py: last_write_checksum: sha1:df3ca97a36bdf5ce31ee5944fb87ce3e82c02f4c src/apideck_unify/models/accounting_departmentsallop.py: - last_write_checksum: sha1:8cb7d5edb52a8a1c0398b57c682526b592396c46 + last_write_checksum: sha1:d78f5cc7e7b683b273518a83cb5272e60038d69b src/apideck_unify/models/accounting_departmentsdeleteop.py: last_write_checksum: sha1:72603b7c5d6bcf695d3620a83c6606c8f4108dd0 src/apideck_unify/models/accounting_departmentsoneop.py: @@ -24272,7 +24391,7 @@ trackedFiles: src/apideck_unify/models/accounting_employeesaddop.py: last_write_checksum: sha1:05f777de8252988d67395a4856d1723de3c1460d src/apideck_unify/models/accounting_employeesallop.py: - last_write_checksum: sha1:f785e0797f6c3f9ecda7ca1795986c21d4727bec + last_write_checksum: sha1:53e3542e77877b4c2af8f2326a20c623584ce1ae src/apideck_unify/models/accounting_employeesdeleteop.py: last_write_checksum: sha1:d819747c89dd14a7423f2cf3bebc1294ef7959bf src/apideck_unify/models/accounting_employeesoneop.py: @@ -24282,7 +24401,7 @@ trackedFiles: src/apideck_unify/models/accounting_expensecategoriesaddop.py: last_write_checksum: sha1:549c948024e1845ea36130686526ce652c65e05b src/apideck_unify/models/accounting_expensecategoriesallop.py: - last_write_checksum: sha1:a44ea9f2ddfe419eb60409582038183fa66a4b98 + last_write_checksum: sha1:a0ae98d0ef799b3f92861180769369a490298699 src/apideck_unify/models/accounting_expensecategoriesdeleteop.py: last_write_checksum: sha1:1e7c837f39372e6e6f76eb91bfc07284fb33977c src/apideck_unify/models/accounting_expensecategoriesoneop.py: @@ -24292,7 +24411,7 @@ trackedFiles: src/apideck_unify/models/accounting_expensereportsaddop.py: last_write_checksum: sha1:18b63a36d5bd11201483ccae9fd4858a3281b438 src/apideck_unify/models/accounting_expensereportsallop.py: - last_write_checksum: sha1:87f35fefea265cbee6cb910161e783e8f23d8f05 + last_write_checksum: sha1:c0ec0fc4d8a2327a4cbb3ca6a7889ce9b7d34ff4 src/apideck_unify/models/accounting_expensereportsdeleteop.py: last_write_checksum: sha1:e22a24c78ddde373b8e4e4e5258000c9a88eb6ba src/apideck_unify/models/accounting_expensereportsoneop.py: @@ -24302,7 +24421,7 @@ trackedFiles: src/apideck_unify/models/accounting_expensesaddop.py: last_write_checksum: sha1:c8d7faa5bf61cb1374e2d72013df249d99f0637a src/apideck_unify/models/accounting_expensesallop.py: - last_write_checksum: sha1:bd253c15577809e94ec3c819a506d9df4f350292 + last_write_checksum: sha1:034ad30f70a1112483a70c4344403a53f2c88245 src/apideck_unify/models/accounting_expensesdeleteop.py: last_write_checksum: sha1:fc829afadf95c09e16ffab49d1809dd6efd18f54 src/apideck_unify/models/accounting_expensesoneop.py: @@ -24356,7 +24475,7 @@ trackedFiles: src/apideck_unify/models/accounting_locationsaddop.py: last_write_checksum: sha1:d2b4bbde227ec2d26726a379c9e5a6f445b615cd src/apideck_unify/models/accounting_locationsallop.py: - last_write_checksum: sha1:ac8227c80f7633041b51f6291e61b671aebfe691 + last_write_checksum: sha1:caef61f554fb7779f3090e12f63722462a4d6ee8 src/apideck_unify/models/accounting_locationsdeleteop.py: last_write_checksum: sha1:7287322130a5b6cb5655db769b64323f30fbf84a src/apideck_unify/models/accounting_locationsoneop.py: @@ -24398,7 +24517,7 @@ trackedFiles: src/apideck_unify/models/accounting_quotesaddop.py: last_write_checksum: sha1:41f64d9665c852f7de0f51c52c1273539d4142a1 src/apideck_unify/models/accounting_quotesallop.py: - last_write_checksum: sha1:07461c65dbdfe267f2aeb6f2e863bd93fcf35e56 + last_write_checksum: sha1:128e826b19b4c651dbed8217eb6c5c1fc3df24ff src/apideck_unify/models/accounting_quotesdeleteop.py: last_write_checksum: sha1:67139ec4241c37c5c5a6c224a296bed56a8134be src/apideck_unify/models/accounting_quotesoneop.py: @@ -24418,7 +24537,7 @@ trackedFiles: src/apideck_unify/models/accounting_subsidiariesaddop.py: last_write_checksum: sha1:396e8292bb237e13c803a0a58bee211194630d81 src/apideck_unify/models/accounting_subsidiariesallop.py: - last_write_checksum: sha1:3499b623d41133d6f5480a1228bff2398f9fa016 + last_write_checksum: sha1:ddb6c1d640f227722be40b450c84fb0cc18b5da8 src/apideck_unify/models/accounting_subsidiariesdeleteop.py: last_write_checksum: sha1:bf9d1bcfc1f6bc69ea5168604e5bc18664c5df15 src/apideck_unify/models/accounting_subsidiariesoneop.py: @@ -24622,7 +24741,7 @@ trackedFiles: src/apideck_unify/models/compensation.py: last_write_checksum: sha1:e7ca2fd1d1315919bf40046de212790ec14de531 src/apideck_unify/models/connection.py: - last_write_checksum: sha1:52fe4d05e2309532cad44335db076a24e12781e7 + last_write_checksum: sha1:42b2af530e34c1b36c61e401c0ed232caebc37d6 src/apideck_unify/models/connectionhealth.py: last_write_checksum: sha1:33626f53cabfa62de333f5646fd5b2e68a2a9c06 src/apideck_unify/models/connectionimportdata.py: @@ -24668,7 +24787,7 @@ trackedFiles: src/apideck_unify/models/consumer.py: last_write_checksum: sha1:e340aa10d082c1f9c40fdd81fe7489bc2e32e2bd src/apideck_unify/models/consumerconnection.py: - last_write_checksum: sha1:2697eb7cad6377d899b0ea79b7d34136cb71f17d + last_write_checksum: sha1:22baa2bba69333fdf797ffbbd4e54ceec4e7b52a src/apideck_unify/models/consumermetadata.py: last_write_checksum: sha1:761111554161f4fd52e52847401de90d491d0694 src/apideck_unify/models/consumerrequestcountsindaterangeresponse.py: @@ -24875,6 +24994,10 @@ trackedFiles: last_write_checksum: sha1:39d0dd64b1507b2b76cf3d9c334e0163a2d0849c src/apideck_unify/models/crm_leadsupdateop.py: last_write_checksum: sha1:574567e39b8bf21be6eecda15512ba691f1bccff + src/apideck_unify/models/crm_listsallop.py: + last_write_checksum: sha1:70b3da9294138ac50518c698bc252905500c5122 + src/apideck_unify/models/crm_listsoneop.py: + last_write_checksum: sha1:25a3090e3d00a27432c01d719176ad3e57c92855 src/apideck_unify/models/crm_notesaddop.py: last_write_checksum: sha1:5e8af99642f3dcafd36442b125d03996c6550357 src/apideck_unify/models/crm_notesallop.py: @@ -25449,6 +25572,10 @@ trackedFiles: last_write_checksum: sha1:a9a70352f30a53710964c9fb551c8bb08bcb502c src/apideck_unify/models/getledgeraccountsresponse.py: last_write_checksum: sha1:d181093494dd9219c0647514fc7e3f3f5d8b2d8e + src/apideck_unify/models/getlistresponse.py: + last_write_checksum: sha1:57fc943ab683389e697132b9b49dbe27407137cf + src/apideck_unify/models/getlistsresponse.py: + last_write_checksum: sha1:bd4caaa7bc7eca163be9c9fe1f722e77f9555463 src/apideck_unify/models/getlogsresponse.py: last_write_checksum: sha1:1a6c3faac613a269aebdd41e01ad17b349749940 src/apideck_unify/models/getmessageresponse.py: @@ -25737,6 +25864,8 @@ trackedFiles: last_write_checksum: sha1:e16cd7e79f056bc29a8292b0be219d6e48cf6686 src/apideck_unify/models/links.py: last_write_checksum: sha1:166086eb6250d9d1b70e9cc7a6d89a3585bfd108 + src/apideck_unify/models/list.py: + last_write_checksum: sha1:00e494f2ea51ef894ab84f05511985d7071f3a53 src/apideck_unify/models/log.py: last_write_checksum: sha1:d4e242c818ce2166438e08905820f7fb4506977e src/apideck_unify/models/logsfilter.py: @@ -26144,9 +26273,9 @@ trackedFiles: src/apideck_unify/models/webhookeventlog.py: last_write_checksum: sha1:94c40cd44455917e583779d813db1fa875027670 src/apideck_unify/models/webhookeventlogsfilter.py: - last_write_checksum: sha1:a570f7ec34d2196d91b32b1f9c59bca2099f39fa + last_write_checksum: sha1:b30f5eb58dc623a969c8411269bd4fad2f3ba1ba src/apideck_unify/models/webhookeventtype.py: - last_write_checksum: sha1:753c93f57ca81b423a4a972716d06a7139db70a6 + last_write_checksum: sha1:b2ac9c3c126924d6734f64298eba7bf406cbf3c3 src/apideck_unify/models/webhooksubscription.py: last_write_checksum: sha1:12537b4b59e1cdb5798ddf08ad98dfb50f809a83 src/apideck_unify/models/webhooksupport.py: @@ -26158,7 +26287,7 @@ trackedFiles: src/apideck_unify/opportunities.py: last_write_checksum: sha1:d51415cfa4575ac908bda76d2121602628ed30a7 src/apideck_unify/orders.py: - last_write_checksum: sha1:34b8d03b4501c0040bbf4b66decb28b5ef216002 + last_write_checksum: sha1:ff0a2f894f1acc4a7ede38cfdc16ebfb05505748 src/apideck_unify/payments.py: last_write_checksum: sha1:f821a3185cd1c914654f767f795b176defde958d src/apideck_unify/payrolls.py: @@ -26178,7 +26307,7 @@ trackedFiles: src/apideck_unify/py.typed: last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 src/apideck_unify/quotes.py: - last_write_checksum: sha1:4783408aaab734148112ee09d7605b49609d10f6 + last_write_checksum: sha1:85b86f09de769e948f49d36b1385c830ba169cd0 src/apideck_unify/refunds.py: last_write_checksum: sha1:6d3ce2a30b81feaabe1a8cb9ae1a715349117dc4 src/apideck_unify/sdk.py: @@ -26194,7 +26323,7 @@ trackedFiles: src/apideck_unify/stores.py: last_write_checksum: sha1:9f5e5fc900c1254bb5ee0d45cd5e5c1bc0ec762d src/apideck_unify/subsidiaries.py: - last_write_checksum: sha1:01f35432179ecb2a3364024af7d5076423846cc1 + last_write_checksum: sha1:aac535254fde097d9048705e2a4af84bfb927fff src/apideck_unify/suppliers.py: last_write_checksum: sha1:f0fc01e22187f920be5f7d7a58076092e2d03e47 src/apideck_unify/taxrates.py: @@ -26214,11 +26343,11 @@ trackedFiles: src/apideck_unify/users.py: last_write_checksum: sha1:9a454f30a9ff330d06199f3b37734f271992b752 src/apideck_unify/utils/__init__.py: - last_write_checksum: sha1:0f93d821f9cb3e061ea125d881bb6f61166738dd + last_write_checksum: sha1:527db7a6c93948ecdec6a33f56b6551ae44f0180 src/apideck_unify/utils/annotations.py: last_write_checksum: sha1:a4824ad65f730303e4e1e3ec1febf87b4eb46dbc src/apideck_unify/utils/datetimes.py: - last_write_checksum: sha1:c721e4123000e7dc61ec52b28a739439d9e17341 + last_write_checksum: sha1:fa47d54c549ff9b95496ce91930fadfb04a36be9 src/apideck_unify/utils/dynamic_imports.py: last_write_checksum: sha1:a1940c63feb8eddfd8026de53384baf5056d5dcc src/apideck_unify/utils/enums.py: diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 7f2071cb..3d646310 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -32,7 +32,7 @@ generation: persistentEdits: {} versioningStrategy: automatic python: - version: 0.31.30 + version: 0.32.0 additionalDependencies: dev: {} main: {} @@ -48,6 +48,7 @@ python: constFieldCasing: upper defaultErrorName: APIError description: Python Client SDK Generated by Speakeasy. + durationFormat: false enableCustomCodeRegions: false enumFormat: enum envVarPrefix: APIDECK @@ -94,3 +95,4 @@ python: sseFlatResponse: false templateVersion: v2 useAsyncHooks: false + uuidFormat: false diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 2834e6e2..4dc2bb6b 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,20 +2,20 @@ speakeasyVersion: 1.656.1 sources: Apideck: sourceNamespace: apideck - sourceRevisionDigest: sha256:229d95eb38648660c4e5fea6bfca131317397d4ea10028ffbc1a8a53459bfb87 - sourceBlobDigest: sha256:3962e1b76b121d899a2bcada29d1159e9e74fed3e007680e8c1d1145aac8bcce + sourceRevisionDigest: sha256:bd20386803b35dca8e23d4679e836d66a485565d2cc55319cbbb14f02ec5dc5b + sourceBlobDigest: sha256:25898c61f09796ac806238de155a4e94b9de7da2db23e16da53b70920527e1b6 tags: - latest - - speakeasy-sdk-regen-1783058612 - - 10.24.47 + - speakeasy-sdk-regen-1783435601 + - 10.25.3 targets: apideck: source: Apideck sourceNamespace: apideck - sourceRevisionDigest: sha256:229d95eb38648660c4e5fea6bfca131317397d4ea10028ffbc1a8a53459bfb87 - sourceBlobDigest: sha256:3962e1b76b121d899a2bcada29d1159e9e74fed3e007680e8c1d1145aac8bcce + sourceRevisionDigest: sha256:bd20386803b35dca8e23d4679e836d66a485565d2cc55319cbbb14f02ec5dc5b + sourceBlobDigest: sha256:25898c61f09796ac806238de155a4e94b9de7da2db23e16da53b70920527e1b6 codeSamplesNamespace: apideck-python-code-samples - codeSamplesRevisionDigest: sha256:7095106050166eab427adc9fddf1dd33139d7f2691416a16c282666de9e73218 + codeSamplesRevisionDigest: sha256:f977a140a546af35b825dd09ba363b8e378f94fb5862fc3b9c05561bf9306b81 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 9e57fd05..5012bc69 100644 --- a/README.md +++ b/README.md @@ -582,6 +582,11 @@ with Apideck( * [update](docs/sdks/leads/README.md#update) - Update lead * [delete](docs/sdks/leads/README.md#delete) - Delete lead +#### [crm.lists](docs/sdks/lists/README.md) + +* [list](docs/sdks/lists/README.md#list) - List lists +* [get](docs/sdks/lists/README.md#get) - Get list + #### [crm.notes](docs/sdks/notes/README.md) * [list](docs/sdks/notes/README.md#list) - List notes @@ -1072,7 +1077,7 @@ with Apideck( **Inherit from [`ApideckError`](./src/apideck_unify/models/apideckerror.py)**: -* [`Unauthorized`](./src/apideck_unify/models/unauthorized.py): Unauthorized. Status code `401`. Applicable to 6 of 337 methods.* +* [`Unauthorized`](./src/apideck_unify/models/unauthorized.py): Unauthorized. Status code `401`. Applicable to 6 of 339 methods.* * [`ResponseValidationError`](./src/apideck_unify/models/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute. diff --git a/RELEASES.md b/RELEASES.md index 2b6b4b27..950a6d6a 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1368,4 +1368,14 @@ Based on: ### Generated - [python v0.31.30] . ### Releases -- [PyPI v0.31.30] https://pypi.org/project/apideck-unify/0.31.30 - . \ No newline at end of file +- [PyPI v0.31.30] https://pypi.org/project/apideck-unify/0.31.30 - . + +## 2026-07-16 06:01:09 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.656.1 (2.753.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.32.0] . +### Releases +- [PyPI v0.32.0] https://pypi.org/project/apideck-unify/0.32.0 - . \ No newline at end of file diff --git a/docs/models/accountingattachmentsallrequest.md b/docs/models/accountingattachmentsallrequest.md index ed6842b7..97451cb9 100644 --- a/docs/models/accountingattachmentsallrequest.md +++ b/docs/models/accountingattachmentsallrequest.md @@ -14,4 +14,5 @@ | `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | \ No newline at end of file +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingcategoriesallrequest.md b/docs/models/accountingcategoriesallrequest.md index d6641776..6fe4da31 100644 --- a/docs/models/accountingcategoriesallrequest.md +++ b/docs/models/accountingcategoriesallrequest.md @@ -13,4 +13,5 @@ | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | -| `filter_` | [Optional[models.CategoriesFilter]](../models/categoriesfilter.md) | :heavy_minus_sign: | Apply filters | {
"type": "expense"
} | \ No newline at end of file +| `filter_` | [Optional[models.CategoriesFilter]](../models/categoriesfilter.md) | :heavy_minus_sign: | Apply filters | {
"type": "expense"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingcompaniesallrequest.md b/docs/models/accountingcompaniesallrequest.md index cde2e45f..aacbcd80 100644 --- a/docs/models/accountingcompaniesallrequest.md +++ b/docs/models/accountingcompaniesallrequest.md @@ -12,4 +12,5 @@ | `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | \ No newline at end of file +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingdepartmentsallrequest.md b/docs/models/accountingdepartmentsallrequest.md index 1b96944d..f20c0810 100644 --- a/docs/models/accountingdepartmentsallrequest.md +++ b/docs/models/accountingdepartmentsallrequest.md @@ -13,4 +13,5 @@ | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | -| `filter_` | [Optional[models.AccountingDepartmentsFilter]](../models/accountingdepartmentsfilter.md) | :heavy_minus_sign: | Apply filters | {
"subsidiary": "1"
} | \ No newline at end of file +| `filter_` | [Optional[models.AccountingDepartmentsFilter]](../models/accountingdepartmentsfilter.md) | :heavy_minus_sign: | Apply filters | {
"subsidiary": "1"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingemployeesallrequest.md b/docs/models/accountingemployeesallrequest.md index f381dce0..82a5056f 100644 --- a/docs/models/accountingemployeesallrequest.md +++ b/docs/models/accountingemployeesallrequest.md @@ -12,4 +12,5 @@ | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | -| `filter_` | [Optional[models.AccountingEmployeesFilter]](../models/accountingemployeesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "active"
} | \ No newline at end of file +| `filter_` | [Optional[models.AccountingEmployeesFilter]](../models/accountingemployeesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "active"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingexpensecategoriesallrequest.md b/docs/models/accountingexpensecategoriesallrequest.md index ebba325e..ec24c7f2 100644 --- a/docs/models/accountingexpensecategoriesallrequest.md +++ b/docs/models/accountingexpensecategoriesallrequest.md @@ -12,4 +12,5 @@ | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | -| `filter_` | [Optional[models.ExpenseCategoriesFilter]](../models/expensecategoriesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "active"
} | \ No newline at end of file +| `filter_` | [Optional[models.ExpenseCategoriesFilter]](../models/expensecategoriesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "active"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingexpensereportsallrequest.md b/docs/models/accountingexpensereportsallrequest.md index c5b4f6d8..d196c9a8 100644 --- a/docs/models/accountingexpensereportsallrequest.md +++ b/docs/models/accountingexpensereportsallrequest.md @@ -12,4 +12,5 @@ | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | -| `filter_` | [Optional[models.ExpenseReportsFilter]](../models/expensereportsfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "submitted"
} | \ No newline at end of file +| `filter_` | [Optional[models.ExpenseReportsFilter]](../models/expensereportsfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "submitted"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingexpensesallrequest.md b/docs/models/accountingexpensesallrequest.md index d17d710b..5514f973 100644 --- a/docs/models/accountingexpensesallrequest.md +++ b/docs/models/accountingexpensesallrequest.md @@ -12,4 +12,5 @@ | `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `filter_` | [Optional[models.ExpensesFilter]](../models/expensesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "draft",
"type": "expense"
} | \ No newline at end of file +| `filter_` | [Optional[models.ExpensesFilter]](../models/expensesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "draft",
"type": "expense"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountinglocationsallrequest.md b/docs/models/accountinglocationsallrequest.md index 131596c3..14153c46 100644 --- a/docs/models/accountinglocationsallrequest.md +++ b/docs/models/accountinglocationsallrequest.md @@ -13,4 +13,5 @@ | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | -| `filter_` | [Optional[models.AccountingLocationsFilter]](../models/accountinglocationsfilter.md) | :heavy_minus_sign: | Apply filters | {
"subsidiary": "1"
} | \ No newline at end of file +| `filter_` | [Optional[models.AccountingLocationsFilter]](../models/accountinglocationsfilter.md) | :heavy_minus_sign: | Apply filters | {
"subsidiary": "1"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingquotesallrequest.md b/docs/models/accountingquotesallrequest.md index eef065b2..0529f24f 100644 --- a/docs/models/accountingquotesallrequest.md +++ b/docs/models/accountingquotesallrequest.md @@ -12,4 +12,5 @@ | `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `filter_` | [Optional[models.QuotesFilter]](../models/quotesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546"
} | \ No newline at end of file +| `filter_` | [Optional[models.QuotesFilter]](../models/quotesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/accountingsubsidiariesallrequest.md b/docs/models/accountingsubsidiariesallrequest.md index 95934f3b..e1fce3c5 100644 --- a/docs/models/accountingsubsidiariesallrequest.md +++ b/docs/models/accountingsubsidiariesallrequest.md @@ -12,4 +12,5 @@ | `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | \ No newline at end of file +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | \ No newline at end of file diff --git a/docs/models/connection.md b/docs/models/connection.md index b295b483..540a89fe 100644 --- a/docs/models/connection.md +++ b/docs/models/connection.md @@ -22,7 +22,7 @@ | `authorize_url` | *OptionalNullable[str]* | :heavy_minus_sign: | The OAuth redirect URI. Redirect your users to this URI to let them authorize your app in the connector's UI. Before you can use this URI, you must add `redirect_uri` as a query parameter to the `authorize_url`. Be sure to URL encode the `redirect_uri` part. Your users will be redirected to this `redirect_uri` after they granted access to your app in the connector's UI. | https://unify.apideck.com/vault/authorize/salesforce/?state= | | `revoke_url` | *OptionalNullable[str]* | :heavy_minus_sign: | The OAuth revoke URI. Redirect your users to this URI to revoke this connection. Before you can use this URI, you must add `redirect_uri` as a query parameter. Your users will be redirected to this `redirect_uri` after they granted access to your app in the connector's UI. | https://unify.apideck.com/vault/revoke/salesforce/?state= | | `settings` | Dict[str, *Any*] | :heavy_minus_sign: | Connection settings. Values will persist to `form_fields` with corresponding id | {
"instance_url": "https://eu28.salesforce.com",
"api_key": "12345xxxxxx"
} | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | +| `metadata` | [OptionalNullable[models.ConnectionMetadata]](../models/connectionmetadata.md) | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | | `form_fields` | List[[models.FormField](../models/formfield.md)] | :heavy_minus_sign: | The settings that are wanted to create a connection. | [
{
"id": "instance_url",
"label": "Instance url",
"value": "https://eu28.salesforce.com",
"placeholder": "",
"mask": false,
"type": "text",
"required": true,
"disabled": false,
"custom_field": false,
"sensitive": false
},
{
"id": "api_key",
"label": "API Key",
"value": "123455677",
"placeholder": "",
"mask": false,
"type": "text",
"required": true,
"disabled": false,
"custom_field": false,
"sensitive": true
}
] | | `configuration` | List[[models.Configuration](../models/configuration.md)] | :heavy_minus_sign: | N/A | | | `configurable_resources` | List[*str*] | :heavy_minus_sign: | N/A | [
"opportunities",
"companies",
"contacts",
"leads"
] | diff --git a/docs/models/connectioninput.md b/docs/models/connectioninput.md index e551e356..50426bf7 100644 --- a/docs/models/connectioninput.md +++ b/docs/models/connectioninput.md @@ -7,7 +7,7 @@ | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | | `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether the connection is enabled or not. You can enable or disable a connection using the Update Connection API. | true | | `settings` | Dict[str, *Any*] | :heavy_minus_sign: | Connection settings. Values will persist to `form_fields` with corresponding id | {
"instance_url": "https://eu28.salesforce.com",
"api_key": "12345xxxxxx"
} | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | +| `metadata` | [OptionalNullable[models.ConnectionMetadataInput]](../models/connectionmetadatainput.md) | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | | `configuration` | List[[models.ConnectionConfiguration](../models/connectionconfiguration.md)] | :heavy_minus_sign: | N/A | | | `custom_mappings` | List[[models.CustomMappingInput](../models/custommappinginput.md)] | :heavy_minus_sign: | List of custom mappings configured for this connection | | | `consent_state` | [Optional[models.ConsentState]](../models/consentstate.md) | :heavy_minus_sign: | The current consent state of the connection | granted | diff --git a/docs/models/connectionmetadata.md b/docs/models/connectionmetadata.md new file mode 100644 index 00000000..e5930fb6 --- /dev/null +++ b/docs/models/connectionmetadata.md @@ -0,0 +1,11 @@ +# ConnectionMetadata + +Attach your own consumer specific metadata + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `company_id` | *Optional[str]* | :heavy_minus_sign: | Normalized identifier of the authorized organization, copied from the connector-specific setting (e.g. Xero tenant_id, QuickBooks realm_id, NetSuite account_id). | 4bfe0fce-9257-4a1a-a691-5eed6c957f9a | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | \ No newline at end of file diff --git a/docs/models/connectionmetadatainput.md b/docs/models/connectionmetadatainput.md new file mode 100644 index 00000000..a74bf02d --- /dev/null +++ b/docs/models/connectionmetadatainput.md @@ -0,0 +1,10 @@ +# ConnectionMetadataInput + +Attach your own consumer specific metadata + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | \ No newline at end of file diff --git a/docs/models/consumerconnection.md b/docs/models/consumerconnection.md index 39f34d21..495e85ea 100644 --- a/docs/models/consumerconnection.md +++ b/docs/models/consumerconnection.md @@ -17,7 +17,7 @@ | `auth_type` | [Optional[models.AuthType]](../models/authtype.md) | :heavy_minus_sign: | Type of authorization used by the connector | oauth2 | | `enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | | `settings` | Dict[str, *Any*] | :heavy_minus_sign: | Connection settings. Values will persist to `form_fields` with corresponding id | {
"instance_url": "https://eu28.salesforce.com"
} | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | +| `metadata` | [OptionalNullable[models.Metadata]](../models/metadata.md) | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | | `created_at` | *Optional[str]* | :heavy_minus_sign: | N/A | 2020-09-19T12:18:37.071Z | | `updated_at` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | 2020-09-19T12:18:37.071Z | | `state` | [Optional[models.ConnectionState]](../models/connectionstate.md) | :heavy_minus_sign: | [Connection state flow](#section/Connection-state) | authorized | diff --git a/docs/models/crmlistsallglobals.md b/docs/models/crmlistsallglobals.md new file mode 100644 index 00000000..54c56aec --- /dev/null +++ b/docs/models/crmlistsallglobals.md @@ -0,0 +1,9 @@ +# CrmListsAllGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | \ No newline at end of file diff --git a/docs/models/crmlistsallrequest.md b/docs/models/crmlistsallrequest.md new file mode 100644 index 00000000..0769fc4b --- /dev/null +++ b/docs/models/crmlistsallrequest.md @@ -0,0 +1,15 @@ +# CrmListsAllRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | \ No newline at end of file diff --git a/docs/models/crmlistsallresponse.md b/docs/models/crmlistsallresponse.md new file mode 100644 index 00000000..74252431 --- /dev/null +++ b/docs/models/crmlistsallresponse.md @@ -0,0 +1,10 @@ +# CrmListsAllResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `get_lists_response` | [Optional[models.GetListsResponse]](../models/getlistsresponse.md) | :heavy_minus_sign: | Lists | +| `unexpected_error_response` | [Optional[models.UnexpectedErrorResponse]](../models/unexpectederrorresponse.md) | :heavy_minus_sign: | Unexpected error | \ No newline at end of file diff --git a/docs/models/crmlistsoneglobals.md b/docs/models/crmlistsoneglobals.md new file mode 100644 index 00000000..98d103af --- /dev/null +++ b/docs/models/crmlistsoneglobals.md @@ -0,0 +1,9 @@ +# CrmListsOneGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | \ No newline at end of file diff --git a/docs/models/crmlistsonerequest.md b/docs/models/crmlistsonerequest.md new file mode 100644 index 00000000..0222d708 --- /dev/null +++ b/docs/models/crmlistsonerequest.md @@ -0,0 +1,13 @@ +# CrmListsOneRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | ID of the record you are acting upon. | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | \ No newline at end of file diff --git a/docs/models/crmlistsoneresponse.md b/docs/models/crmlistsoneresponse.md new file mode 100644 index 00000000..8a00b30a --- /dev/null +++ b/docs/models/crmlistsoneresponse.md @@ -0,0 +1,10 @@ +# CrmListsOneResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `get_list_response` | [Optional[models.GetListResponse]](../models/getlistresponse.md) | :heavy_minus_sign: | List | +| `unexpected_error_response` | [Optional[models.UnexpectedErrorResponse]](../models/unexpectederrorresponse.md) | :heavy_minus_sign: | Unexpected error | \ No newline at end of file diff --git a/docs/models/getlistresponse.md b/docs/models/getlistresponse.md new file mode 100644 index 00000000..3936dd73 --- /dev/null +++ b/docs/models/getlistresponse.md @@ -0,0 +1,17 @@ +# GetListResponse + +List + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `status_code` | *int* | :heavy_check_mark: | HTTP Response Status Code | 200 | +| `status` | *str* | :heavy_check_mark: | HTTP Response Status | OK | +| `service` | *str* | :heavy_check_mark: | Apideck ID of service provider | hubspot | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | lists | +| `operation` | *str* | :heavy_check_mark: | Operation performed | one | +| `data` | [models.ListT](../models/listt.md) | :heavy_check_mark: | N/A | | +| `meta` | [Optional[models.Meta]](../models/meta.md) | :heavy_minus_sign: | Response metadata | | +| `raw` | Dict[str, *Any*] | :heavy_minus_sign: | Raw response from the integration when raw=true query param is provided | | \ No newline at end of file diff --git a/docs/models/getlistsresponse.md b/docs/models/getlistsresponse.md new file mode 100644 index 00000000..4b2462d2 --- /dev/null +++ b/docs/models/getlistsresponse.md @@ -0,0 +1,18 @@ +# GetListsResponse + +Lists + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `status_code` | *int* | :heavy_check_mark: | HTTP Response Status Code | 200 | +| `status` | *str* | :heavy_check_mark: | HTTP Response Status | OK | +| `service` | *str* | :heavy_check_mark: | Apideck ID of service provider | hubspot | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | lists | +| `operation` | *str* | :heavy_check_mark: | Operation performed | all | +| `data` | List[[models.ListT](../models/listt.md)] | :heavy_check_mark: | N/A | | +| `raw` | Dict[str, *Any*] | :heavy_minus_sign: | Raw response from the integration when raw=true query param is provided | | +| `meta` | [Optional[models.Meta]](../models/meta.md) | :heavy_minus_sign: | Response metadata | | +| `links` | [Optional[models.Links]](../models/links.md) | :heavy_minus_sign: | Links to navigate to previous or next pages through the API | | \ No newline at end of file diff --git a/docs/models/listt.md b/docs/models/listt.md new file mode 100644 index 00000000..d841d653 --- /dev/null +++ b/docs/models/listt.md @@ -0,0 +1,27 @@ +# ListT + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The unique identifier of the List. | 12345 | +| `name` | *str* | :heavy_check_mark: | The name of the List. | Newsletter Subscribers | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | The description of the List. | Contacts who opted in to the monthly newsletter. | +| `type` | [OptionalNullable[models.ListType]](../models/listtype.md) | :heavy_minus_sign: | Whether the List is static (a fixed set of records) or dynamic (a saved segment that is automatically kept up to date based on filter criteria). | dynamic | +| `visibility` | [OptionalNullable[models.ListVisibility]](../models/listvisibility.md) | :heavy_minus_sign: | The visibility of the List. Which of these values a given connector can return depends on its native sharing model — see the connector-specific gotchas below for details. | shared | +| `owner_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The unique identifier of the user who owns the List. | 12345 | +| `filter_criteria` | Dict[str, *Any*] | :heavy_minus_sign: | The filter criteria used to determine which records belong to a dynamic List. Shape is connector-native and passed through largely as-is (e.g. Close returns its own nested query-tree structure) rather than normalized to a common format. | {
"type": "and",
"queries": [
{
"type": "object_type",
"object_type": "contact"
}
]
} | +| `record_count` | *OptionalNullable[int]* | :heavy_minus_sign: | The number of records currently in the List. | 42 | +| `folder_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The unique identifier of the folder the List is organized under. | 12345 | +| `object_type` | *OptionalNullable[str]* | :heavy_minus_sign: | The type of CRM records the List contains. Normalized to a lowercase plural noun for the vendor's standard object types (e.g. contacts, companies, opportunities, leads, tickets, campaigns, tasks, events); for vendor-specific or custom object types the raw downstream identifier is passed through unchanged, following the connector's native casing (e.g. a HubSpot custom objectTypeId like 2-12345 or a Salesforce custom object API name), so a raw value may not always be distinguishable from a normalized one. This field is intentionally open-ended — no closed enum is enforced. | contacts | +| `is_dynamic` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the List is dynamic, meaning its records are automatically kept up to date based on filter criteria. This is a boolean mirror of `type` (`true` when `type` is `dynamic`, `false` when `static`), provided for callers that prefer a boolean check over a string comparison. | true | +| `is_favorite` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the List has been marked as a favorite. | false | +| `is_default` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the List is a default List. | false | +| `is_system` | *OptionalNullable[bool]* | :heavy_minus_sign: | Whether the List is a system-generated List. | false | +| `custom_fields` | List[[models.CustomField](../models/customfield.md)] | :heavy_minus_sign: | N/A | | +| `tags` | List[*str*] | :heavy_minus_sign: | N/A | [
"New"
] | +| `updated_by` | *OptionalNullable[str]* | :heavy_minus_sign: | The unique identifier of the user who last updated the List. | 12345 | +| `created_by` | *OptionalNullable[str]* | :heavy_minus_sign: | The unique identifier of the user who created the List. | 12345 | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The date and time when the List was last updated. | 2020-09-30T07:43:32.000Z | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The date and time when the List was created. | 2020-09-30T07:43:32.000Z | \ No newline at end of file diff --git a/docs/models/listtype.md b/docs/models/listtype.md new file mode 100644 index 00000000..dd9dd1ae --- /dev/null +++ b/docs/models/listtype.md @@ -0,0 +1,11 @@ +# ListType + +Whether the List is static (a fixed set of records) or dynamic (a saved segment that is automatically kept up to date based on filter criteria). + + +## Values + +| Name | Value | +| --------- | --------- | +| `STATIC` | static | +| `DYNAMIC` | dynamic | \ No newline at end of file diff --git a/docs/models/listvisibility.md b/docs/models/listvisibility.md new file mode 100644 index 00000000..402e1b15 --- /dev/null +++ b/docs/models/listvisibility.md @@ -0,0 +1,12 @@ +# ListVisibility + +The visibility of the List. Which of these values a given connector can return depends on its native sharing model — see the connector-specific gotchas below for details. + + +## Values + +| Name | Value | +| --------- | --------- | +| `PRIVATE` | private | +| `SHARED` | shared | +| `PUBLIC` | public | \ No newline at end of file diff --git a/docs/models/metadata.md b/docs/models/metadata.md new file mode 100644 index 00000000..229b23eb --- /dev/null +++ b/docs/models/metadata.md @@ -0,0 +1,11 @@ +# Metadata + +Attach your own consumer specific metadata + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `company_id` | *Optional[str]* | :heavy_minus_sign: | Normalized identifier of the authorized organization, copied from the connector-specific setting (e.g. Xero tenant_id, QuickBooks realm_id, NetSuite account_id). | 4bfe0fce-9257-4a1a-a691-5eed6c957f9a | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | \ No newline at end of file diff --git a/docs/models/webhookeventlogsfilter.md b/docs/models/webhookeventlogsfilter.md index 2531accf..7277148c 100644 --- a/docs/models/webhookeventlogsfilter.md +++ b/docs/models/webhookeventlogsfilter.md @@ -3,10 +3,17 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `exclude_apis` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | vault,proxy | -| `service` | [OptionalNullable[models.WebhookEventLogsFilterService]](../models/webhookeventlogsfilterservice.md) | :heavy_minus_sign: | N/A | | -| `consumer_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | test_user_id | -| `entity_type` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | Connection | -| `event_type` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | vault.connection.callable | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | +| `exclude_apis` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | vault,proxy | +| `service` | [OptionalNullable[models.WebhookEventLogsFilterService]](../models/webhookeventlogsfilterservice.md) | :heavy_minus_sign: | N/A | | +| `consumer_id` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | test_user_id | +| `entity_type` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | Connection | +| `event_type` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | vault.connection.callable | +| `start_date` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Filter logs at or after this ISO 8601 date-time (inclusive). | 2024-01-01T00:00:00.000Z | +| `end_date` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Filter logs at or before this ISO 8601 date-time (inclusive). Must be on or after start_date. | 2024-01-31T23:59:59.999Z | +| `success` | *OptionalNullable[bool]* | :heavy_minus_sign: | Filter by delivery success or failure. | | +| `status_code` | *OptionalNullable[float]* | :heavy_minus_sign: | Filter by a single HTTP status code. For backward compatibility - use status_codes for multiple values. | 201 | +| `status_codes` | List[*float*] | :heavy_minus_sign: | Filter by multiple HTTP status codes. Values must be between 100-599. Maximum 50 status codes allowed. | [
200,
201,
204
] | +| `event_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Filter by webhook event ID. | | +| `execution_attempt` | *OptionalNullable[float]* | :heavy_minus_sign: | Filter by the delivery attempt number. | | \ No newline at end of file diff --git a/docs/models/webhookeventtype.md b/docs/models/webhookeventtype.md index 4326d821..787b39ef 100644 --- a/docs/models/webhookeventtype.md +++ b/docs/models/webhookeventtype.md @@ -108,6 +108,9 @@ | `HRIS_COMPANY_CREATED` | hris.company.created | | `HRIS_COMPANY_UPDATED` | hris.company.updated | | `HRIS_COMPANY_DELETED` | hris.company.deleted | +| `HRIS_TIME_OFF_REQUEST_CREATED` | hris.time-off-request.created | +| `HRIS_TIME_OFF_REQUEST_UPDATED` | hris.time-off-request.updated | +| `HRIS_TIME_OFF_REQUEST_DELETED` | hris.time-off-request.deleted | | `FILE_STORAGE_FILE_CREATED` | file-storage.file.created | | `FILE_STORAGE_FILE_UPDATED` | file-storage.file.updated | | `FILE_STORAGE_FILE_DELETED` | file-storage.file.deleted | diff --git a/docs/sdks/attachments/README.md b/docs/sdks/attachments/README.md index da090a19..73837a1e 100644 --- a/docs/sdks/attachments/README.md +++ b/docs/sdks/attachments/README.md @@ -30,7 +30,9 @@ with Apideck( api_key=os.getenv("APIDECK_API_KEY", ""), ) as apideck: - res = apideck.accounting.attachments.list(reference_type=apideck_unify.AttachmentReferenceType.INVOICE, reference_id="123456", raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at") + res = apideck.accounting.attachments.list(reference_type=apideck_unify.AttachmentReferenceType.INVOICE, reference_id="123456", raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at", pass_through={ + "search": "San Francisco", + }) while res is not None: # Handle items @@ -53,6 +55,7 @@ with Apideck( | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/categories/README.md b/docs/sdks/categories/README.md index d8e023c9..b128d319 100644 --- a/docs/sdks/categories/README.md +++ b/docs/sdks/categories/README.md @@ -29,6 +29,8 @@ with Apideck( res = apideck.accounting.categories.list(raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at", filter_={ "type": apideck_unify.CategoriesFilterType.EXPENSE, + }, pass_through={ + "search": "San Francisco", }) while res is not None: @@ -51,6 +53,7 @@ with Apideck( | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | | `filter_` | [Optional[models.CategoriesFilter]](../../models/categoriesfilter.md) | :heavy_minus_sign: | Apply filters | {
"type": "expense"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/companies/README.md b/docs/sdks/companies/README.md index 5a3cb93d..88b187c1 100644 --- a/docs/sdks/companies/README.md +++ b/docs/sdks/companies/README.md @@ -25,7 +25,9 @@ with Apideck( api_key=os.getenv("APIDECK_API_KEY", ""), ) as apideck: - res = apideck.accounting.companies.list(raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at") + res = apideck.accounting.companies.list(raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at", pass_through={ + "search": "San Francisco", + }) while res is not None: # Handle items @@ -46,6 +48,7 @@ with Apideck( | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/connections/README.md b/docs/sdks/connections/README.md index 42632da4..1ed62f44 100644 --- a/docs/sdks/connections/README.md +++ b/docs/sdks/connections/README.md @@ -141,13 +141,15 @@ with Apideck( res = apideck.vault.connections.update(service_id="pipedrive", unified_api="crm", enabled=True, settings={ "instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx", - }, metadata={ - "account": { - "name": "My Company", - "id": "c01458a5-7276-41ce-bc19-639906b0450a", + }, metadata=apideck_unify.ConnectionMetadataInput( + **{ + "account": { + "name": "My Company", + "id": "c01458a5-7276-41ce-bc19-639906b0450a", + }, + "plan": "enterprise", }, - "plan": "enterprise", - }, configuration=[ + ), configuration=[ { "resource": "leads", "defaults": [ @@ -365,7 +367,7 @@ with Apideck( | `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | | `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether the connection is enabled or not. You can enable or disable a connection using the Update Connection API. | true | | `settings` | Dict[str, *Any*] | :heavy_minus_sign: | Connection settings. Values will persist to `form_fields` with corresponding id | {
"instance_url": "https://eu28.salesforce.com",
"api_key": "12345xxxxxx"
} | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | +| `metadata` | [OptionalNullable[models.ConnectionMetadataInput]](../../models/connectionmetadatainput.md) | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | | `configuration` | List[[models.ConnectionConfiguration](../../models/connectionconfiguration.md)] | :heavy_minus_sign: | N/A | | | `custom_mappings` | List[[models.CustomMappingInput](../../models/custommappinginput.md)] | :heavy_minus_sign: | List of custom mappings configured for this connection | | | `consent_state` | [Optional[models.ConsentState]](../../models/consentstate.md) | :heavy_minus_sign: | The current consent state of the connection | granted | diff --git a/docs/sdks/connectionsettings/README.md b/docs/sdks/connectionsettings/README.md index 4a5a1691..abc1cc1a 100644 --- a/docs/sdks/connectionsettings/README.md +++ b/docs/sdks/connectionsettings/README.md @@ -84,13 +84,15 @@ with Apideck( res = apideck.vault.connection_settings.update(service_id="pipedrive", unified_api="crm", resource="leads", enabled=True, settings={ "instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx", - }, metadata={ - "account": { - "name": "My Company", - "id": "c01458a5-7276-41ce-bc19-639906b0450a", + }, metadata=apideck_unify.ConnectionMetadataInput( + **{ + "account": { + "name": "My Company", + "id": "c01458a5-7276-41ce-bc19-639906b0450a", + }, + "plan": "enterprise", }, - "plan": "enterprise", - }, configuration=[ + ), configuration=[ { "resource": "leads", "defaults": [ @@ -298,7 +300,7 @@ with Apideck( | `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | | `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether the connection is enabled or not. You can enable or disable a connection using the Update Connection API. | true | | `settings` | Dict[str, *Any*] | :heavy_minus_sign: | Connection settings. Values will persist to `form_fields` with corresponding id | {
"instance_url": "https://eu28.salesforce.com",
"api_key": "12345xxxxxx"
} | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | +| `metadata` | [OptionalNullable[models.ConnectionMetadataInput]](../../models/connectionmetadatainput.md) | :heavy_minus_sign: | Attach your own consumer specific metadata | {
"account": {
"name": "My Company",
"id": "c01458a5-7276-41ce-bc19-639906b0450a"
},
"plan": "enterprise"
} | | `configuration` | List[[models.ConnectionConfiguration](../../models/connectionconfiguration.md)] | :heavy_minus_sign: | N/A | | | `custom_mappings` | List[[models.CustomMappingInput](../../models/custommappinginput.md)] | :heavy_minus_sign: | List of custom mappings configured for this connection | | | `consent_state` | [Optional[models.ConsentState]](../../models/consentstate.md) | :heavy_minus_sign: | The current consent state of the connection | granted | diff --git a/docs/sdks/departments/README.md b/docs/sdks/departments/README.md index 36af0124..4772547b 100644 --- a/docs/sdks/departments/README.md +++ b/docs/sdks/departments/README.md @@ -31,6 +31,8 @@ with Apideck( res = apideck.accounting.departments.list(raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at", filter_={ "subsidiary": "1", + }, pass_through={ + "search": "San Francisco", }) while res is not None: @@ -53,6 +55,7 @@ with Apideck( | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | | `filter_` | [Optional[models.AccountingDepartmentsFilter]](../../models/accountingdepartmentsfilter.md) | :heavy_minus_sign: | Apply filters | {
"subsidiary": "1"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/employees/README.md b/docs/sdks/employees/README.md index db9b1b5a..1b0f7230 100644 --- a/docs/sdks/employees/README.md +++ b/docs/sdks/employees/README.md @@ -34,6 +34,8 @@ with Apideck( res = apideck.accounting.employees.list(raw=False, service_id="salesforce", limit=20, fields="id,updated_at", filter_={ "updated_since": parse_datetime("2020-09-30T07:43:32.000Z"), "status": apideck_unify.AccountingEmployeesFilterStatus.ACTIVE, + }, pass_through={ + "search": "San Francisco", }) while res is not None: @@ -55,6 +57,7 @@ with Apideck( | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | | `filter_` | [Optional[models.AccountingEmployeesFilter]](../../models/accountingemployeesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "active"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/expensecategories/README.md b/docs/sdks/expensecategories/README.md index 63891ca5..907f50ec 100644 --- a/docs/sdks/expensecategories/README.md +++ b/docs/sdks/expensecategories/README.md @@ -34,6 +34,8 @@ with Apideck( res = apideck.accounting.expense_categories.list(raw=False, service_id="salesforce", limit=20, fields="id,updated_at", filter_={ "updated_since": parse_datetime("2020-09-30T07:43:32.000Z"), "status": apideck_unify.ExpenseCategoriesFilterStatus.ACTIVE, + }, pass_through={ + "search": "San Francisco", }) while res is not None: @@ -55,6 +57,7 @@ with Apideck( | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | | `filter_` | [Optional[models.ExpenseCategoriesFilter]](../../models/expensecategoriesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "active"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/expensereports/README.md b/docs/sdks/expensereports/README.md index 43102424..67b76db8 100644 --- a/docs/sdks/expensereports/README.md +++ b/docs/sdks/expensereports/README.md @@ -34,6 +34,8 @@ with Apideck( res = apideck.accounting.expense_reports.list(raw=False, service_id="salesforce", limit=20, fields="id,updated_at", filter_={ "updated_since": parse_datetime("2020-09-30T07:43:32.000Z"), "status": apideck_unify.ExpenseReportsFilterStatus.SUBMITTED, + }, pass_through={ + "search": "San Francisco", }) while res is not None: @@ -55,6 +57,7 @@ with Apideck( | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | | `filter_` | [Optional[models.ExpenseReportsFilter]](../../models/expensereportsfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "submitted"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/expenses/README.md b/docs/sdks/expenses/README.md index 9fe2a064..a3881b7b 100644 --- a/docs/sdks/expenses/README.md +++ b/docs/sdks/expenses/README.md @@ -35,6 +35,8 @@ with Apideck( "updated_since": parse_datetime("2020-09-30T07:43:32.000Z"), "status": apideck_unify.ExpensesFilterStatus.DRAFT, "type": apideck_unify.ExpensesFilterType.EXPENSE, + }, pass_through={ + "search": "San Francisco", }) while res is not None: @@ -56,6 +58,7 @@ with Apideck( | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `filter_` | [Optional[models.ExpensesFilter]](../../models/expensesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"status": "draft",
"type": "expense"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/lists/README.md b/docs/sdks/lists/README.md new file mode 100644 index 00000000..d77db4f2 --- /dev/null +++ b/docs/sdks/lists/README.md @@ -0,0 +1,121 @@ +# Lists +(*crm.lists*) + +## Overview + +### Available Operations + +* [list](#list) - List lists +* [get](#get) - Get list + +## list + +List lists + +### Example Usage + + +```python +from apideck_unify import Apideck +import os + + +with Apideck( + consumer_id="test-consumer", + app_id="dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX", + api_key=os.getenv("APIDECK_API_KEY", ""), +) as apideck: + + res = apideck.crm.lists.list(raw=False, service_id="salesforce", limit=20, pass_through={ + "search": "San Francisco", + }, fields="id,updated_at") + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.CrmListsAllResponse](../../models/crmlistsallresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------ | ------------------------------ | ------------------------------ | +| models.BadRequestResponse | 400 | application/json | +| models.UnauthorizedResponse | 401 | application/json | +| models.PaymentRequiredResponse | 402 | application/json | +| models.NotFoundResponse | 404 | application/json | +| models.UnprocessableResponse | 422 | application/json | +| models.APIError | 4XX, 5XX | \*/\* | + +## get + +Get list + +### Example Usage + + +```python +from apideck_unify import Apideck +import os + + +with Apideck( + consumer_id="test-consumer", + app_id="dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX", + api_key=os.getenv("APIDECK_API_KEY", ""), +) as apideck: + + res = apideck.crm.lists.get(id="", service_id="salesforce", raw=False, fields="id,updated_at") + + assert res.get_list_response is not None + + # Handle response + print(res.get_list_response) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | ID of the record you are acting upon. | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.CrmListsOneResponse](../../models/crmlistsoneresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------ | ------------------------------ | ------------------------------ | +| models.BadRequestResponse | 400 | application/json | +| models.UnauthorizedResponse | 401 | application/json | +| models.PaymentRequiredResponse | 402 | application/json | +| models.NotFoundResponse | 404 | application/json | +| models.UnprocessableResponse | 422 | application/json | +| models.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/locations/README.md b/docs/sdks/locations/README.md index 2e3389a5..7a4c78c0 100644 --- a/docs/sdks/locations/README.md +++ b/docs/sdks/locations/README.md @@ -31,6 +31,8 @@ with Apideck( res = apideck.accounting.locations.list(raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at", filter_={ "subsidiary": "1", + }, pass_through={ + "search": "San Francisco", }) while res is not None: @@ -53,6 +55,7 @@ with Apideck( | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | | `filter_` | [Optional[models.AccountingLocationsFilter]](../../models/accountinglocationsfilter.md) | :heavy_minus_sign: | Apply filters | {
"subsidiary": "1"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/quotes/README.md b/docs/sdks/quotes/README.md index 5d5538f4..84c866b2 100644 --- a/docs/sdks/quotes/README.md +++ b/docs/sdks/quotes/README.md @@ -34,6 +34,8 @@ with Apideck( "updated_since": parse_datetime("2020-09-30T07:43:32.000Z"), "created_since": parse_datetime("2020-09-30T07:43:32.000Z"), "number": "OIT00546", + }, pass_through={ + "search": "San Francisco", }) while res is not None: @@ -55,6 +57,7 @@ with Apideck( | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `filter_` | [Optional[models.QuotesFilter]](../../models/quotesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546"
} | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/subsidiaries/README.md b/docs/sdks/subsidiaries/README.md index 628937ef..ba78ea25 100644 --- a/docs/sdks/subsidiaries/README.md +++ b/docs/sdks/subsidiaries/README.md @@ -29,7 +29,9 @@ with Apideck( api_key=os.getenv("APIDECK_API_KEY", ""), ) as apideck: - res = apideck.accounting.subsidiaries.list(raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at") + res = apideck.accounting.subsidiaries.list(raw=False, service_id="salesforce", company_id="12345", limit=20, fields="id,updated_at", pass_through={ + "search": "San Francisco", + }) while res is not None: # Handle items @@ -50,6 +52,7 @@ with Apideck( | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/pyproject.toml b/pyproject.toml index f6f0572a..d118662d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "apideck-unify" -version = "0.31.30" +version = "0.32.0" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" diff --git a/src/apideck_unify/_version.py b/src/apideck_unify/_version.py index f217303a..1b3376ff 100644 --- a/src/apideck_unify/_version.py +++ b/src/apideck_unify/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "apideck-unify" -__version__: str = "0.31.30" -__openapi_doc_version__: str = "10.24.47" +__version__: str = "0.32.0" +__openapi_doc_version__: str = "10.25.3" __gen_version__: str = "2.753.1" -__user_agent__: str = "speakeasy-sdk/python 0.31.30 2.753.1 10.24.47 apideck-unify" +__user_agent__: str = "speakeasy-sdk/python 0.32.0 2.753.1 10.25.3 apideck-unify" try: if __package__ is not None: diff --git a/src/apideck_unify/attachments.py b/src/apideck_unify/attachments.py index 9530f269..b6e915c8 100644 --- a/src/apideck_unify/attachments.py +++ b/src/apideck_unify/attachments.py @@ -31,6 +31,7 @@ def list( cursor: OptionalNullable[str] = UNSET, limit: Optional[int] = 20, fields: OptionalNullable[str] = UNSET, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -50,6 +51,7 @@ def list( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -76,6 +78,7 @@ def list( cursor=cursor, limit=limit, fields=fields, + pass_through=pass_through, ) req = self._build_request( @@ -147,6 +150,7 @@ def next_func() -> Optional[models.AccountingAttachmentsAllResponse]: cursor=next_cursor, limit=limit, fields=fields, + pass_through=pass_through, retries=retries, ) @@ -214,6 +218,7 @@ async def list_async( cursor: OptionalNullable[str] = UNSET, limit: Optional[int] = 20, fields: OptionalNullable[str] = UNSET, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -233,6 +238,7 @@ async def list_async( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -259,6 +265,7 @@ async def list_async( cursor=cursor, limit=limit, fields=fields, + pass_through=pass_through, ) req = self._build_request_async( @@ -330,6 +337,7 @@ def next_func() -> Optional[models.AccountingAttachmentsAllResponse]: cursor=next_cursor, limit=limit, fields=fields, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/categories.py b/src/apideck_unify/categories.py index 730d7971..31470db6 100644 --- a/src/apideck_unify/categories.py +++ b/src/apideck_unify/categories.py @@ -25,6 +25,7 @@ def list( filter_: Optional[ Union[models.CategoriesFilter, models.CategoriesFilterTypedDict] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -43,6 +44,7 @@ def list( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -70,6 +72,7 @@ def list( filter_=utils.get_pydantic_model( filter_, Optional[models.CategoriesFilter] ), + pass_through=pass_through, ) req = self._build_request( @@ -140,6 +143,7 @@ def next_func() -> Optional[models.AccountingCategoriesAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) @@ -208,6 +212,7 @@ async def list_async( filter_: Optional[ Union[models.CategoriesFilter, models.CategoriesFilterTypedDict] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -226,6 +231,7 @@ async def list_async( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -253,6 +259,7 @@ async def list_async( filter_=utils.get_pydantic_model( filter_, Optional[models.CategoriesFilter] ), + pass_through=pass_through, ) req = self._build_request_async( @@ -323,6 +330,7 @@ def next_func() -> Optional[models.AccountingCategoriesAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/companies.py b/src/apideck_unify/companies.py index 2997e59b..7c0cda58 100644 --- a/src/apideck_unify/companies.py +++ b/src/apideck_unify/companies.py @@ -22,6 +22,7 @@ def list( cursor: OptionalNullable[str] = UNSET, limit: Optional[int] = 20, fields: OptionalNullable[str] = UNSET, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -39,6 +40,7 @@ def list( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -63,6 +65,7 @@ def list( cursor=cursor, limit=limit, fields=fields, + pass_through=pass_through, ) req = self._build_request( @@ -132,6 +135,7 @@ def next_func() -> Optional[models.AccountingCompaniesAllResponse]: cursor=next_cursor, limit=limit, fields=fields, + pass_through=pass_through, retries=retries, ) @@ -197,6 +201,7 @@ async def list_async( cursor: OptionalNullable[str] = UNSET, limit: Optional[int] = 20, fields: OptionalNullable[str] = UNSET, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -214,6 +219,7 @@ async def list_async( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -238,6 +244,7 @@ async def list_async( cursor=cursor, limit=limit, fields=fields, + pass_through=pass_through, ) req = self._build_request_async( @@ -307,6 +314,7 @@ def next_func() -> Optional[models.AccountingCompaniesAllResponse]: cursor=next_cursor, limit=limit, fields=fields, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/connections.py b/src/apideck_unify/connections.py index f0d94b52..4a4b3429 100644 --- a/src/apideck_unify/connections.py +++ b/src/apideck_unify/connections.py @@ -577,7 +577,11 @@ def update( app_id: Optional[str] = None, enabled: Optional[bool] = None, settings: OptionalNullable[Dict[str, Any]] = UNSET, - metadata: OptionalNullable[Dict[str, Any]] = UNSET, + metadata: OptionalNullable[ + Union[ + models.ConnectionMetadataInput, models.ConnectionMetadataInputTypedDict + ] + ] = UNSET, configuration: Optional[ Union[ List[models.ConnectionConfiguration], @@ -641,7 +645,9 @@ def update( connection=models.ConnectionInput( enabled=enabled, settings=settings, - metadata=metadata, + metadata=utils.get_pydantic_model( + metadata, OptionalNullable[models.ConnectionMetadataInput] + ), configuration=utils.get_pydantic_model( configuration, Optional[List[models.ConnectionConfiguration]] ), @@ -766,7 +772,11 @@ async def update_async( app_id: Optional[str] = None, enabled: Optional[bool] = None, settings: OptionalNullable[Dict[str, Any]] = UNSET, - metadata: OptionalNullable[Dict[str, Any]] = UNSET, + metadata: OptionalNullable[ + Union[ + models.ConnectionMetadataInput, models.ConnectionMetadataInputTypedDict + ] + ] = UNSET, configuration: Optional[ Union[ List[models.ConnectionConfiguration], @@ -830,7 +840,9 @@ async def update_async( connection=models.ConnectionInput( enabled=enabled, settings=settings, - metadata=metadata, + metadata=utils.get_pydantic_model( + metadata, OptionalNullable[models.ConnectionMetadataInput] + ), configuration=utils.get_pydantic_model( configuration, Optional[List[models.ConnectionConfiguration]] ), diff --git a/src/apideck_unify/connectionsettings.py b/src/apideck_unify/connectionsettings.py index a57195cf..3e1ba9b5 100644 --- a/src/apideck_unify/connectionsettings.py +++ b/src/apideck_unify/connectionsettings.py @@ -304,7 +304,11 @@ def update( app_id: Optional[str] = None, enabled: Optional[bool] = None, settings: OptionalNullable[Dict[str, Any]] = UNSET, - metadata: OptionalNullable[Dict[str, Any]] = UNSET, + metadata: OptionalNullable[ + Union[ + models.ConnectionMetadataInput, models.ConnectionMetadataInputTypedDict + ] + ] = UNSET, configuration: Optional[ Union[ List[models.ConnectionConfiguration], @@ -370,7 +374,9 @@ def update( connection=models.ConnectionInput( enabled=enabled, settings=settings, - metadata=metadata, + metadata=utils.get_pydantic_model( + metadata, OptionalNullable[models.ConnectionMetadataInput] + ), configuration=utils.get_pydantic_model( configuration, Optional[List[models.ConnectionConfiguration]] ), @@ -496,7 +502,11 @@ async def update_async( app_id: Optional[str] = None, enabled: Optional[bool] = None, settings: OptionalNullable[Dict[str, Any]] = UNSET, - metadata: OptionalNullable[Dict[str, Any]] = UNSET, + metadata: OptionalNullable[ + Union[ + models.ConnectionMetadataInput, models.ConnectionMetadataInputTypedDict + ] + ] = UNSET, configuration: Optional[ Union[ List[models.ConnectionConfiguration], @@ -562,7 +572,9 @@ async def update_async( connection=models.ConnectionInput( enabled=enabled, settings=settings, - metadata=metadata, + metadata=utils.get_pydantic_model( + metadata, OptionalNullable[models.ConnectionMetadataInput] + ), configuration=utils.get_pydantic_model( configuration, Optional[List[models.ConnectionConfiguration]] ), diff --git a/src/apideck_unify/crm.py b/src/apideck_unify/crm.py index 5dbd18f3..7ab63aeb 100644 --- a/src/apideck_unify/crm.py +++ b/src/apideck_unify/crm.py @@ -8,6 +8,7 @@ from apideck_unify.customobjects import CustomObjects from apideck_unify.customobjectschemas import CustomObjectSchemas from apideck_unify.leads import Leads +from apideck_unify.lists import Lists from apideck_unify.notes import Notes from apideck_unify.opportunities import Opportunities from apideck_unify.pipelines import Pipelines @@ -21,6 +22,7 @@ class Crm(BaseSDK): opportunities: Opportunities leads: Leads pipelines: Pipelines + lists: Lists notes: Notes users: Users activities: Activities @@ -44,6 +46,7 @@ def _init_sdks(self): ) self.leads = Leads(self.sdk_configuration, parent_ref=self.parent_ref) self.pipelines = Pipelines(self.sdk_configuration, parent_ref=self.parent_ref) + self.lists = Lists(self.sdk_configuration, parent_ref=self.parent_ref) self.notes = Notes(self.sdk_configuration, parent_ref=self.parent_ref) self.users = Users(self.sdk_configuration, parent_ref=self.parent_ref) self.activities = Activities(self.sdk_configuration, parent_ref=self.parent_ref) diff --git a/src/apideck_unify/departments.py b/src/apideck_unify/departments.py index 962a0988..784d3fb6 100644 --- a/src/apideck_unify/departments.py +++ b/src/apideck_unify/departments.py @@ -28,6 +28,7 @@ def list( models.AccountingDepartmentsFilterTypedDict, ] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -46,6 +47,7 @@ def list( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -73,6 +75,7 @@ def list( filter_=utils.get_pydantic_model( filter_, Optional[models.AccountingDepartmentsFilter] ), + pass_through=pass_through, ) req = self._build_request( @@ -143,6 +146,7 @@ def next_func() -> Optional[models.AccountingDepartmentsAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) @@ -214,6 +218,7 @@ async def list_async( models.AccountingDepartmentsFilterTypedDict, ] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -232,6 +237,7 @@ async def list_async( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -259,6 +265,7 @@ async def list_async( filter_=utils.get_pydantic_model( filter_, Optional[models.AccountingDepartmentsFilter] ), + pass_through=pass_through, ) req = self._build_request_async( @@ -329,6 +336,7 @@ def next_func() -> Optional[models.AccountingDepartmentsAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/employees.py b/src/apideck_unify/employees.py index b5b98047..6f7d1fbc 100644 --- a/src/apideck_unify/employees.py +++ b/src/apideck_unify/employees.py @@ -28,6 +28,7 @@ def list( models.AccountingEmployeesFilterTypedDict, ] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -45,6 +46,7 @@ def list( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -71,6 +73,7 @@ def list( filter_=utils.get_pydantic_model( filter_, Optional[models.AccountingEmployeesFilter] ), + pass_through=pass_through, ) req = self._build_request( @@ -140,6 +143,7 @@ def next_func() -> Optional[models.AccountingEmployeesAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) @@ -210,6 +214,7 @@ async def list_async( models.AccountingEmployeesFilterTypedDict, ] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -227,6 +232,7 @@ async def list_async( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -253,6 +259,7 @@ async def list_async( filter_=utils.get_pydantic_model( filter_, Optional[models.AccountingEmployeesFilter] ), + pass_through=pass_through, ) req = self._build_request_async( @@ -322,6 +329,7 @@ def next_func() -> Optional[models.AccountingEmployeesAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/expensecategories.py b/src/apideck_unify/expensecategories.py index d36b46ea..07709512 100644 --- a/src/apideck_unify/expensecategories.py +++ b/src/apideck_unify/expensecategories.py @@ -26,6 +26,7 @@ def list( models.ExpenseCategoriesFilter, models.ExpenseCategoriesFilterTypedDict ] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -43,6 +44,7 @@ def list( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -69,6 +71,7 @@ def list( filter_=utils.get_pydantic_model( filter_, Optional[models.ExpenseCategoriesFilter] ), + pass_through=pass_through, ) req = self._build_request( @@ -138,6 +141,7 @@ def next_func() -> Optional[models.AccountingExpenseCategoriesAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) @@ -207,6 +211,7 @@ async def list_async( models.ExpenseCategoriesFilter, models.ExpenseCategoriesFilterTypedDict ] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -224,6 +229,7 @@ async def list_async( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -250,6 +256,7 @@ async def list_async( filter_=utils.get_pydantic_model( filter_, Optional[models.ExpenseCategoriesFilter] ), + pass_through=pass_through, ) req = self._build_request_async( @@ -319,6 +326,7 @@ def next_func() -> Optional[models.AccountingExpenseCategoriesAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/expensereports.py b/src/apideck_unify/expensereports.py index 902eac7c..6080b1f7 100644 --- a/src/apideck_unify/expensereports.py +++ b/src/apideck_unify/expensereports.py @@ -25,6 +25,7 @@ def list( filter_: Optional[ Union[models.ExpenseReportsFilter, models.ExpenseReportsFilterTypedDict] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -42,6 +43,7 @@ def list( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -68,6 +70,7 @@ def list( filter_=utils.get_pydantic_model( filter_, Optional[models.ExpenseReportsFilter] ), + pass_through=pass_through, ) req = self._build_request( @@ -137,6 +140,7 @@ def next_func() -> Optional[models.AccountingExpenseReportsAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) @@ -204,6 +208,7 @@ async def list_async( filter_: Optional[ Union[models.ExpenseReportsFilter, models.ExpenseReportsFilterTypedDict] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -221,6 +226,7 @@ async def list_async( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -247,6 +253,7 @@ async def list_async( filter_=utils.get_pydantic_model( filter_, Optional[models.ExpenseReportsFilter] ), + pass_through=pass_through, ) req = self._build_request_async( @@ -316,6 +323,7 @@ def next_func() -> Optional[models.AccountingExpenseReportsAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/expenses.py b/src/apideck_unify/expenses.py index 2c6448ab..08c80da6 100644 --- a/src/apideck_unify/expenses.py +++ b/src/apideck_unify/expenses.py @@ -25,6 +25,7 @@ def list( filter_: Optional[ Union[models.ExpensesFilter, models.ExpensesFilterTypedDict] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -42,6 +43,7 @@ def list( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -66,6 +68,7 @@ def list( cursor=cursor, limit=limit, filter_=utils.get_pydantic_model(filter_, Optional[models.ExpensesFilter]), + pass_through=pass_through, ) req = self._build_request( @@ -135,6 +138,7 @@ def next_func() -> Optional[models.AccountingExpensesAllResponse]: cursor=next_cursor, limit=limit, filter_=filter_, + pass_through=pass_through, retries=retries, ) @@ -202,6 +206,7 @@ async def list_async( filter_: Optional[ Union[models.ExpensesFilter, models.ExpensesFilterTypedDict] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -219,6 +224,7 @@ async def list_async( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -243,6 +249,7 @@ async def list_async( cursor=cursor, limit=limit, filter_=utils.get_pydantic_model(filter_, Optional[models.ExpensesFilter]), + pass_through=pass_through, ) req = self._build_request_async( @@ -312,6 +319,7 @@ def next_func() -> Optional[models.AccountingExpensesAllResponse]: cursor=next_cursor, limit=limit, filter_=filter_, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/lists.py b/src/apideck_unify/lists.py new file mode 100644 index 00000000..bab7008c --- /dev/null +++ b/src/apideck_unify/lists.py @@ -0,0 +1,650 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from apideck_unify import models, utils +from apideck_unify._hooks import HookContext +from apideck_unify.types import OptionalNullable, UNSET +from apideck_unify.utils import get_security_from_env +from apideck_unify.utils.unmarshal_json_response import unmarshal_json_response +from jsonpath import JSONPath +from typing import Any, Dict, List, Mapping, Optional, Union + + +class Lists(BaseSDK): + def list( + self, + *, + raw: Optional[bool] = False, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + cursor: OptionalNullable[str] = UNSET, + limit: Optional[int] = 20, + pass_through: Optional[Dict[str, Any]] = None, + fields: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Optional[models.CrmListsAllResponse]: + r"""List lists + + List lists + + :param raw: Include raw response. Mostly used for debugging purposes + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. + :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads + :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.CrmListsAllRequest( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + cursor=cursor, + limit=limit, + pass_through=pass_through, + fields=fields, + ) + + req = self._build_request( + method="GET", + path="/crm/lists", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.CrmListsAllGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 900000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="crm.listsAll", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + def next_func() -> Optional[models.CrmListsAllResponse]: + body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) + next_cursor = JSONPath("$.meta.cursors.next").parse(body) + + if len(next_cursor) == 0: + return None + + next_cursor = next_cursor[0] + if next_cursor is None or str(next_cursor).strip() == "": + return None + + return self.list( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + cursor=next_cursor, + limit=limit, + pass_through=pass_through, + fields=fields, + retries=retries, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.CrmListsAllResponse( + get_lists_response=unmarshal_json_response( + Optional[models.GetListsResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + next=next_func, + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.CrmListsAllResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + next=next_func, + ) + + raise models.APIError("Unexpected response received", http_res) + + async def list_async( + self, + *, + raw: Optional[bool] = False, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + cursor: OptionalNullable[str] = UNSET, + limit: Optional[int] = 20, + pass_through: Optional[Dict[str, Any]] = None, + fields: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Optional[models.CrmListsAllResponse]: + r"""List lists + + List lists + + :param raw: Include raw response. Mostly used for debugging purposes + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. + :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads + :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.CrmListsAllRequest( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + cursor=cursor, + limit=limit, + pass_through=pass_through, + fields=fields, + ) + + req = self._build_request_async( + method="GET", + path="/crm/lists", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.CrmListsAllGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 900000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="crm.listsAll", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + def next_func() -> Optional[models.CrmListsAllResponse]: + body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) + next_cursor = JSONPath("$.meta.cursors.next").parse(body) + + if len(next_cursor) == 0: + return None + + next_cursor = next_cursor[0] + if next_cursor is None or str(next_cursor).strip() == "": + return None + + return self.list( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + cursor=next_cursor, + limit=limit, + pass_through=pass_through, + fields=fields, + retries=retries, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.CrmListsAllResponse( + get_lists_response=unmarshal_json_response( + Optional[models.GetListsResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + next=next_func, + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.CrmListsAllResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + next=next_func, + ) + + raise models.APIError("Unexpected response received", http_res) + + def get( + self, + *, + id: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + raw: Optional[bool] = False, + fields: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CrmListsOneResponse: + r"""Get list + + Get list + + :param id: ID of the record you are acting upon. + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param raw: Include raw response. Mostly used for debugging purposes + :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.CrmListsOneRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + raw=raw, + fields=fields, + ) + + req = self._build_request( + method="GET", + path="/crm/lists/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.CrmListsOneGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 900000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="crm.listsOne", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.CrmListsOneResponse( + get_list_response=unmarshal_json_response( + Optional[models.GetListResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.CrmListsOneResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) + + async def get_async( + self, + *, + id: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + raw: Optional[bool] = False, + fields: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CrmListsOneResponse: + r"""Get list + + Get list + + :param id: ID of the record you are acting upon. + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param raw: Include raw response. Mostly used for debugging purposes + :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.CrmListsOneRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + raw=raw, + fields=fields, + ) + + req = self._build_request_async( + method="GET", + path="/crm/lists/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.CrmListsOneGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 900000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="crm.listsOne", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.CrmListsOneResponse( + get_list_response=unmarshal_json_response( + Optional[models.GetListResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.CrmListsOneResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) diff --git a/src/apideck_unify/locations.py b/src/apideck_unify/locations.py index da6a7b23..954077b2 100644 --- a/src/apideck_unify/locations.py +++ b/src/apideck_unify/locations.py @@ -28,6 +28,7 @@ def list( models.AccountingLocationsFilterTypedDict, ] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -46,6 +47,7 @@ def list( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -73,6 +75,7 @@ def list( filter_=utils.get_pydantic_model( filter_, Optional[models.AccountingLocationsFilter] ), + pass_through=pass_through, ) req = self._build_request( @@ -143,6 +146,7 @@ def next_func() -> Optional[models.AccountingLocationsAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) @@ -214,6 +218,7 @@ async def list_async( models.AccountingLocationsFilterTypedDict, ] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -232,6 +237,7 @@ async def list_async( :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -259,6 +265,7 @@ async def list_async( filter_=utils.get_pydantic_model( filter_, Optional[models.AccountingLocationsFilter] ), + pass_through=pass_through, ) req = self._build_request_async( @@ -329,6 +336,7 @@ def next_func() -> Optional[models.AccountingLocationsAllResponse]: limit=limit, fields=fields, filter_=filter_, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/models/__init__.py b/src/apideck_unify/models/__init__.py index 1f4b4cd6..2aca0af1 100644 --- a/src/apideck_unify/models/__init__.py +++ b/src/apideck_unify/models/__init__.py @@ -1566,6 +1566,10 @@ ConnectionDefaultsTypedDict, ConnectionInput, ConnectionInputTypedDict, + ConnectionMetadata, + ConnectionMetadataInput, + ConnectionMetadataInputTypedDict, + ConnectionMetadataTypedDict, ConnectionStatus, ConnectionTypedDict, ConnectionValue, @@ -1678,7 +1682,12 @@ from .consentrecord_input import ConsentRecordInput, ConsentRecordInputTypedDict from .consentstate import ConsentState from .consumer import Consumer, ConsumerTypedDict - from .consumerconnection import ConsumerConnection, ConsumerConnectionTypedDict + from .consumerconnection import ( + ConsumerConnection, + ConsumerConnectionTypedDict, + Metadata, + MetadataTypedDict, + ) from .consumermetadata import ConsumerMetadata, ConsumerMetadataTypedDict from .consumerrequestcountsindaterangeresponse import ( ConsumerRequestCountsInDateRangeResponse, @@ -2178,6 +2187,22 @@ CrmLeadsUpdateResponse, CrmLeadsUpdateResponseTypedDict, ) + from .crm_listsallop import ( + CrmListsAllGlobals, + CrmListsAllGlobalsTypedDict, + CrmListsAllRequest, + CrmListsAllRequestTypedDict, + CrmListsAllResponse, + CrmListsAllResponseTypedDict, + ) + from .crm_listsoneop import ( + CrmListsOneGlobals, + CrmListsOneGlobalsTypedDict, + CrmListsOneRequest, + CrmListsOneRequestTypedDict, + CrmListsOneResponse, + CrmListsOneResponseTypedDict, + ) from .crm_notesaddop import ( CrmNotesAddGlobals, CrmNotesAddGlobalsTypedDict, @@ -3457,6 +3482,8 @@ GetLedgerAccountsResponse, GetLedgerAccountsResponseTypedDict, ) + from .getlistresponse import GetListResponse, GetListResponseTypedDict + from .getlistsresponse import GetListsResponse, GetListsResponseTypedDict from .getlogsresponse import GetLogsResponse, GetLogsResponseTypedDict from .getmessageresponse import GetMessageResponse, GetMessageResponseTypedDict from .getmessagesresponse import GetMessagesResponse, GetMessagesResponseTypedDict @@ -4080,6 +4107,7 @@ ) from .linkedworktag import LinkedWorktag, LinkedWorktagTypedDict from .links import Links, LinksTypedDict + from .list import ListT, ListTTypedDict, ListType, ListVisibility from .log import ( Log, LogTypedDict, @@ -6237,6 +6265,10 @@ "ConnectionImportDataTypedDict", "ConnectionInput", "ConnectionInputTypedDict", + "ConnectionMetadata", + "ConnectionMetadataInput", + "ConnectionMetadataInputTypedDict", + "ConnectionMetadataTypedDict", "ConnectionState", "ConnectionStatus", "ConnectionTypedDict", @@ -6664,6 +6696,18 @@ "CrmLeadsUpdateRequestTypedDict", "CrmLeadsUpdateResponse", "CrmLeadsUpdateResponseTypedDict", + "CrmListsAllGlobals", + "CrmListsAllGlobalsTypedDict", + "CrmListsAllRequest", + "CrmListsAllRequestTypedDict", + "CrmListsAllResponse", + "CrmListsAllResponseTypedDict", + "CrmListsOneGlobals", + "CrmListsOneGlobalsTypedDict", + "CrmListsOneRequest", + "CrmListsOneRequestTypedDict", + "CrmListsOneResponse", + "CrmListsOneResponseTypedDict", "CrmNotesAddGlobals", "CrmNotesAddGlobalsTypedDict", "CrmNotesAddRequest", @@ -7598,6 +7642,10 @@ "GetLedgerAccountResponseTypedDict", "GetLedgerAccountsResponse", "GetLedgerAccountsResponseTypedDict", + "GetListResponse", + "GetListResponseTypedDict", + "GetListsResponse", + "GetListsResponseTypedDict", "GetLogsResponse", "GetLogsResponseTypedDict", "GetMessageResponse", @@ -8097,6 +8145,10 @@ "LinkedWorktagTypedDict", "Links", "LinksTypedDict", + "ListT", + "ListTTypedDict", + "ListType", + "ListVisibility", "LocationStatus", "Log", "LogTypedDict", @@ -8113,6 +8165,8 @@ "MessageTypedDict", "Meta", "MetaTypedDict", + "Metadata", + "MetadataTypedDict", "Mode", "NoResponseError", "NotFoundResponse", @@ -10079,6 +10133,10 @@ "ConnectionDefaultsTypedDict": ".connection", "ConnectionInput": ".connection", "ConnectionInputTypedDict": ".connection", + "ConnectionMetadata": ".connection", + "ConnectionMetadataInput": ".connection", + "ConnectionMetadataInputTypedDict": ".connection", + "ConnectionMetadataTypedDict": ".connection", "ConnectionStatus": ".connection", "ConnectionTypedDict": ".connection", "ConnectionValue": ".connection", @@ -10180,6 +10238,8 @@ "ConsumerTypedDict": ".consumer", "ConsumerConnection": ".consumerconnection", "ConsumerConnectionTypedDict": ".consumerconnection", + "Metadata": ".consumerconnection", + "MetadataTypedDict": ".consumerconnection", "ConsumerMetadata": ".consumermetadata", "ConsumerMetadataTypedDict": ".consumermetadata", "ConsumerRequestCountsInDateRangeResponse": ".consumerrequestcountsindaterangeresponse", @@ -10521,6 +10581,18 @@ "CrmLeadsUpdateRequestTypedDict": ".crm_leadsupdateop", "CrmLeadsUpdateResponse": ".crm_leadsupdateop", "CrmLeadsUpdateResponseTypedDict": ".crm_leadsupdateop", + "CrmListsAllGlobals": ".crm_listsallop", + "CrmListsAllGlobalsTypedDict": ".crm_listsallop", + "CrmListsAllRequest": ".crm_listsallop", + "CrmListsAllRequestTypedDict": ".crm_listsallop", + "CrmListsAllResponse": ".crm_listsallop", + "CrmListsAllResponseTypedDict": ".crm_listsallop", + "CrmListsOneGlobals": ".crm_listsoneop", + "CrmListsOneGlobalsTypedDict": ".crm_listsoneop", + "CrmListsOneRequest": ".crm_listsoneop", + "CrmListsOneRequestTypedDict": ".crm_listsoneop", + "CrmListsOneResponse": ".crm_listsoneop", + "CrmListsOneResponseTypedDict": ".crm_listsoneop", "CrmNotesAddGlobals": ".crm_notesaddop", "CrmNotesAddGlobalsTypedDict": ".crm_notesaddop", "CrmNotesAddRequest": ".crm_notesaddop", @@ -11436,6 +11508,10 @@ "GetLedgerAccountResponseTypedDict": ".getledgeraccountresponse", "GetLedgerAccountsResponse": ".getledgeraccountsresponse", "GetLedgerAccountsResponseTypedDict": ".getledgeraccountsresponse", + "GetListResponse": ".getlistresponse", + "GetListResponseTypedDict": ".getlistresponse", + "GetListsResponse": ".getlistsresponse", + "GetListsResponseTypedDict": ".getlistsresponse", "GetLogsResponse": ".getlogsresponse", "GetLogsResponseTypedDict": ".getlogsresponse", "GetMessageResponse": ".getmessageresponse", @@ -11951,6 +12027,10 @@ "LinkedWorktagTypedDict": ".linkedworktag", "Links": ".links", "LinksTypedDict": ".links", + "ListT": ".list", + "ListTTypedDict": ".list", + "ListType": ".list", + "ListVisibility": ".list", "Log": ".log", "LogTypedDict": ".log", "Operation": ".log", diff --git a/src/apideck_unify/models/accounting_attachmentsallop.py b/src/apideck_unify/models/accounting_attachmentsallop.py index dfdf996a..4a1ecf89 100644 --- a/src/apideck_unify/models/accounting_attachmentsallop.py +++ b/src/apideck_unify/models/accounting_attachmentsallop.py @@ -29,7 +29,7 @@ import pydantic from pydantic import field_serializer, model_serializer from pydantic.functional_validators import PlainValidator -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -77,6 +77,8 @@ class AccountingAttachmentsAllRequestTypedDict(TypedDict): r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" fields: NotRequired[Nullable[str]] r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingAttachmentsAllRequest(BaseModel): @@ -143,6 +145,12 @@ class AccountingAttachmentsAllRequest(BaseModel): ] = UNSET r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @field_serializer("reference_type") def serialize_reference_type(self, value): if isinstance(value, str): @@ -163,6 +171,7 @@ def serialize_model(self, handler): "cursor", "limit", "fields", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_categoriesallop.py b/src/apideck_unify/models/accounting_categoriesallop.py index 3dfeaee9..a32f1c06 100644 --- a/src/apideck_unify/models/accounting_categoriesallop.py +++ b/src/apideck_unify/models/accounting_categoriesallop.py @@ -18,7 +18,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -64,6 +64,8 @@ class AccountingCategoriesAllRequestTypedDict(TypedDict): r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" filter_: NotRequired[CategoriesFilterTypedDict] r"""Apply filters""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingCategoriesAllRequest(BaseModel): @@ -126,6 +128,12 @@ class AccountingCategoriesAllRequest(BaseModel): ] = None r"""Apply filters""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -138,6 +146,7 @@ def serialize_model(self, handler): "limit", "fields", "filter", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_companiesallop.py b/src/apideck_unify/models/accounting_companiesallop.py index 74b7425a..7e2f5d53 100644 --- a/src/apideck_unify/models/accounting_companiesallop.py +++ b/src/apideck_unify/models/accounting_companiesallop.py @@ -17,7 +17,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -61,6 +61,8 @@ class AccountingCompaniesAllRequestTypedDict(TypedDict): r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" fields: NotRequired[Nullable[str]] r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingCompaniesAllRequest(BaseModel): @@ -116,6 +118,12 @@ class AccountingCompaniesAllRequest(BaseModel): ] = UNSET r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -127,6 +135,7 @@ def serialize_model(self, handler): "cursor", "limit", "fields", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_departmentsallop.py b/src/apideck_unify/models/accounting_departmentsallop.py index 8dfecbdf..5f817e9a 100644 --- a/src/apideck_unify/models/accounting_departmentsallop.py +++ b/src/apideck_unify/models/accounting_departmentsallop.py @@ -24,7 +24,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -70,6 +70,8 @@ class AccountingDepartmentsAllRequestTypedDict(TypedDict): r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" filter_: NotRequired[AccountingDepartmentsFilterTypedDict] r"""Apply filters""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingDepartmentsAllRequest(BaseModel): @@ -132,6 +134,12 @@ class AccountingDepartmentsAllRequest(BaseModel): ] = None r"""Apply filters""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -144,6 +152,7 @@ def serialize_model(self, handler): "limit", "fields", "filter", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_employeesallop.py b/src/apideck_unify/models/accounting_employeesallop.py index 388073e1..4a2f122d 100644 --- a/src/apideck_unify/models/accounting_employeesallop.py +++ b/src/apideck_unify/models/accounting_employeesallop.py @@ -24,7 +24,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -68,6 +68,8 @@ class AccountingEmployeesAllRequestTypedDict(TypedDict): r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" filter_: NotRequired[AccountingEmployeesFilterTypedDict] r"""Apply filters""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingEmployeesAllRequest(BaseModel): @@ -123,6 +125,12 @@ class AccountingEmployeesAllRequest(BaseModel): ] = None r"""Apply filters""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -134,6 +142,7 @@ def serialize_model(self, handler): "limit", "fields", "filter", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_expensecategoriesallop.py b/src/apideck_unify/models/accounting_expensecategoriesallop.py index 5de2cd4d..762e09e0 100644 --- a/src/apideck_unify/models/accounting_expensecategoriesallop.py +++ b/src/apideck_unify/models/accounting_expensecategoriesallop.py @@ -24,7 +24,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -68,6 +68,8 @@ class AccountingExpenseCategoriesAllRequestTypedDict(TypedDict): r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" filter_: NotRequired[ExpenseCategoriesFilterTypedDict] r"""Apply filters""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingExpenseCategoriesAllRequest(BaseModel): @@ -123,6 +125,12 @@ class AccountingExpenseCategoriesAllRequest(BaseModel): ] = None r"""Apply filters""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -134,6 +142,7 @@ def serialize_model(self, handler): "limit", "fields", "filter", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_expensereportsallop.py b/src/apideck_unify/models/accounting_expensereportsallop.py index c6ce643b..b7a05af5 100644 --- a/src/apideck_unify/models/accounting_expensereportsallop.py +++ b/src/apideck_unify/models/accounting_expensereportsallop.py @@ -21,7 +21,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -65,6 +65,8 @@ class AccountingExpenseReportsAllRequestTypedDict(TypedDict): r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" filter_: NotRequired[ExpenseReportsFilterTypedDict] r"""Apply filters""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingExpenseReportsAllRequest(BaseModel): @@ -120,6 +122,12 @@ class AccountingExpenseReportsAllRequest(BaseModel): ] = None r"""Apply filters""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -131,6 +139,7 @@ def serialize_model(self, handler): "limit", "fields", "filter", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_expensesallop.py b/src/apideck_unify/models/accounting_expensesallop.py index 11dde9c9..c61101ff 100644 --- a/src/apideck_unify/models/accounting_expensesallop.py +++ b/src/apideck_unify/models/accounting_expensesallop.py @@ -18,7 +18,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -62,6 +62,8 @@ class AccountingExpensesAllRequestTypedDict(TypedDict): r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" filter_: NotRequired[ExpensesFilterTypedDict] r"""Apply filters""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingExpensesAllRequest(BaseModel): @@ -118,6 +120,12 @@ class AccountingExpensesAllRequest(BaseModel): ] = None r"""Apply filters""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -129,6 +137,7 @@ def serialize_model(self, handler): "cursor", "limit", "filter", + "pass_through", ] nullable_fields = ["cursor"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_locationsallop.py b/src/apideck_unify/models/accounting_locationsallop.py index 0160d7bc..e7e4207f 100644 --- a/src/apideck_unify/models/accounting_locationsallop.py +++ b/src/apideck_unify/models/accounting_locationsallop.py @@ -24,7 +24,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -70,6 +70,8 @@ class AccountingLocationsAllRequestTypedDict(TypedDict): r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" filter_: NotRequired[AccountingLocationsFilterTypedDict] r"""Apply filters""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingLocationsAllRequest(BaseModel): @@ -132,6 +134,12 @@ class AccountingLocationsAllRequest(BaseModel): ] = None r"""Apply filters""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -144,6 +152,7 @@ def serialize_model(self, handler): "limit", "fields", "filter", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_quotesallop.py b/src/apideck_unify/models/accounting_quotesallop.py index c2ef1e11..ede6cba4 100644 --- a/src/apideck_unify/models/accounting_quotesallop.py +++ b/src/apideck_unify/models/accounting_quotesallop.py @@ -18,7 +18,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -62,6 +62,8 @@ class AccountingQuotesAllRequestTypedDict(TypedDict): r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" filter_: NotRequired[QuotesFilterTypedDict] r"""Apply filters""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingQuotesAllRequest(BaseModel): @@ -118,6 +120,12 @@ class AccountingQuotesAllRequest(BaseModel): ] = None r"""Apply filters""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -129,6 +137,7 @@ def serialize_model(self, handler): "cursor", "limit", "filter", + "pass_through", ] nullable_fields = ["cursor"] null_default_fields = [] diff --git a/src/apideck_unify/models/accounting_subsidiariesallop.py b/src/apideck_unify/models/accounting_subsidiariesallop.py index 10c72577..aab3a143 100644 --- a/src/apideck_unify/models/accounting_subsidiariesallop.py +++ b/src/apideck_unify/models/accounting_subsidiariesallop.py @@ -20,7 +20,7 @@ from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic from pydantic import model_serializer -from typing import Callable, Optional +from typing import Any, Callable, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -64,6 +64,8 @@ class AccountingSubsidiariesAllRequestTypedDict(TypedDict): r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" fields: NotRequired[Nullable[str]] r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" class AccountingSubsidiariesAllRequest(BaseModel): @@ -119,6 +121,12 @@ class AccountingSubsidiariesAllRequest(BaseModel): ] = UNSET r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -130,6 +138,7 @@ def serialize_model(self, handler): "cursor", "limit", "fields", + "pass_through", ] nullable_fields = ["cursor", "fields"] null_default_fields = [] diff --git a/src/apideck_unify/models/connection.py b/src/apideck_unify/models/connection.py index 61881bd1..d0ec0ce7 100644 --- a/src/apideck_unify/models/connection.py +++ b/src/apideck_unify/models/connection.py @@ -25,7 +25,8 @@ ) from apideck_unify.utils import validate_open_enum from enum import Enum -from pydantic import field_serializer, model_serializer +import pydantic +from pydantic import ConfigDict, field_serializer, model_serializer from pydantic.functional_validators import PlainValidator from typing import Any, Dict, List, Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict @@ -39,6 +40,33 @@ class ConnectionStatus(str, Enum, metaclass=utils.OpenEnumMeta): REQUESTED = "requested" +class ConnectionMetadataTypedDict(TypedDict): + r"""Attach your own consumer specific metadata""" + + company_id: NotRequired[str] + r"""Normalized identifier of the authorized organization, copied from the connector-specific setting (e.g. Xero tenant_id, QuickBooks realm_id, NetSuite account_id).""" + + +class ConnectionMetadata(BaseModel): + r"""Attach your own consumer specific metadata""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + company_id: Optional[str] = None + r"""Normalized identifier of the authorized organization, copied from the connector-specific setting (e.g. Xero tenant_id, QuickBooks realm_id, NetSuite account_id).""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + class Target(str, Enum, metaclass=utils.OpenEnumMeta): CUSTOM_FIELDS = "custom_fields" RESOURCE = "resource" @@ -146,7 +174,7 @@ class ConnectionTypedDict(TypedDict): r"""The OAuth revoke URI. Redirect your users to this URI to revoke this connection. Before you can use this URI, you must add `redirect_uri` as a query parameter. Your users will be redirected to this `redirect_uri` after they granted access to your app in the connector's UI.""" settings: NotRequired[Nullable[Dict[str, Any]]] r"""Connection settings. Values will persist to `form_fields` with corresponding id""" - metadata: NotRequired[Nullable[Dict[str, Any]]] + metadata: NotRequired[Nullable[ConnectionMetadataTypedDict]] r"""Attach your own consumer specific metadata""" form_fields: NotRequired[List[FormFieldTypedDict]] r"""The settings that are wanted to create a connection.""" @@ -242,7 +270,7 @@ class Connection(BaseModel): settings: OptionalNullable[Dict[str, Any]] = UNSET r"""Connection settings. Values will persist to `form_fields` with corresponding id""" - metadata: OptionalNullable[Dict[str, Any]] = UNSET + metadata: OptionalNullable[ConnectionMetadata] = UNSET r"""Attach your own consumer specific metadata""" form_fields: Optional[List[FormField]] = None @@ -441,6 +469,27 @@ def serialize_model(self, handler): return m +class ConnectionMetadataInputTypedDict(TypedDict): + r"""Attach your own consumer specific metadata""" + + +class ConnectionMetadataInput(BaseModel): + r"""Attach your own consumer specific metadata""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + class ConnectionDefaultsTypedDict(TypedDict): id: NotRequired[str] options: NotRequired[List[FormFieldOptionTypedDict]] @@ -471,7 +520,7 @@ class ConnectionInputTypedDict(TypedDict): r"""Whether the connection is enabled or not. You can enable or disable a connection using the Update Connection API.""" settings: NotRequired[Nullable[Dict[str, Any]]] r"""Connection settings. Values will persist to `form_fields` with corresponding id""" - metadata: NotRequired[Nullable[Dict[str, Any]]] + metadata: NotRequired[Nullable[ConnectionMetadataInputTypedDict]] r"""Attach your own consumer specific metadata""" configuration: NotRequired[List[ConnectionConfigurationTypedDict]] custom_mappings: NotRequired[List[CustomMappingInputTypedDict]] @@ -489,7 +538,7 @@ class ConnectionInput(BaseModel): settings: OptionalNullable[Dict[str, Any]] = UNSET r"""Connection settings. Values will persist to `form_fields` with corresponding id""" - metadata: OptionalNullable[Dict[str, Any]] = UNSET + metadata: OptionalNullable[ConnectionMetadataInput] = UNSET r"""Attach your own consumer specific metadata""" configuration: Optional[List[ConnectionConfiguration]] = None diff --git a/src/apideck_unify/models/consumerconnection.py b/src/apideck_unify/models/consumerconnection.py index f15d43fb..9710457c 100644 --- a/src/apideck_unify/models/consumerconnection.py +++ b/src/apideck_unify/models/consumerconnection.py @@ -13,12 +13,40 @@ UNSET_SENTINEL, ) from apideck_unify.utils import validate_open_enum -from pydantic import field_serializer, model_serializer +import pydantic +from pydantic import ConfigDict, field_serializer, model_serializer from pydantic.functional_validators import PlainValidator from typing import Any, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict +class MetadataTypedDict(TypedDict): + r"""Attach your own consumer specific metadata""" + + company_id: NotRequired[str] + r"""Normalized identifier of the authorized organization, copied from the connector-specific setting (e.g. Xero tenant_id, QuickBooks realm_id, NetSuite account_id).""" + + +class Metadata(BaseModel): + r"""Attach your own consumer specific metadata""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + company_id: Optional[str] = None + r"""Normalized identifier of the authorized organization, copied from the connector-specific setting (e.g. Xero tenant_id, QuickBooks realm_id, NetSuite account_id).""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + class ConsumerConnectionTypedDict(TypedDict): id: NotRequired[str] name: NotRequired[str] @@ -34,7 +62,7 @@ class ConsumerConnectionTypedDict(TypedDict): enabled: NotRequired[bool] settings: NotRequired[Nullable[Dict[str, Any]]] r"""Connection settings. Values will persist to `form_fields` with corresponding id""" - metadata: NotRequired[Nullable[Dict[str, Any]]] + metadata: NotRequired[Nullable[MetadataTypedDict]] r"""Attach your own consumer specific metadata""" created_at: NotRequired[str] updated_at: NotRequired[Nullable[str]] @@ -77,7 +105,7 @@ class ConsumerConnection(BaseModel): settings: OptionalNullable[Dict[str, Any]] = UNSET r"""Connection settings. Values will persist to `form_fields` with corresponding id""" - metadata: OptionalNullable[Dict[str, Any]] = UNSET + metadata: OptionalNullable[Metadata] = UNSET r"""Attach your own consumer specific metadata""" created_at: Optional[str] = None diff --git a/src/apideck_unify/models/crm_listsallop.py b/src/apideck_unify/models/crm_listsallop.py new file mode 100644 index 00000000..8f20501d --- /dev/null +++ b/src/apideck_unify/models/crm_listsallop.py @@ -0,0 +1,175 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getlistsresponse import GetListsResponse, GetListsResponseTypedDict +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .unexpectederrorresponse import ( + UnexpectedErrorResponse, + UnexpectedErrorResponseTypedDict, +) +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from pydantic import model_serializer +from typing import Any, Callable, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CrmListsAllGlobalsTypedDict(TypedDict): + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + + +class CrmListsAllGlobals(BaseModel): + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + +class CrmListsAllRequestTypedDict(TypedDict): + raw: NotRequired[bool] + r"""Include raw response. Mostly used for debugging purposes""" + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + service_id: NotRequired[str] + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + cursor: NotRequired[Nullable[str]] + r"""Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response.""" + limit: NotRequired[int] + r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + fields: NotRequired[Nullable[str]] + r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + + +class CrmListsAllRequest(BaseModel): + raw: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Include raw response. Mostly used for debugging purposes""" + + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + service_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-service-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + + cursor: Annotated[ + OptionalNullable[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = UNSET + r"""Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response.""" + + limit: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 20 + r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" + + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + + fields: Annotated[ + OptionalNullable[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = UNSET + r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = [ + "raw", + "consumerId", + "appId", + "serviceId", + "cursor", + "limit", + "pass_through", + "fields", + ] + nullable_fields = ["cursor", "fields"] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m + + +class CrmListsAllResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + get_lists_response: NotRequired[GetListsResponseTypedDict] + r"""Lists""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class CrmListsAllResponse(BaseModel): + next: Callable[[], Optional[CrmListsAllResponse]] + + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + get_lists_response: Optional[GetListsResponse] = None + r"""Lists""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/crm_listsoneop.py b/src/apideck_unify/models/crm_listsoneop.py new file mode 100644 index 00000000..21d10993 --- /dev/null +++ b/src/apideck_unify/models/crm_listsoneop.py @@ -0,0 +1,152 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getlistresponse import GetListResponse, GetListResponseTypedDict +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .unexpectederrorresponse import ( + UnexpectedErrorResponse, + UnexpectedErrorResponseTypedDict, +) +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from apideck_unify.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CrmListsOneGlobalsTypedDict(TypedDict): + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + + +class CrmListsOneGlobals(BaseModel): + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + +class CrmListsOneRequestTypedDict(TypedDict): + id: str + r"""ID of the record you are acting upon.""" + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + service_id: NotRequired[str] + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + raw: NotRequired[bool] + r"""Include raw response. Mostly used for debugging purposes""" + fields: NotRequired[Nullable[str]] + r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + + +class CrmListsOneRequest(BaseModel): + id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the record you are acting upon.""" + + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + service_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-service-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + + raw: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Include raw response. Mostly used for debugging purposes""" + + fields: Annotated[ + OptionalNullable[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = UNSET + r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["consumerId", "appId", "serviceId", "raw", "fields"] + nullable_fields = ["fields"] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m + + +class CrmListsOneResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + get_list_response: NotRequired[GetListResponseTypedDict] + r"""List""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class CrmListsOneResponse(BaseModel): + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + get_list_response: Optional[GetListResponse] = None + r"""List""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/getlistresponse.py b/src/apideck_unify/models/getlistresponse.py new file mode 100644 index 00000000..6d1b87db --- /dev/null +++ b/src/apideck_unify/models/getlistresponse.py @@ -0,0 +1,95 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .list import ListT, ListTTypedDict +from .meta import Meta, MetaTypedDict +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetListResponseTypedDict(TypedDict): + r"""List""" + + status_code: int + r"""HTTP Response Status Code""" + status: str + r"""HTTP Response Status""" + service: str + r"""Apideck ID of service provider""" + resource: str + r"""Unified API resource name""" + operation: str + r"""Operation performed""" + data: ListTTypedDict + meta: NotRequired[MetaTypedDict] + r"""Response metadata""" + raw: NotRequired[Nullable[Dict[str, Any]]] + r"""Raw response from the integration when raw=true query param is provided""" + + +class GetListResponse(BaseModel): + r"""List""" + + status_code: int + r"""HTTP Response Status Code""" + + status: str + r"""HTTP Response Status""" + + service: str + r"""Apideck ID of service provider""" + + resource: str + r"""Unified API resource name""" + + operation: str + r"""Operation performed""" + + data: ListT + + meta: Optional[Meta] = None + r"""Response metadata""" + + raw: Annotated[OptionalNullable[Dict[str, Any]], pydantic.Field(alias="_raw")] = ( + UNSET + ) + r"""Raw response from the integration when raw=true query param is provided""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["meta", "_raw"] + nullable_fields = ["_raw"] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m diff --git a/src/apideck_unify/models/getlistsresponse.py b/src/apideck_unify/models/getlistsresponse.py new file mode 100644 index 00000000..3ac972a1 --- /dev/null +++ b/src/apideck_unify/models/getlistsresponse.py @@ -0,0 +1,101 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .links import Links, LinksTypedDict +from .list import ListT, ListTTypedDict +from .meta import Meta, MetaTypedDict +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetListsResponseTypedDict(TypedDict): + r"""Lists""" + + status_code: int + r"""HTTP Response Status Code""" + status: str + r"""HTTP Response Status""" + service: str + r"""Apideck ID of service provider""" + resource: str + r"""Unified API resource name""" + operation: str + r"""Operation performed""" + data: List[ListTTypedDict] + raw: NotRequired[Nullable[Dict[str, Any]]] + r"""Raw response from the integration when raw=true query param is provided""" + meta: NotRequired[MetaTypedDict] + r"""Response metadata""" + links: NotRequired[LinksTypedDict] + r"""Links to navigate to previous or next pages through the API""" + + +class GetListsResponse(BaseModel): + r"""Lists""" + + status_code: int + r"""HTTP Response Status Code""" + + status: str + r"""HTTP Response Status""" + + service: str + r"""Apideck ID of service provider""" + + resource: str + r"""Unified API resource name""" + + operation: str + r"""Operation performed""" + + data: List[ListT] + + raw: Annotated[OptionalNullable[Dict[str, Any]], pydantic.Field(alias="_raw")] = ( + UNSET + ) + r"""Raw response from the integration when raw=true query param is provided""" + + meta: Optional[Meta] = None + r"""Response metadata""" + + links: Optional[Links] = None + r"""Links to navigate to previous or next pages through the API""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["_raw", "meta", "links"] + nullable_fields = ["_raw"] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m diff --git a/src/apideck_unify/models/list.py b/src/apideck_unify/models/list.py new file mode 100644 index 00000000..4a6a126a --- /dev/null +++ b/src/apideck_unify/models/list.py @@ -0,0 +1,224 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .customfield import CustomField, CustomFieldTypedDict +from apideck_unify import models, utils +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from apideck_unify.utils import validate_open_enum +from datetime import datetime +from enum import Enum +from pydantic import field_serializer, model_serializer +from pydantic.functional_validators import PlainValidator +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Whether the List is static (a fixed set of records) or dynamic (a saved segment that is automatically kept up to date based on filter criteria).""" + + STATIC = "static" + DYNAMIC = "dynamic" + + +class ListVisibility(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The visibility of the List. Which of these values a given connector can return depends on its native sharing model — see the connector-specific gotchas below for details.""" + + PRIVATE = "private" + SHARED = "shared" + PUBLIC = "public" + + +class ListTTypedDict(TypedDict): + id: str + r"""The unique identifier of the List.""" + name: str + r"""The name of the List.""" + description: NotRequired[Nullable[str]] + r"""The description of the List.""" + type: NotRequired[Nullable[ListType]] + r"""Whether the List is static (a fixed set of records) or dynamic (a saved segment that is automatically kept up to date based on filter criteria).""" + visibility: NotRequired[Nullable[ListVisibility]] + r"""The visibility of the List. Which of these values a given connector can return depends on its native sharing model — see the connector-specific gotchas below for details.""" + owner_id: NotRequired[Nullable[str]] + r"""The unique identifier of the user who owns the List.""" + filter_criteria: NotRequired[Nullable[Dict[str, Any]]] + r"""The filter criteria used to determine which records belong to a dynamic List. Shape is connector-native and passed through largely as-is (e.g. Close returns its own nested query-tree structure) rather than normalized to a common format.""" + record_count: NotRequired[Nullable[int]] + r"""The number of records currently in the List.""" + folder_id: NotRequired[Nullable[str]] + r"""The unique identifier of the folder the List is organized under.""" + object_type: NotRequired[Nullable[str]] + r"""The type of CRM records the List contains. Normalized to a lowercase plural noun for the vendor's standard object types (e.g. contacts, companies, opportunities, leads, tickets, campaigns, tasks, events); for vendor-specific or custom object types the raw downstream identifier is passed through unchanged, following the connector's native casing (e.g. a HubSpot custom objectTypeId like 2-12345 or a Salesforce custom object API name), so a raw value may not always be distinguishable from a normalized one. This field is intentionally open-ended — no closed enum is enforced.""" + is_dynamic: NotRequired[Nullable[bool]] + r"""Whether the List is dynamic, meaning its records are automatically kept up to date based on filter criteria. This is a boolean mirror of `type` (`true` when `type` is `dynamic`, `false` when `static`), provided for callers that prefer a boolean check over a string comparison.""" + is_favorite: NotRequired[Nullable[bool]] + r"""Whether the List has been marked as a favorite.""" + is_default: NotRequired[Nullable[bool]] + r"""Whether the List is a default List.""" + is_system: NotRequired[Nullable[bool]] + r"""Whether the List is a system-generated List.""" + custom_fields: NotRequired[List[CustomFieldTypedDict]] + tags: NotRequired[Nullable[List[str]]] + updated_by: NotRequired[Nullable[str]] + r"""The unique identifier of the user who last updated the List.""" + created_by: NotRequired[Nullable[str]] + r"""The unique identifier of the user who created the List.""" + updated_at: NotRequired[Nullable[datetime]] + r"""The date and time when the List was last updated.""" + created_at: NotRequired[Nullable[datetime]] + r"""The date and time when the List was created.""" + + +class ListT(BaseModel): + id: str + r"""The unique identifier of the List.""" + + name: str + r"""The name of the List.""" + + description: OptionalNullable[str] = UNSET + r"""The description of the List.""" + + type: Annotated[ + OptionalNullable[ListType], PlainValidator(validate_open_enum(False)) + ] = UNSET + r"""Whether the List is static (a fixed set of records) or dynamic (a saved segment that is automatically kept up to date based on filter criteria).""" + + visibility: Annotated[ + OptionalNullable[ListVisibility], PlainValidator(validate_open_enum(False)) + ] = UNSET + r"""The visibility of the List. Which of these values a given connector can return depends on its native sharing model — see the connector-specific gotchas below for details.""" + + owner_id: OptionalNullable[str] = UNSET + r"""The unique identifier of the user who owns the List.""" + + filter_criteria: OptionalNullable[Dict[str, Any]] = UNSET + r"""The filter criteria used to determine which records belong to a dynamic List. Shape is connector-native and passed through largely as-is (e.g. Close returns its own nested query-tree structure) rather than normalized to a common format.""" + + record_count: OptionalNullable[int] = UNSET + r"""The number of records currently in the List.""" + + folder_id: OptionalNullable[str] = UNSET + r"""The unique identifier of the folder the List is organized under.""" + + object_type: OptionalNullable[str] = UNSET + r"""The type of CRM records the List contains. Normalized to a lowercase plural noun for the vendor's standard object types (e.g. contacts, companies, opportunities, leads, tickets, campaigns, tasks, events); for vendor-specific or custom object types the raw downstream identifier is passed through unchanged, following the connector's native casing (e.g. a HubSpot custom objectTypeId like 2-12345 or a Salesforce custom object API name), so a raw value may not always be distinguishable from a normalized one. This field is intentionally open-ended — no closed enum is enforced.""" + + is_dynamic: OptionalNullable[bool] = UNSET + r"""Whether the List is dynamic, meaning its records are automatically kept up to date based on filter criteria. This is a boolean mirror of `type` (`true` when `type` is `dynamic`, `false` when `static`), provided for callers that prefer a boolean check over a string comparison.""" + + is_favorite: OptionalNullable[bool] = UNSET + r"""Whether the List has been marked as a favorite.""" + + is_default: OptionalNullable[bool] = UNSET + r"""Whether the List is a default List.""" + + is_system: OptionalNullable[bool] = UNSET + r"""Whether the List is a system-generated List.""" + + custom_fields: Optional[List[CustomField]] = None + + tags: OptionalNullable[List[str]] = UNSET + + updated_by: OptionalNullable[str] = UNSET + r"""The unique identifier of the user who last updated the List.""" + + created_by: OptionalNullable[str] = UNSET + r"""The unique identifier of the user who created the List.""" + + updated_at: OptionalNullable[datetime] = UNSET + r"""The date and time when the List was last updated.""" + + created_at: OptionalNullable[datetime] = UNSET + r"""The date and time when the List was created.""" + + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.ListType(value) + except ValueError: + return value + return value + + @field_serializer("visibility") + def serialize_visibility(self, value): + if isinstance(value, str): + try: + return models.ListVisibility(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = [ + "description", + "type", + "visibility", + "owner_id", + "filter_criteria", + "record_count", + "folder_id", + "object_type", + "is_dynamic", + "is_favorite", + "is_default", + "is_system", + "custom_fields", + "tags", + "updated_by", + "created_by", + "updated_at", + "created_at", + ] + nullable_fields = [ + "description", + "type", + "visibility", + "owner_id", + "filter_criteria", + "record_count", + "folder_id", + "object_type", + "is_dynamic", + "is_favorite", + "is_default", + "is_system", + "tags", + "updated_by", + "created_by", + "updated_at", + "created_at", + ] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m diff --git a/src/apideck_unify/models/webhookeventlogsfilter.py b/src/apideck_unify/models/webhookeventlogsfilter.py index e121f87a..3e633fa6 100644 --- a/src/apideck_unify/models/webhookeventlogsfilter.py +++ b/src/apideck_unify/models/webhookeventlogsfilter.py @@ -9,8 +9,9 @@ UNSET_SENTINEL, ) from apideck_unify.utils import FieldMetadata +from datetime import datetime from pydantic import model_serializer -from typing import Optional +from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,6 +29,20 @@ class WebhookEventLogsFilterTypedDict(TypedDict): consumer_id: NotRequired[Nullable[str]] entity_type: NotRequired[Nullable[str]] event_type: NotRequired[Nullable[str]] + start_date: NotRequired[Nullable[datetime]] + r"""Filter logs at or after this ISO 8601 date-time (inclusive).""" + end_date: NotRequired[Nullable[datetime]] + r"""Filter logs at or before this ISO 8601 date-time (inclusive). Must be on or after start_date.""" + success: NotRequired[Nullable[bool]] + r"""Filter by delivery success or failure.""" + status_code: NotRequired[Nullable[float]] + r"""Filter by a single HTTP status code. For backward compatibility - use status_codes for multiple values.""" + status_codes: NotRequired[Nullable[List[float]]] + r"""Filter by multiple HTTP status codes. Values must be between 100-599. Maximum 50 status codes allowed.""" + event_id: NotRequired[Nullable[str]] + r"""Filter by webhook event ID.""" + execution_attempt: NotRequired[Nullable[float]] + r"""Filter by the delivery attempt number.""" class WebhookEventLogsFilter(BaseModel): @@ -43,6 +58,31 @@ class WebhookEventLogsFilter(BaseModel): event_type: Annotated[OptionalNullable[str], FieldMetadata(query=True)] = UNSET + start_date: Annotated[OptionalNullable[datetime], FieldMetadata(query=True)] = UNSET + r"""Filter logs at or after this ISO 8601 date-time (inclusive).""" + + end_date: Annotated[OptionalNullable[datetime], FieldMetadata(query=True)] = UNSET + r"""Filter logs at or before this ISO 8601 date-time (inclusive). Must be on or after start_date.""" + + success: Annotated[OptionalNullable[bool], FieldMetadata(query=True)] = UNSET + r"""Filter by delivery success or failure.""" + + status_code: Annotated[OptionalNullable[float], FieldMetadata(query=True)] = UNSET + r"""Filter by a single HTTP status code. For backward compatibility - use status_codes for multiple values.""" + + status_codes: Annotated[ + OptionalNullable[List[float]], FieldMetadata(query=True) + ] = UNSET + r"""Filter by multiple HTTP status codes. Values must be between 100-599. Maximum 50 status codes allowed.""" + + event_id: Annotated[OptionalNullable[str], FieldMetadata(query=True)] = UNSET + r"""Filter by webhook event ID.""" + + execution_attempt: Annotated[OptionalNullable[float], FieldMetadata(query=True)] = ( + UNSET + ) + r"""Filter by the delivery attempt number.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -51,6 +91,13 @@ def serialize_model(self, handler): "consumer_id", "entity_type", "event_type", + "start_date", + "end_date", + "success", + "status_code", + "status_codes", + "event_id", + "execution_attempt", ] nullable_fields = [ "exclude_apis", @@ -58,6 +105,13 @@ def serialize_model(self, handler): "consumer_id", "entity_type", "event_type", + "start_date", + "end_date", + "success", + "status_code", + "status_codes", + "event_id", + "execution_attempt", ] null_default_fields = [] diff --git a/src/apideck_unify/models/webhookeventtype.py b/src/apideck_unify/models/webhookeventtype.py index 7a75245b..0d59fc39 100644 --- a/src/apideck_unify/models/webhookeventtype.py +++ b/src/apideck_unify/models/webhookeventtype.py @@ -111,6 +111,9 @@ class WebhookEventType(str, Enum, metaclass=utils.OpenEnumMeta): HRIS_COMPANY_CREATED = "hris.company.created" HRIS_COMPANY_UPDATED = "hris.company.updated" HRIS_COMPANY_DELETED = "hris.company.deleted" + HRIS_TIME_OFF_REQUEST_CREATED = "hris.time-off-request.created" + HRIS_TIME_OFF_REQUEST_UPDATED = "hris.time-off-request.updated" + HRIS_TIME_OFF_REQUEST_DELETED = "hris.time-off-request.deleted" FILE_STORAGE_FILE_CREATED = "file-storage.file.created" FILE_STORAGE_FILE_UPDATED = "file-storage.file.updated" FILE_STORAGE_FILE_DELETED = "file-storage.file.deleted" diff --git a/src/apideck_unify/quotes.py b/src/apideck_unify/quotes.py index 64cde0fb..6ed57d7c 100644 --- a/src/apideck_unify/quotes.py +++ b/src/apideck_unify/quotes.py @@ -25,6 +25,7 @@ def list( filter_: Optional[ Union[models.QuotesFilter, models.QuotesFilterTypedDict] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -42,6 +43,7 @@ def list( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -66,6 +68,7 @@ def list( cursor=cursor, limit=limit, filter_=utils.get_pydantic_model(filter_, Optional[models.QuotesFilter]), + pass_through=pass_through, ) req = self._build_request( @@ -135,6 +138,7 @@ def next_func() -> Optional[models.AccountingQuotesAllResponse]: cursor=next_cursor, limit=limit, filter_=filter_, + pass_through=pass_through, retries=retries, ) @@ -202,6 +206,7 @@ async def list_async( filter_: Optional[ Union[models.QuotesFilter, models.QuotesFilterTypedDict] ] = None, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -219,6 +224,7 @@ async def list_async( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param filter_: Apply filters + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -243,6 +249,7 @@ async def list_async( cursor=cursor, limit=limit, filter_=utils.get_pydantic_model(filter_, Optional[models.QuotesFilter]), + pass_through=pass_through, ) req = self._build_request_async( @@ -312,6 +319,7 @@ def next_func() -> Optional[models.AccountingQuotesAllResponse]: cursor=next_cursor, limit=limit, filter_=filter_, + pass_through=pass_through, retries=retries, ) diff --git a/src/apideck_unify/subsidiaries.py b/src/apideck_unify/subsidiaries.py index dc78fae7..508ffc4b 100644 --- a/src/apideck_unify/subsidiaries.py +++ b/src/apideck_unify/subsidiaries.py @@ -22,6 +22,7 @@ def list( cursor: OptionalNullable[str] = UNSET, limit: Optional[int] = 20, fields: OptionalNullable[str] = UNSET, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -39,6 +40,7 @@ def list( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -63,6 +65,7 @@ def list( cursor=cursor, limit=limit, fields=fields, + pass_through=pass_through, ) req = self._build_request( @@ -132,6 +135,7 @@ def next_func() -> Optional[models.AccountingSubsidiariesAllResponse]: cursor=next_cursor, limit=limit, fields=fields, + pass_through=pass_through, retries=retries, ) @@ -197,6 +201,7 @@ async def list_async( cursor: OptionalNullable[str] = UNSET, limit: Optional[int] = 20, fields: OptionalNullable[str] = UNSET, + pass_through: Optional[Dict[str, Any]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -214,6 +219,7 @@ async def list_async( :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -238,6 +244,7 @@ async def list_async( cursor=cursor, limit=limit, fields=fields, + pass_through=pass_through, ) req = self._build_request_async( @@ -307,6 +314,7 @@ def next_func() -> Optional[models.AccountingSubsidiariesAllResponse]: cursor=next_cursor, limit=limit, fields=fields, + pass_through=pass_through, retries=retries, )