bullet_train-outgoing_webhooks 1.0.5 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +12 -0
  3. data/app/controllers/account/webhooks/outgoing/endpoints_controller.rb +1 -0
  4. data/app/controllers/api/v1/webhooks/outgoing/endpoints_controller.rb +56 -0
  5. data/app/controllers/api/v1/webhooks/outgoing.rb +2 -0
  6. data/app/controllers/api/v1/webhooks.rb +2 -0
  7. data/app/controllers/api/v1.rb +2 -0
  8. data/app/models/concerns/webhooks/outgoing/endpoint_support.rb +5 -0
  9. data/app/models/concerns/webhooks/outgoing/event_support.rb +10 -1
  10. data/app/models/concerns/webhooks/outgoing/issuing_model.rb +3 -1
  11. data/app/models/concerns/webhooks/outgoing/uri_filtering.rb +1 -1
  12. data/app/models/webhooks/outgoing/event_type.rb +1 -1
  13. data/app/views/account/webhooks/outgoing/endpoints/_form.html.erb +2 -0
  14. data/app/views/api/v1/open_api/index.yaml.erb +31 -0
  15. data/app/views/api/v1/webhooks/outgoing/endpoints/_endpoint.json.jbuilder +9 -0
  16. data/app/views/api/v1/webhooks/outgoing/endpoints/index.json.jbuilder +1 -0
  17. data/app/views/api/v1/webhooks/outgoing/endpoints/show.json.jbuilder +1 -0
  18. data/config/locales/en/webhooks/outgoing/endpoints.en.yml +12 -0
  19. data/config/routes.rb +16 -0
  20. data/db/migrate/20221130063357_add_creative_concept_to_endpoints.rb +10 -0
  21. data/lib/bullet_train/outgoing_webhooks/engine.rb +0 -8
  22. data/lib/bullet_train/outgoing_webhooks/version.rb +1 -1
  23. metadata +11 -8
  24. data/app/controllers/api/v1/webhooks/outgoing/deliveries_endpoint.rb +0 -63
  25. data/app/controllers/api/v1/webhooks/outgoing/delivery_attempts_endpoint.rb +0 -65
  26. data/app/controllers/api/v1/webhooks/outgoing/endpoints_endpoint.rb +0 -119
  27. data/app/serializers/api/v1/webhooks/outgoing/delivery_attempt_serializer.rb +0 -16
  28. data/app/serializers/api/v1/webhooks/outgoing/delivery_serializer.rb +0 -14
  29. data/app/serializers/api/v1/webhooks/outgoing/endpoint_serializer.rb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4d3884adf8d199b92ccf09ca749e8237e86a421224de5b8b81cf5ab0d9f4329
4
- data.tar.gz: cec7b468644c484f8bcb0f4064b74764ab3e7b8873cb72ba5c8944009b95a576
3
+ metadata.gz: 23e370f35fe3576ece3f53bf90646d3a9123b21332fdb4d51c4c13114a39a68f
4
+ data.tar.gz: 478c93ba922ee9902b8ac0a596d7375d28d0ad0d06f7e4dc82406d15092683ee
5
5
  SHA512:
6
- metadata.gz: 98d7265e65165a0c2b55a0b2880063f00c72292e0a461e4bde667d54f077860f1b4861873f5131bd203e45b85ab03868822970071e626c34e2ed640059e5cc11
7
- data.tar.gz: f36d57ccd33ba9268a106ef22c1457560f9b171ff0533b4f8102301e5962691f827ffa437c7f13d3fd7ab847b1b626a9c6374cca45efbbcab228caf7c265d2a9
6
+ metadata.gz: ad5301b39cb85072c2f7554f74e6612a0fc49a8e81ea625530d170411105c9b5a252c6865f28036ff21edd93647c54fc135aa7584f996772411819a16e9029ca
7
+ data.tar.gz: d1089060d13d3847a172e44970004a9609f4ce7b12f0d3f6a7f5b3063ca7d99a4665ecd5f9ffefbd9e3cebe91d08986b49a3aa32af5de21e6ded26ad5c8593f4
data/Rakefile CHANGED
@@ -6,3 +6,15 @@ load "rails/tasks/engine.rake"
6
6
  load "rails/tasks/statistics.rake"
7
7
 
8
8
  require "bundler/gem_tasks"
9
+
10
+ require "rake/testtask"
11
+ require "standard/rake"
12
+
13
+ Rake::TestTask.new do |t|
14
+ t.libs << "test"
15
+ t.test_files = FileList["test/**/*_test.rb"]
16
+ t.verbose = true
17
+ t.warning = false
18
+ end
19
+
20
+ task default: %i[test standard]
@@ -67,6 +67,7 @@ class Account::Webhooks::Outgoing::EndpointsController < Account::ApplicationCon
67
67
  strong_params = params.require(:webhooks_outgoing_endpoint).permit(
68
68
  :name,
69
69
  :url,
70
+ :scaffolding_absolutely_abstract_creative_concept_id,
70
71
  # 🚅 super scaffolding will insert new fields above this line.
71
72
  event_type_ids: [],
72
73
  # 🚅 super scaffolding will insert new arrays above this line.
@@ -0,0 +1,56 @@
1
+ class Api::V1::Webhooks::Outgoing::EndpointsController < Api::V1::ApplicationController
2
+ account_load_and_authorize_resource :endpoint, through: :team, through_association: :webhooks_outgoing_endpoints
3
+
4
+ # GET /api/v1/teams/:team_id/webhooks/outgoing/endpoints
5
+ def index
6
+ end
7
+
8
+ # GET /api/v1/webhooks/outgoing/endpoints/:id
9
+ def show
10
+ end
11
+
12
+ # POST /api/v1/teams/:team_id/webhooks/outgoing/endpoints
13
+ def create
14
+ if @endpoint.save
15
+ render :show, status: :created, location: [:api, :v1, @endpoint]
16
+ else
17
+ render json: @endpoint.errors, status: :unprocessable_entity
18
+ end
19
+ end
20
+
21
+ # PATCH/PUT /api/v1/webhooks/outgoing/endpoints/:id
22
+ def update
23
+ if @endpoint.update(endpoint_params)
24
+ render :show
25
+ else
26
+ render json: @endpoint.errors, status: :unprocessable_entity
27
+ end
28
+ end
29
+
30
+ # DELETE /api/v1/webhooks/outgoing/endpoints/:id
31
+ def destroy
32
+ @endpoint.destroy
33
+ end
34
+
35
+ private
36
+
37
+ module StrongParameters
38
+ # Only allow a list of trusted parameters through.
39
+ def endpoint_params
40
+ strong_params = params.require(:webhooks_outgoing_endpoint).permit(
41
+ *permitted_fields,
42
+ :url,
43
+ :name,
44
+ # 🚅 super scaffolding will insert new fields above this line.
45
+ *permitted_arrays,
46
+ # 🚅 super scaffolding will insert new arrays above this line.
47
+ )
48
+
49
+ process_params(strong_params)
50
+
51
+ strong_params
52
+ end
53
+ end
54
+
55
+ include StrongParameters
56
+ end
@@ -0,0 +1,2 @@
1
+ module Api::V1::Webhooks::Outgoing
2
+ end
@@ -0,0 +1,2 @@
1
+ module Api::V1::Webhooks
2
+ end
@@ -0,0 +1,2 @@
1
+ module Api::V1
2
+ end
@@ -4,6 +4,7 @@ module Webhooks::Outgoing::EndpointSupport
4
4
 
5
5
  included do
6
6
  belongs_to BulletTrain::OutgoingWebhooks.parent_association
7
+ belongs_to :scaffolding_absolutely_abstract_creative_concept, optional: true, class_name: "Scaffolding::AbsolutelyAbstract::CreativeConcept"
7
8
 
8
9
  has_many :deliveries, class_name: "Webhooks::Outgoing::Delivery", dependent: :destroy, foreign_key: :endpoint_id
9
10
  has_many :events, -> { distinct }, through: :deliveries
@@ -27,6 +28,10 @@ module Webhooks::Outgoing::EndpointSupport
27
28
  Webhooks::Outgoing::EventType.all
28
29
  end
29
30
 
31
+ def creative_concepts
32
+ team.scaffolding_absolutely_abstract_creative_concepts
33
+ end
34
+
30
35
  def event_types
31
36
  event_type_ids.map { |id| Webhooks::Outgoing::EventType.find(id) }
32
37
  end
@@ -28,7 +28,16 @@ module Webhooks::Outgoing::EventSupport
28
28
  end
29
29
 
30
30
  def endpoints
31
- send(BulletTrain::OutgoingWebhooks.parent_association).webhooks_outgoing_endpoints.listening_for_event_type_id(event_type_id)
31
+ endpoints = send(BulletTrain::OutgoingWebhooks.parent_association).webhooks_outgoing_endpoints.listening_for_event_type_id(event_type_id)
32
+
33
+ case self.class.name
34
+ when "Scaffolding::AbsolutelyAbstract::CreativeConcept"
35
+ endpoints.where(scaffolding_absolutely_abstract_creative_concept_id: [object.id, nil])
36
+ when "Scaffolding::CompletelyConcrete::TangibleThing"
37
+ endpoints.where(scaffolding_absolutely_abstract_creative_concept_id: [object.absolutely_abstract_creative_concept_id, nil])
38
+ else
39
+ endpoints
40
+ end
32
41
  end
33
42
 
34
43
  def deliver
@@ -45,7 +45,9 @@ module Webhooks::Outgoing::IssuingModel
45
45
 
46
46
  def generate_webhook_perform(action)
47
47
  event_type = Webhooks::Outgoing::EventType.find_by(id: "#{self.class.name.underscore}.#{action}")
48
- data = "Api::V1::#{self.class.name}Serializer".constantize.new(self).serializable_hash[:data]
48
+ # TODO This is crazy that we generate JSON just to parse it. Can't be good for performance.
49
+ # Does Jbuilder support generating a hash instead of a JSON string?
50
+ data = JSON.parse(to_api_json)
49
51
  webhook = send(BulletTrain::OutgoingWebhooks.parent_association).webhooks_outgoing_events.create(event_type_id: event_type.id, subject: self, data: data)
50
52
  webhook.deliver
51
53
  end
@@ -58,7 +58,7 @@ module Webhooks::Outgoing::UriFiltering
58
58
 
59
59
  cached = Rails.cache.read(cache_key)
60
60
  if cached
61
- return cached == "invalid" ? nil : cached
61
+ return (cached == "invalid") ? nil : cached
62
62
  end
63
63
 
64
64
  begin
@@ -1,6 +1,6 @@
1
1
  class Webhooks::Outgoing::EventType < ApplicationHash
2
2
  self.data = YAML.load_file("config/models/webhooks/outgoing/event_types.yml").map do |topic, events|
3
- events.map { |event| event == "crud" ? ["created", "updated", "deleted"] : event }.flatten.map { |event| {id: "#{topic}.#{event}"} }
3
+ events.map { |event| (event == "crud") ? ["created", "updated", "deleted"] : event }.flatten.map { |event| {id: "#{topic}.#{event}"} }
4
4
  end.flatten
5
5
 
6
6
  def label_string
@@ -4,6 +4,8 @@
4
4
  <% with_field_settings form: form do %>
5
5
  <%= render 'shared/fields/text_field', method: :name, options: {autofocus: true} %>
6
6
  <%= render 'shared/fields/text_field', method: :url %>
7
+ <%= render 'shared/fields/super_select', method: :scaffolding_absolutely_abstract_creative_concept_id,
8
+ choices: [['None', '']] + @endpoint.creative_concepts.map { |event_type| [event_type.name, event_type.id] }, other_options: {search: true} %>
7
9
  <%= render 'shared/fields/super_select', method: :event_type_ids, html_options: {multiple: true},
8
10
  choices: @endpoint.valid_event_types.map { |event_type| [event_type.label_string, event_type.id] } %>
9
11
  <%# 🚅 super scaffolding will insert new fields above this line. %>
@@ -0,0 +1,31 @@
1
+ openapi: 3.1.0
2
+ info:
3
+ title: Bullet Train API
4
+ description: |
5
+ The baseline API of a new Bullet Train application.
6
+ license:
7
+ name: MIT
8
+ url: https://opensource.org/licenses/MIT
9
+ version: "<%= @version.upcase %>"
10
+ servers:
11
+ - url: <%= ENV["BASE_URL"] %>/api/<%= @version %>
12
+ components:
13
+ securitySchemes:
14
+ BearerAuth:
15
+ type: http
16
+ scheme: bearer
17
+ schemas:
18
+ <%= automatic_components_for Webhooks::Outgoing::Endpoint %>
19
+ <%# 🚅 super scaffolding will insert new components above this line. %>
20
+ parameters:
21
+ id:
22
+ name: id
23
+ in: path
24
+ required: true
25
+ schema:
26
+ type: string
27
+ security:
28
+ - BearerAuth: []
29
+ paths:
30
+ <%= automatic_paths_for Webhooks::Outgoing::Endpoint, Team %>
31
+ <%# 🚅 super scaffolding will insert new paths above this line. %>
@@ -0,0 +1,9 @@
1
+ json.extract! endpoint,
2
+ :id,
3
+ :team_id,
4
+ :url,
5
+ :name,
6
+ :event_type_ids,
7
+ # 🚅 super scaffolding will insert new fields above this line.
8
+ :created_at,
9
+ :updated_at
@@ -0,0 +1 @@
1
+ json.array! @endpoints, partial: "api/v1/webhooks/outgoing/endpoints/endpoint", as: :endpoint
@@ -0,0 +1 @@
1
+ json.partial! "api/v1/webhooks/outgoing/endpoints/endpoint", endpoint: @endpoint
@@ -24,6 +24,11 @@ en:
24
24
  label: *id
25
25
  heading: *id
26
26
 
27
+ team_id:
28
+ _: &team_id Team ID
29
+ label: *team_id
30
+ heading: *team_id
31
+
27
32
  name:
28
33
  _: &name Name
29
34
  label: *name
@@ -41,6 +46,12 @@ en:
41
46
  all: All Events
42
47
  event_types: *event_types
43
48
 
49
+ scaffolding_absolutely_abstract_creative_concept_id:
50
+ _: &scaffolding_absolutely_abstract_creative_concept_id Creative Concept
51
+ label: *scaffolding_absolutely_abstract_creative_concept_id
52
+ heading: *scaffolding_absolutely_abstract_creative_concept_id
53
+ placeholder: "Type your response here"
54
+
44
55
  # 🚅 super scaffolding will insert new fields above this line.
45
56
  created_at:
46
57
  _: &created_at Added
@@ -106,3 +117,4 @@ en:
106
117
  # 🚅 super scaffolding will insert new activerecord attributes above this line.
107
118
  created_at: *created_at
108
119
  updated_at: *updated_at
120
+ scaffolding_absolutely_abstract_creative_concept_id: *scaffolding_absolutely_abstract_creative_concept_id
data/config/routes.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  Rails.application.routes.draw do
2
+ extending = {only: []}
3
+
2
4
  namespace :account do
3
5
  shallow do
4
6
  resources BulletTrain::OutgoingWebhooks.parent_resource do
@@ -15,4 +17,18 @@ Rails.application.routes.draw do
15
17
  end
16
18
  end
17
19
  end
20
+
21
+ namespace :api do
22
+ namespace :v1 do
23
+ shallow do
24
+ resources :teams, extending do
25
+ namespace :webhooks do
26
+ namespace :outgoing do
27
+ resources :endpoints, defaults: {format: :json}
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
18
34
  end
@@ -0,0 +1,10 @@
1
+ class AddCreativeConceptToEndpoints < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_reference(
4
+ :webhooks_outgoing_endpoints,
5
+ :scaffolding_absolutely_abstract_creative_concept,
6
+ foreign_key: true,
7
+ index: {name: "index_endpoints_on_abstract_creative_concept_id"}
8
+ )
9
+ end
10
+ end
@@ -25,14 +25,6 @@ module BulletTrain
25
25
  audit_callback: ->(obj, uri) { Rails.logger.error("BlockedURI obj=#{obj.persisted? ? obj.to_global_id : "New #{obj.class}"} uri=#{uri}") }
26
26
  }
27
27
  end
28
-
29
- initializer "bullet_train.outgoing_webhooks.register_api_endpoints" do |app|
30
- if Object.const_defined?("BulletTrain::Api")
31
- BulletTrain::Api.endpoints << "Api::V1::Webhooks::Outgoing::EndpointsEndpoint"
32
- BulletTrain::Api.endpoints << "Api::V1::Webhooks::Outgoing::DeliveriesEndpoint"
33
- BulletTrain::Api.endpoints << "Api::V1::Webhooks::Outgoing::DeliveryAttemptsEndpoint"
34
- end
35
- end
36
28
  end
37
29
  end
38
30
  end
@@ -1,5 +1,5 @@
1
1
  module BulletTrain
2
2
  module OutgoingWebhooks
3
- VERSION = "1.0.5"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train-outgoing_webhooks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-24 00:00:00.000000000 Z
11
+ date: 2022-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard
@@ -67,9 +67,10 @@ files:
67
67
  - app/controllers/account/webhooks/outgoing/deliveries_controller.rb
68
68
  - app/controllers/account/webhooks/outgoing/delivery_attempts_controller.rb
69
69
  - app/controllers/account/webhooks/outgoing/endpoints_controller.rb
70
- - app/controllers/api/v1/webhooks/outgoing/deliveries_endpoint.rb
71
- - app/controllers/api/v1/webhooks/outgoing/delivery_attempts_endpoint.rb
72
- - app/controllers/api/v1/webhooks/outgoing/endpoints_endpoint.rb
70
+ - app/controllers/api/v1.rb
71
+ - app/controllers/api/v1/webhooks.rb
72
+ - app/controllers/api/v1/webhooks/outgoing.rb
73
+ - app/controllers/api/v1/webhooks/outgoing/endpoints_controller.rb
73
74
  - app/jobs/webhooks/outgoing/delivery_job.rb
74
75
  - app/jobs/webhooks/outgoing/generate_job.rb
75
76
  - app/models/concerns/webhooks/outgoing/delivery_attempt_support.rb
@@ -86,9 +87,6 @@ files:
86
87
  - app/models/webhooks/outgoing/endpoint.rb
87
88
  - app/models/webhooks/outgoing/event.rb
88
89
  - app/models/webhooks/outgoing/event_type.rb
89
- - app/serializers/api/v1/webhooks/outgoing/delivery_attempt_serializer.rb
90
- - app/serializers/api/v1/webhooks/outgoing/delivery_serializer.rb
91
- - app/serializers/api/v1/webhooks/outgoing/endpoint_serializer.rb
92
90
  - app/views/account/webhooks/outgoing/deliveries/_breadcrumbs.html.erb
93
91
  - app/views/account/webhooks/outgoing/deliveries/_delivery.json.jbuilder
94
92
  - app/views/account/webhooks/outgoing/deliveries/_form.html.erb
@@ -124,6 +122,10 @@ files:
124
122
  - app/views/account/webhooks/outgoing/endpoints/new.html.erb
125
123
  - app/views/account/webhooks/outgoing/endpoints/show.html.erb
126
124
  - app/views/account/webhooks/outgoing/endpoints/show.json.jbuilder
125
+ - app/views/api/v1/open_api/index.yaml.erb
126
+ - app/views/api/v1/webhooks/outgoing/endpoints/_endpoint.json.jbuilder
127
+ - app/views/api/v1/webhooks/outgoing/endpoints/index.json.jbuilder
128
+ - app/views/api/v1/webhooks/outgoing/endpoints/show.json.jbuilder
127
129
  - config/locales/en/webhooks/outgoing/deliveries.en.yml
128
130
  - config/locales/en/webhooks/outgoing/delivery_attempts.en.yml
129
131
  - config/locales/en/webhooks/outgoing/endpoints.en.yml
@@ -150,6 +152,7 @@ files:
150
152
  - db/migrate/20211127014001_migrate_event_types_on_webhooks_outgoing_events.rb
151
153
  - db/migrate/20211127015712_drop_webhooks_outgoing_endpoint_event_types.rb
152
154
  - db/migrate/20211127015713_drop_webhooks_outgoing_event_types.rb
155
+ - db/migrate/20221130063357_add_creative_concept_to_endpoints.rb
153
156
  - lib/bullet_train/outgoing_webhooks.rb
154
157
  - lib/bullet_train/outgoing_webhooks/engine.rb
155
158
  - lib/bullet_train/outgoing_webhooks/version.rb
@@ -1,63 +0,0 @@
1
- class Api::V1::Webhooks::Outgoing::DeliveriesEndpoint < Api::V1::Root
2
- helpers do
3
- params :endpoint_id do
4
- requires :endpoint_id, type: Integer, allow_blank: false, desc: "Endpoint ID"
5
- end
6
-
7
- params :id do
8
- requires :id, type: Integer, allow_blank: false, desc: "Delivery ID"
9
- end
10
-
11
- params :delivery do
12
- optional :event_id, type: String, desc: Api.heading(:event_id)
13
- optional :endpoint_url, type: String, desc: Api.heading(:endpoint_url)
14
- optional :delivered_at, type: DateTime, desc: Api.heading(:delivered_at)
15
- # 🚅 super scaffolding will insert new fields above this line.
16
- # 🚅 super scaffolding will insert new arrays above this line.
17
-
18
- # 🚅 super scaffolding will insert processing for new fields above this line.
19
- end
20
- end
21
-
22
- resource "webhooks/outgoing/endpoints", desc: Api.title(:collection_actions) do
23
- after_validation do
24
- load_and_authorize_api_resource Webhooks::Outgoing::Delivery
25
- end
26
-
27
- #
28
- # INDEX
29
- #
30
-
31
- desc Api.title(:index), &Api.index_desc
32
- params do
33
- use :endpoint_id
34
- end
35
- oauth2
36
- paginate per_page: 100
37
- get "/:endpoint_id/deliveries" do
38
- @paginated_deliveries = paginate @deliveries
39
- render @paginated_deliveries, serializer: Api.serializer
40
- end
41
- end
42
-
43
- resource "webhooks/outgoing/deliveries", desc: Api.title(:member_actions) do
44
- after_validation do
45
- load_and_authorize_api_resource Webhooks::Outgoing::Delivery
46
- end
47
-
48
- #
49
- # SHOW
50
- #
51
-
52
- desc Api.title(:show), &Api.show_desc
53
- params do
54
- use :id
55
- end
56
- oauth2
57
- route_param :id do
58
- get do
59
- render @delivery, serializer: Api.serializer
60
- end
61
- end
62
- end
63
- end
@@ -1,65 +0,0 @@
1
- class Api::V1::Webhooks::Outgoing::DeliveryAttemptsEndpoint < Api::V1::Root
2
- helpers do
3
- params :delivery_id do
4
- requires :delivery_id, type: Integer, allow_blank: false, desc: "Delivery ID"
5
- end
6
-
7
- params :id do
8
- requires :id, type: Integer, allow_blank: false, desc: "Delivery Attempt ID"
9
- end
10
-
11
- params :delivery_attempt do
12
- optional :response_code, type: String, desc: Api.heading(:response_code)
13
- optional :response_body, type: String, desc: Api.heading(:response_body)
14
- optional :response_message, type: String, desc: Api.heading(:response_message)
15
- optional :error_message, type: String, desc: Api.heading(:error_message)
16
- optional :attempt_number, type: String, desc: Api.heading(:attempt_number)
17
- # 🚅 super scaffolding will insert new fields above this line.
18
- # 🚅 super scaffolding will insert new arrays above this line.
19
-
20
- # 🚅 super scaffolding will insert processing for new fields above this line.
21
- end
22
- end
23
-
24
- resource "webhooks/outgoing/deliveries", desc: Api.title(:collection_actions) do
25
- after_validation do
26
- load_and_authorize_api_resource Webhooks::Outgoing::DeliveryAttempt
27
- end
28
-
29
- #
30
- # INDEX
31
- #
32
-
33
- desc Api.title(:index), &Api.index_desc
34
- params do
35
- use :delivery_id
36
- end
37
- oauth2
38
- paginate per_page: 100
39
- get "/:delivery_id/delivery_attempts" do
40
- @paginated_delivery_attempts = paginate @delivery_attempts
41
- render @paginated_delivery_attempts, serializer: Api.serializer
42
- end
43
- end
44
-
45
- resource "webhooks/outgoing/delivery_attempts", desc: Api.title(:member_actions) do
46
- after_validation do
47
- load_and_authorize_api_resource Webhooks::Outgoing::DeliveryAttempt
48
- end
49
-
50
- #
51
- # SHOW
52
- #
53
-
54
- desc Api.title(:show), &Api.show_desc
55
- params do
56
- use :id
57
- end
58
- oauth2
59
- route_param :id do
60
- get do
61
- render @delivery_attempt, serializer: Api.serializer
62
- end
63
- end
64
- end
65
- end
@@ -1,119 +0,0 @@
1
- class Api::V1::Webhooks::Outgoing::EndpointsEndpoint < Api::V1::Root
2
- helpers do
3
- params BulletTrain::OutgoingWebhooks.parent_association_id do
4
- requires BulletTrain::OutgoingWebhooks.parent_association_id, type: Integer, allow_blank: false, desc: "#{BulletTrain::OutgoingWebhooks.parent_class} ID"
5
- end
6
-
7
- params :id do
8
- requires :id, type: Integer, allow_blank: false, desc: "Endpoint ID"
9
- end
10
-
11
- params :endpoint do
12
- optional :name, type: String, desc: Api.heading(:name)
13
- optional :url, type: String, desc: Api.heading(:url)
14
- # 🚅 super scaffolding will insert new fields above this line.
15
- optional :event_type_ids, type: Array, desc: Api.heading(:event_type_ids)
16
- # 🚅 super scaffolding will insert new arrays above this line.
17
-
18
- # 🚅 super scaffolding will insert processing for new fields above this line.
19
- end
20
- end
21
-
22
- resource BulletTrain::OutgoingWebhooks.parent_resource, desc: Api.title(:collection_actions) do
23
- after_validation do
24
- load_and_authorize_api_resource Webhooks::Outgoing::Endpoint
25
- end
26
-
27
- #
28
- # INDEX
29
- #
30
-
31
- desc Api.title(:index), &Api.index_desc
32
- params do
33
- use BulletTrain::OutgoingWebhooks.parent_association_id
34
- end
35
- oauth2
36
- paginate per_page: 100
37
- get "/:#{BulletTrain::OutgoingWebhooks.parent_association_id}/webhooks/outgoing/endpoints" do
38
- @paginated_endpoints = paginate @endpoints
39
- render @paginated_endpoints, serializer: Api.serializer
40
- end
41
-
42
- #
43
- # CREATE
44
- #
45
-
46
- desc Api.title(:create), &Api.create_desc
47
- params do
48
- use BulletTrain::OutgoingWebhooks.parent_association_id
49
- use :endpoint
50
- end
51
- route_setting :api_resource_options, permission: :create
52
- oauth2 "write"
53
- post "/:#{BulletTrain::OutgoingWebhooks.parent_association_id}/webhooks/outgoing/endpoints" do
54
- if @endpoint.save
55
- render @endpoint, serializer: Api.serializer
56
- else
57
- record_not_saved @endpoint
58
- end
59
- end
60
- end
61
-
62
- resource "webhooks/outgoing/endpoints", desc: Api.title(:member_actions) do
63
- after_validation do
64
- load_and_authorize_api_resource Webhooks::Outgoing::Endpoint
65
- end
66
-
67
- #
68
- # SHOW
69
- #
70
-
71
- desc Api.title(:show), &Api.show_desc
72
- params do
73
- use :id
74
- end
75
- oauth2
76
- route_param :id do
77
- get do
78
- render @endpoint, serializer: Api.serializer
79
- end
80
- end
81
-
82
- #
83
- # UPDATE
84
- #
85
-
86
- desc Api.title(:update), &Api.update_desc
87
- params do
88
- use :id
89
- use :endpoint
90
- end
91
- route_setting :api_resource_options, permission: :update
92
- oauth2 "write"
93
- route_param :id do
94
- put do
95
- if @endpoint.update(declared(params, include_missing: false))
96
- render @endpoint, serializer: Api.serializer
97
- else
98
- record_not_saved @endpoint
99
- end
100
- end
101
- end
102
-
103
- #
104
- # DESTROY
105
- #
106
-
107
- desc Api.title(:destroy), &Api.destroy_desc
108
- params do
109
- use :id
110
- end
111
- route_setting :api_resource_options, permission: :destroy
112
- oauth2 "delete"
113
- route_param :id do
114
- delete do
115
- render @endpoint.destroy, serializer: Api.serializer
116
- end
117
- end
118
- end
119
- end
@@ -1,16 +0,0 @@
1
- class Api::V1::Webhooks::Outgoing::DeliveryAttemptSerializer < Api::V1::ApplicationSerializer
2
- set_type "webhooks/outgoing/delivery_attempt"
3
-
4
- attributes :id,
5
- :delivery_id,
6
- :response_code,
7
- :response_body,
8
- :response_message,
9
- :error_message,
10
- :attempt_number,
11
- # 🚅 super scaffolding will insert new fields above this line.
12
- :created_at,
13
- :updated_at
14
-
15
- belongs_to :delivery, serializer: Api::V1::Webhooks::Outgoing::DeliverySerializer
16
- end
@@ -1,14 +0,0 @@
1
- class Api::V1::Webhooks::Outgoing::DeliverySerializer < Api::V1::ApplicationSerializer
2
- set_type "webhooks/outgoing/delivery"
3
-
4
- attributes :id,
5
- :endpoint_id,
6
- :event_id,
7
- :endpoint_url,
8
- :delivered_at,
9
- # 🚅 super scaffolding will insert new fields above this line.
10
- :created_at,
11
- :updated_at
12
-
13
- belongs_to :endpoint, serializer: Api::V1::Webhooks::Outgoing::EndpointSerializer
14
- end
@@ -1,14 +0,0 @@
1
- class Api::V1::Webhooks::Outgoing::EndpointSerializer < Api::V1::ApplicationSerializer
2
- set_type "webhooks/outgoing/endpoint"
3
-
4
- attributes :id,
5
- :team_id,
6
- :name,
7
- :url,
8
- :event_type_ids,
9
- # 🚅 super scaffolding will insert new fields above this line.
10
- :created_at,
11
- :updated_at
12
-
13
- belongs_to :team, serializer: Api::V1::TeamSerializer
14
- end