diff --git a/custom_connectors/basic_auth/stripe_connector.rb b/custom_connectors/basic_auth/stripe_connector.rb deleted file mode 100644 index 69ab4eb1..00000000 --- a/custom_connectors/basic_auth/stripe_connector.rb +++ /dev/null @@ -1,920 +0,0 @@ -{ - title: "Stripe SDK", - - connection: { - fields: [ - { - name: "api_key", - control_type: "password", - optional: false, - label: "API Key", - hint: "Get your API key here" - }, - { - name: "api_version", - optional: true - } - ], - - authorization: { - type: "basic_auth", - - credentials: lambda do |connection| - user(connection["api_key"]) - if connection["api_version"].present? - headers("Stripe-Version" => connection["api_version"]) - end - end - }, - - base_uri: lambda do - "https://api.stripe.com" - end - }, - - object_definitions: { - customer: { - fields: lambda do - [ - { name: "id" }, - { name: "account_balance", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "default_source" }, - { name: "delinquent", type: "boolean" }, - { name: "description" }, - { name: "email" }, - { name: "discount", type: "object", properties: [ - { name: "customer" }, - { name: "subscription" }, - { name: "start", type: "integer" }, - { name: "end", type: "integer" }, - { name: "coupon", type: "object", properties: [ - { name: "id" }, - { name: "name" }, - { name: "amount_off", type: "integer" }, - { name: "percent_off", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "duration" }, - { name: "duration_in_months", type: "integer" }, - { name: "max_redemptions", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "redeem_by", type: "integer" }, - { name: "times_redeemed", type: "integer" }, - { name: "valid", type: "boolean" }, - ] } - ] }, - { name: "sources", type: "object", properties: [ - { name: "data", type: "array", of: "object", properties: [ - { name: "id" }, - { name: "name" }, - { name: "brand" }, - { name: "last4" }, - { name: "dynamic_last4" }, - { name: "exp_month" }, - { name: "exp_year" }, - { name: "country", label: "Card Country" }, - { name: "address_line1" }, - { name: "address_line2" }, - { name: "address_city" }, - { name: "address_state" }, - { name: "address_zip" }, - { name: "address_country" }, - { name: "cvc_check" }, - { name: "address_line1_check" }, - { name: "address_zip_check" }, - { name: "fingerprint" }, - { name: "funding" }, - { name: "tokenization_method" } - ] } - ] }, - { name: "subscriptions", type: "object", properties: [ - { name: "data", type: "array", of: "object", properties: [ - { name: "id" }, - { name: "status" }, - { name: "customer" }, - { name: "created", type: "integer" }, - { name: "canceled_at", type: "integer" }, - { name: "trial_start", type: "integer" }, - { name: "trial_end", type: "integer" }, - { name: "current_period_start", type: "integer" }, - { name: "current_period_end", type: "integer" }, - { name: "start", type: "integer" }, - { name: "ended_at", type: "integer" }, - { name: "cancel_at_period_end", type: "boolean" }, - { name: "quantity", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "application_fee_percent", type: "number" }, - { name: "tax_percent", type: "number" }, - { name: "plan", type: "object", properties: [ - { name: "id" }, - { name: "name" }, - { name: "amount", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "interval" }, - { name: "inteval_count", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "statement_descriptor" }, - { name: "trial_period_days", type: "integer" } - ] }, - { name: "discount", type: "object", properties: [ - { name: "customer" }, - { name: "subscription" }, - { name: "start", type: "integer" }, - { name: "end", type: "integer" }, - { name: "coupon", type: "object", properties: [ - { name: "id" }, - { name: "name" }, - { name: "amount_off", type: "integer" }, - { name: "percent_off", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "duration" }, - { name: "duration_in_months", type: "integer" }, - { name: "max_redemptions", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "redeem_by", type: "integer" }, - { name: "times_redeemed", type: "integer" }, - { name: "valid", type: "boolean" }, - ] } - ] }, - { name: "items", type: "object", properties: [ - { name: "data", type: "array", of: "object", properties: [ - { name: "id" }, - { name: "created", type: "integer" }, - { name: "quantity", type: "integer" }, - { name: "plan", type: "object", properties: [ - { name: "id" }, - { name: "name" }, - { name: "amount", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "interval" }, - { name: "inteval_count", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "statement_descriptor" }, - { name: "trial_period_days", type: "integer" } - ] } - ] } - ] } - ] } - ] } - ] - end - }, - - refund: { - fields: lambda do - [ - { name: "id" }, - { name: "amount", type: "integer" }, - { name: "balance_transaction" }, - { name: "charge" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "reason" }, - { name: "receipt_number" }, - { name: "status" } - ] - end - }, - - charge: { - fields: lambda do - [ - { name: "id" }, - { name: "amount", type: "integer" }, - { name: "amount_refunded", type: "integer" }, - { name: "application" }, - { name: "application_fee", type: "integer" }, - { name: "balance_transaction" }, - { name: "captured", type: "boolean" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "customer" }, - { name: "description" }, - { name: "failure_code" }, - { name: "failure_message" }, - { name: "invoice" }, - { name: "order" }, - { name: "transfer" }, - { name: "paid", type: "boolean" }, - { name: "refunded", type: "boolean" }, - { name: "receipt_email", control_type: "email" }, - { name: "receipt_number" }, - { name: "refunds", type: "object", properties: [ - { name: "data", type: "array", of: "object", properties: [ - { name: "id" }, - { name: "amount", type: "integer" }, - { name: "balance_transaction" }, - { name: "charge" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "reason" }, - { name: "receipt_number" }, - { name: "status" } - ] }, - ] }, - { name: "review" }, - { name: "status" } - ] - end - }, - - payout: { - fields: lambda do - [ - { name: "id" }, - { name: "amount", type: "integer" }, - { name: "arrival_date", type: "integer" }, - { name: "balance_transaction" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "description" }, - { name: "destination" }, - { name: "failure_balance_transaction" }, - { name: "failure_code" }, - { name: "livemode", type: "boolean" }, - { name: "method" }, - { name: "source_type" }, - { name: "statement_descriptor" }, - { name: "status" }, - { name: "type" } - ] - end - }, - - balance_transaction: { - fields: lambda do - [ - { name: "id" }, - { name: "amount", type: "integer" }, - { name: "available_on", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "description" }, - { name: "fee", type: "integer" }, - { name: "fee_details", type: "array", of: "object", properties: [ - { name: "amount", type: "integer" }, - { name: "currency" }, - { name: "description" }, - { name: "type" } - ] }, - { name: "source" }, - { name: "status" }, - { name: "type" } - ] - end - }, - - plan: { - fields: lambda do - [ - { name: "id" }, - { name: "name" }, - { name: "amount", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "interval" }, - { name: "inteval_count", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "statement_descriptor" }, - { name: "trial_period_days", type: "integer" } - ] - end - }, - - subscription: { - fields: lambda do |_object_definitions| - [ - { name: "id" }, - { name: "status" }, - { name: "customer" }, - { name: "created", type: "integer" }, - { name: "canceled_at", type: "integer" }, - { name: "trial_start", type: "integer" }, - { name: "trial_end", type: "integer" }, - { name: "current_period_start", type: "integer" }, - { name: "current_period_end", type: "integer" }, - { name: "start", type: "integer" }, - { name: "ended_at", type: "integer" }, - { name: "cancel_at_period_end", type: "boolean" }, - { name: "quantity", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "application_fee_percent", type: "number" }, - { name: "tax_percent", type: "number" }, - { name: "plan", type: "object", properties: [ - { name: "id" }, - { name: "name" }, - { name: "amount", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "interval" }, - { name: "inteval_count", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "statement_descriptor" }, - { name: "trial_period_days", type: "integer" } - ] }, - { name: "discount", type: "object", properties: [ - { name: "customer" }, - { name: "subscription" }, - { name: "start", type: "integer" }, - { name: "end", type: "integer" }, - { name: "coupon", type: "object", properties: [ - { name: "id" }, - { name: "name" }, - { name: "amount_off", type: "integer" }, - { name: "percent_off", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "duration" }, - { name: "duration_in_months", type: "integer" }, - { name: "max_redemptions", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "redeem_by", type: "integer" }, - { name: "times_redeemed", type: "integer" }, - { name: "valid", type: "boolean" }, - ] } - ] }, - { name: "items", type: "object", properties: [ - { name: "data", type: "array", of: "object", properties: [ - { name: "id" }, - { name: "created", type: "integer" }, - { name: "quantity", type: "integer" }, - { name: "plan", type: "object", properties: [ - { name: "id" }, - { name: "name" }, - { name: "amount", type: "integer" }, - { name: "created", type: "integer" }, - { name: "currency" }, - { name: "interval" }, - { name: "inteval_count", type: "integer" }, - { name: "livemode", type: "boolean" }, - { name: "statement_descriptor" }, - { name: "trial_period_days", type: "integer" } - ] } - ] } - ] } - ] - end - } - }, - - test: lambda do |_connection| - get("/v1/customers?limit=1") - end, - - actions: { - get_subscription: { - description: "Get subscription details " \ - "in Stripe", - - input_fields: lambda do - [ - { - name: "id", - label: "Subscription ID", - optional: false - } - ] - end, - - execute: lambda do |_connection, input| - get("/v1/subscriptions/#{input['id']}") - end, - - output_fields: lambda do |object_definitions| - object_definitions["subscription"] - end, - - sample_output: lambda do |_connection| - get("/v1/subscriptions?limit=1")["data"].first || {} - end - }, - - search_subscriptions: { - description: "Search subscriptions in " \ - "Stripe", - - input_fields: lambda do - [ - { - name: "customer", - label: "Customer ID", - optional: true, - sticky: true - }, - { - name: "starting_after", - label: "Starting After", - hint: "If you make a search request and receive 100 objects, you " \ - "can specify the ID of last charge here to fetch the next page " \ - "of the list", - optional: true - }, - { - name: "ending_before", - label: "Ending Before", - hint: "If you make a search request and receive 100 objects, you " \ - "can specify the ID of last charge here to fetch the previous " \ - "page of the list", - optional: true - }, - { - name: "status", - label: "Status", - hint: "The status of the subscriptions to retrieve. One of: " \ - "trialing, active, past_due, unpaid, canceled, or all.", - type: "string", - control_type: "select", - pick_list: "statuses", - optional: true, - toggle_hint: "Select from list", - toggle_field: { - name: "status", - label: "Status", - type: "string", - control_type: "text", - optional: true, - toggle_hint: "Use custom value", - hint: "The status of the subscriptions to retrieve. One of: " \ - "trialing, active, past_due, unpaid, canceled, or all." - }, - sticky: true - } - ] - end, - - execute: lambda do |_connection, input| - param = input.reject { |k, v| v.blank? || k == "status" } - if param.length > 0 - get("/v1/subscriptions", - limit: 100, - status: (input["status"] || "all")). - params(param) - else - get("/v1/subscriptions", - limit: 100, - status: (input["status"] || "all")) - end - end, - - output_fields: lambda do |object_definitions| - [ - { name: "data", type: "array", of: "object", - properties: object_definitions["subscription"] } - ] - end, - - sample_output: lambda do |_connection| - get("/v1/subscriptions?limit=1") || {} - end - }, - - get_customer: { - description: "Get customer details in " \ - "Stripe", - - input_fields: lambda do - [ - { - name: "id", - label: "Customer ID", - optional: false - } - ] - end, - - execute: lambda do |_connection, input| - get("/v1/customers/#{input['id']}") - end, - - output_fields: lambda do |object_definitions| - object_definitions["customer"] - end, - - sample_output: lambda do |_connection| - get("/v1/customers?limit=1")["data"].first || {} - end - }, - - get_charge: { - description: "Get charges details in " \ - "Stripe", - - input_fields: lambda do - [ - { - name: "id", - label: "Charge ID", - optional: false - } - ] - end, - - execute: lambda do |_connection, input| - get("/v1/charges/#{input['id']}") - end, - - output_fields: lambda do |object_definitions| - object_definitions["charge"] - end, - - sample_output: lambda do |_connection| - get("/v1/charges?limit=1")["data"].first || {} - end - }, - - get_related_balance_transactions: { - description: "Get related balance transactions" \ - " in Stripe", - - input_fields: lambda do - [ - { - name: "payout", - label: "Payout ID", - optional: false - } - ] - end, - - execute: lambda do |_connection, input| - get("/v1/balance/history?limit=100"). - params(input) - end, - - output_fields: lambda do |object_definitions| - [ - { name: "data", type: "array", - properties: object_definitions["balance_transaction"] } - ] - end, - - sample_output: lambda do |_connection| - get("/v1/balance/history?limit=1") || {} - end - }, - - get_refund: { - description: "Get refund details in " \ - "Stripe", - - input_fields: lambda do - [ - { - name: "id", - label: "Refund ID", - optional: false - } - ] - end, - - execute: lambda do |_connection, input| - get("/v1/refunds/#{input['id']}") - end, - - output_fields: lambda do |object_definitions| - object_definitions["refund"] - end, - - sample_output: lambda do |_connection| - get("/v1/refunds?limit=1")["data"].first || {} - end - } - }, - - triggers: { - new_customer: { - description: "New customer in " \ - "Stripe", - - type: "paging_desc", - - input_fields: lambda do - [ - { - name: "since", - label: "Created after", - type: "date_time", - control_type: "date_time", - hint: "Retrieve customers created after this date. Leave blank " \ - "to retrieve all customers", - optional: true, - sticky: true - } - ] - end, - - poll: lambda do |_connection, input, next_page| - starting_after = next_page - - if starting_after.present? - response = get("/v1/customers?limit=100"). - params(starting_after: starting_after) - else - if input["since"].present? - param = { - created: { - gt: input["since"].to_i - } - } - end - - response = get("/v1/customers?limit=100", param) - end - - customers_list = response["data"] - - { - events: customers_list, - next_page: response["has_more"] ? customers_list.last["id"] : nil - } - end, - - document_id: lambda do |response| - response["id"] - end, - - sort_by: lambda do |response| - response["created"] - end, - - output_fields: lambda do |object_definitions| - object_definitions["customer"] - end, - - sample_output: lambda do |_connection| - get("/v1/customers?limit=1")["data"].first || {} - end - }, - - new_refund: { - description: "New refund in " \ - "Stripe", - - type: "paging_desc", - - input_fields: lambda do - [ - { - name: "since", - label: "Created after", - type: "date_time", - control_type: "date_time", - hint: "Retrieve refunds created after this date. Leave blank to " \ - "retrieve all refunds", - optional: true, - sticky: true - } - ] - end, - - poll: lambda do |_connection, input, next_page| - ending_before = next_page - - if ending_before.present? - response = get("/v1/refunds?limit=100"). - params(starting_after: ending_before) - else - if input["since"].present? - param = { - created: { - gt: input["since"].to_i - } - } - end - response = get("/v1/refunds?limit=100", param) - end - - refunds = response["data"] - - { - events: refunds, - next_page: response["has_more"] ? refunds.last["id"] : nil - } - end, - - document_id: lambda do |response| - response["id"] - end, - - sort_by: lambda do |response| - response["created"] - end, - - output_fields: lambda do |object_definitions| - object_definitions["refund"] - end, - - sample_output: lambda do |_connection| - get("/v1/refunds?limit=1")["data"].first || {} - end - }, - - new_charge: { - description: "New charges in " \ - "Stripe", - - type: "paging_desc", - - input_fields: lambda do - [ - { - name: "since", - label: "Created after", - type: "date_time", - control_type: "date_time", - hint: "Retrieve charges created after this date. Leave blank to " \ - "retrieve all charges", - optional: true, - sticky: true - } - ] - end, - - poll: lambda do |_connection, input, next_page| - ending_before = next_page - - if ending_before.present? - response = get("/v1/charges?limit=100"). - params(starting_after: ending_before) - else - if input["since"].present? - param = { - created: { - gt: input["since"].to_i - } - } - end - response = get("/v1/charges?limit=100", param) - end - - charges = response["data"] - - { - events: charges, - next_page: response["has_more"] ? charges.last["id"] : nil - } - end, - - document_id: lambda do |response| - response["id"] - end, - - sort_by: lambda do |response| - response["created"] - end, - - output_fields: lambda do |object_definitions| - object_definitions["charge"] - end, - - sample_output: lambda do |_connection| - get("/v1/charges?limit=1")["data"].first || {} - end - }, - - new_payout: { - description: "New payout in " \ - "Stripe", - - type: "paging_desc", - - input_fields: lambda do - [ - { - name: "since", - label: "Created after", - type: "date_time", - control_type: "date_time", - hint: "Retrieve payouts created after this date. Leave blank to " \ - "retrieve all payouts", - optional: true, - sticky: true - } - ] - end, - - poll: lambda do |_connection, input, next_page| - ending_before = next_page - - if ending_before.present? - response = get("/v1/payouts?limit=100"). - params(starting_after: ending_before) - else - if input["since"].present? - param = { - created: { - gt: input["since"].to_i - } - } - end - response = get("/v1/payouts?limit=100", param) - end - - payouts = response["data"] - - { - events: payouts, - next_page: response["has_more"] ? payouts.last["id"] : nil - } - end, - - document_id: lambda do |response| - response["id"] - end, - - sort_by: lambda do |response| - response["created"] - end, - - output_fields: lambda do |object_definitions| - object_definitions["payout"] - end, - - sample_output: lambda do |_connection| - get("/v1/payouts?limit=1")["data"].first || {} - end - }, - - new_balance_transaction: { - description: "New balance transaction in " \ - "Stripe", - - type: "paging_desc", - - input_fields: lambda do - [ - { - name: "since", - label: "Created after", - type: "date_time", - control_type: "date_time", - hint: "Retrieve balance transactions created after this date. " \ - "Leave blank to retrieve all balance transactions", - optional: true, - sticky: true - } - ] - end, - - poll: lambda do |_connection, input, next_page| - ending_before = next_page - - if ending_before.present? - response = get("/v1/balance/history?limit=100"). - params(starting_after: ending_before) - else - if input["since"].present? - param = { - created: { - gt: input["since"].to_i - } - } - end - response = get("/v1/balance/history?limit=100", param) - end - - balance_transaction = response["data"] - - { - events: balance_transaction, - next_page: response["has_more"] ? balance_transaction.last["id"] : nil - } - end, - - document_id: lambda do |response| - response["id"] - end, - - sort_by: lambda do |response| - response["created"] - end, - - output_fields: lambda do |object_definitions| - object_definitions["balance_transaction"] - end, - - sample_output: lambda do |_connection| - get("/v1/balance/history?limit=1")["data"].first || {} - end - } - }, - - pick_lists: { - statuses: lambda do - [ - %w[All all], - %w[Trialing trialing], - %w[Active active], - %w[Past\ Due past_due], - %w[Unpaid unpaid], - %w[Canceled canceled] - ] - end - } -}