Compare commits

...

782 Commits

Author SHA1 Message Date
Eric Allam 6fcfe6b62b Changeset: prerelease next packages 2023-03-13 12:26:47 +00:00
James Ritchie c593132663 Reimplemented the impersonation banner 2023-03-13 12:23:45 +00:00
Eric Allam ff7bdd7619 Add cloud related env vars to staging env 2023-03-13 11:41:40 +00:00
Eric Allam c229fa31fc Setup posthog site feedback widget 2023-03-13 11:28:22 +00:00
James Ritchie 632f76cbb9 Added the Org nav to the Repo Coming Soon page 2023-03-13 11:27:12 +00:00
Eric Allam 5dae509aa9 Fixed up a bunch of nav issues 2023-03-13 11:22:54 +00:00
James Ritchie 1b902dabfa Updated the repository coming soon page 2023-03-13 11:01:38 +00:00
Eric Allam a1043a3b28 Added coming soon page for the cloud hosting 2023-03-13 10:35:19 +00:00
James Ritchie 22c682bf4c Added a new Org side menu 2023-03-13 10:29:04 +00:00
Eric Allam 0b67b51ae4 Fix ESM error by dynamically importing ESM packages (chalk, terminal-link, etc.) 2023-03-12 20:35:57 +00:00
Eric Allam 1673d4527a Added KV store feature 2023-03-12 20:12:18 +00:00
James Ritchie 5e762a9cbf Moved request integration button to top right of page 2023-03-12 10:26:27 +00:00
Eric Allam 406be0107e A couple side menu fixes 2023-03-11 21:16:30 +00:00
James Ritchie 4ab4174cb2 Improved the layout of the settings page 2023-03-11 18:35:54 +00:00
James Ritchie 78e6ed9bfc Added some messaging for blank states 2023-03-11 18:27:31 +00:00
James Ritchie f813e59b0c Improved the state if you haven’t granted access to github yet 2023-03-11 18:16:26 +00:00
James Ritchie 2992a855f9 Added active states to the collapsed side menu 2023-03-11 17:53:28 +00:00
James Ritchie f172a0ee1a Added titles on hover for the compact menu 2023-03-11 17:38:15 +00:00
James Ritchie 3c74e4f5f6 organized imports 2023-03-11 17:38:04 +00:00
James Ritchie bf4eefe4fd Long titles now ellipsis in the menu header 2023-03-11 17:13:21 +00:00
James Ritchie 2e81d6fe20 Fixed page layouts when they have the secondary nav in them 2023-03-11 17:07:43 +00:00
James Ritchie 77f243a14a Fixed the app layout width 2023-03-11 16:37:46 +00:00
James Ritchie 4245c21248 Added a section title to the side menu 2023-03-11 16:37:35 +00:00
James Ritchie e6d276de03 Added a title to the top of the nav 2023-03-11 16:13:26 +00:00
Eric Allam 0e3c3a78d7 Add single run API endpoint 2023-03-11 15:39:34 +00:00
Eric Allam fa28005f40 Move around stuff for the new nav structure 2023-03-11 15:33:03 +00:00
Eric Allam c109a9f31c Add runs JSON endpoint 2023-03-10 18:38:46 +00:00
James Ritchie c1dd5e92fe Moved the github connect button to top right 2023-03-10 18:25:26 +00:00
James Ritchie 441183975c Updated the select repo page 2023-03-10 18:23:30 +00:00
Eric Allam 0f9c0a8d06 Improve the select repo experience a little bit 2023-03-10 17:58:32 +00:00
Eric Allam 5beba8f12e Fixes an issue where the trigger workflow ttl guard was preventing workflow runs from resuming after being disconnected 2023-03-10 17:58:32 +00:00
James Ritchie 9b7102605f Fixed the create new workflow page layout 2023-03-10 17:10:12 +00:00
James Ritchie 0618cd0d7a Improved the visibility of the copy CLI text button 2023-03-10 17:09:59 +00:00
James Ritchie bc7f11fb57 Improved the API Key messaging 2023-03-10 17:06:15 +00:00
James Ritchie 19d731eebb removed unused imports 2023-03-10 16:53:32 +00:00
James Ritchie e2b183bd96 Added better buttons to the header 2023-03-10 16:53:11 +00:00
James Ritchie 80709c5415 Improved button focus states 2023-03-10 16:52:54 +00:00
James Ritchie 22e3c7f5f2 Fixed height of AppBody 2023-03-10 16:38:37 +00:00
James Ritchie 843231c410 WIP Improving the side navigation for the app 2023-03-10 16:13:40 +00:00
James Ritchie 1a33bdd3ae Updated the side menu - removed redundant items 2023-03-10 16:13:40 +00:00
Eric Allam c0300c6bec Deal with project settings and environment vars, and disabling projects 2023-03-10 15:43:40 +00:00
James Ritchie bffa5ef0e2 Improvements to the Logs page 2023-03-09 18:52:31 +00:00
James Ritchie 4e95232d59 improved the markup for the deploy page info panel 2023-03-09 18:40:32 +00:00
James Ritchie ca64356f12 Select repo now has a state for ‘relevant’ 2023-03-09 18:38:25 +00:00
James Ritchie c2c1b0feb4 Improvement to the repo page 2023-03-09 16:30:06 +00:00
James Ritchie 57afaf1995 Improvements to the repo details panel 2023-03-09 16:05:27 +00:00
Eric Allam 4c965ed5a2 Fixed issue with pending project endlessly revalidating 2023-03-09 16:01:03 +00:00
James Ritchie 0462141e1b Improvements to the Overview and deploy pages 2023-03-09 15:52:29 +00:00
Eric Allam ce39397c57 Better format log dates 2023-03-09 15:39:07 +00:00
Eric Allam 55cb81f7af Implement the log page along with the log links 2023-03-09 15:31:38 +00:00
James Ritchie f7a4e69025 status icon improvements 2023-03-09 14:23:38 +00:00
Eric Allam 55ac0019b7 Couple tweaks to the logs 2023-03-09 14:22:35 +00:00
Eric Allam b87a3dd2ba More logging work and buttons for stoppping or cancelling a deployment 2023-03-09 14:02:03 +00:00
Eric Allam 41c751c081 Changing on logs are polled, and now polling for build logs as well 2023-03-09 14:01:28 +00:00
Eric Allam 1f34a22bd8 Update how we poll for logs and add build logs back in 2023-03-09 14:01:28 +00:00
James Ritchie 10ef03eee0 Coloured the log red if it’s an error 2023-03-09 13:17:33 +00:00
James Ritchie bef6de13db Added a new logs table 2023-03-09 13:10:29 +00:00
D-K-P bd356663cc Removed .dev from Acme 2023-03-09 11:53:01 +00:00
James Ritchie 1670c3e19b Compressed the info in the overview panel 2023-03-09 11:03:35 +00:00
James Ritchie aa35555356 Added a Stop button 2023-03-09 10:48:18 +00:00
James Ritchie 1520be20c4 Added a view build logs with disabled property 2023-03-09 10:33:03 +00:00
James Ritchie 9cd49a40d5 Show spinner if status is deploying, pending, building. Also added live reload indicator 2023-03-09 10:17:21 +00:00
James Ritchie d27f11e26c More status colour updates 2023-03-09 09:51:17 +00:00
James Ritchie 9aff64183b Updated status colours 2023-03-09 09:48:49 +00:00
James Ritchie 5e32c8498b New layout for the deployment page 2023-03-09 09:42:11 +00:00
Eric Allam bd2f2d442d Implement the select repo grouping by gtihub account 2023-03-09 09:11:27 +00:00
James Ritchie 328ff206d7 Updated deployListStatus 2023-03-09 09:07:25 +00:00
James Ritchie 774a0fe9e3 Added a Header 2023-03-08 20:52:23 +00:00
James Ritchie 3eb76739cc Added type=submit 2023-03-08 20:52:05 +00:00
James Ritchie f00f6ae1bd Improvements to the deployment overview page 2023-03-08 20:32:52 +00:00
James Ritchie 7798c0166d Added a set of icons, loading indicators and titles to use for the deployment status 2023-03-08 20:28:02 +00:00
James Ritchie 9c63687d56 Initial clean up of the deploy page 2023-03-08 20:28:01 +00:00
Eric Allam 28cad34c5f Deployment logs 2023-03-08 18:19:07 +00:00
James Ritchie 86d345bffc Improved the layout for the list of github repos 2023-03-08 15:07:15 +00:00
James Ritchie 9cdab61eaf Showing a conditional state if you have no repos connected yet 2023-03-08 14:00:37 +00:00
James Ritchie 48b35c47b4 Improvements to the Repository list 2023-03-08 13:00:57 +00:00
Eric Allam 349d7f38cc Added deploy and project list (live WIP) 2023-03-07 22:13:37 +00:00
Eric Allam 7cbc279407 Manual deploy and added a deployment version number 2023-03-07 16:24:32 +00:00
Eric Allam 301d500c3d Fixing the re-exporting of routes 2023-03-07 15:37:55 +00:00
Eric Allam 4150ba8786 If a repo is already in a project, then just link to it from the select repo page 2023-03-07 15:19:43 +00:00
Eric Allam f39bc44eec Projects
- Deploy a new VM when a push event comes through
- Live updating project overview page
2023-03-07 15:12:42 +00:00
Eric Allam 4fabd481e6 The repos that are included in a workflow are the most relevant repos 2023-03-07 15:12:42 +00:00
D-K-P a374338ac5 Added repo rename instructions to gh issues to slack / gh stars to slack 2023-03-07 10:05:33 +00:00
D-K-P a7337478d0 Added Resend queue jump instructions to the readme 2023-03-07 10:03:58 +00:00
James Ritchie a7b37e9f7b impersonate banner style fix 2023-03-03 15:14:35 +00:00
James Ritchie 48e0cff123 Lots of improvements to the app layout behaviour
Main improvements:

- You can have different footer if logged in or out
- Footers aren’t fixed to the bottom of the page if logged out
2023-03-03 15:14:35 +00:00
James Ritchie 8a4cc312a1 Templates and overview pages now viewable on logged in mobile 2023-03-03 15:14:35 +00:00
Eric Allam f008f803b8 Updating github app configuration works, and paginating all repos for an installation as well, and displaying a list of repos to deploy 2023-03-03 14:35:43 +00:00
Eric Allam b43224c353 Upgrade to remix v1.11.0 for streaming and defer support 2023-03-03 14:35:43 +00:00
Eric Allam 8bb9798ff4 Fire off an app installation callback 2023-03-03 14:35:43 +00:00
James Ritchie 86ae6f927a Fixed safari bug where h-full was shunting content off the screen 2023-03-03 11:53:35 +00:00
Eric Allam c0693ac508 Cleanup old github app stuff and octokit and prepare for installing new github app for cloud 2023-03-03 11:13:07 +00:00
Eric Allam ab512157a5 Added ability to patch all template repos and push the changes 2023-03-03 08:34:15 +00:00
Eric Allam 86475d4e3c Changeset: version (@trigger.dev/sdk v0.2.21) 2023-03-02 22:31:44 +00:00
Eric Allam c5084209eb Fix for metadata capture when using npm/yarn 2023-03-02 22:30:43 +00:00
Eric Allam eada69040c Bump notion 2023-03-02 22:30:43 +00:00
Eric Allam 6deabb21ba Bump notion 2023-03-02 22:30:43 +00:00
James Ritchie 2bb324752e Removed the Product Hunt Banner but kept it commented out for later 2023-03-02 18:05:59 +00:00
Eric Allam 174954511e Changeset: version (fixing integration package versioning) 2023-03-02 15:36:56 +00:00
Eric Allam 408bd6ddc8 Added a script to automatically update template repo @trigger.dev packages instead of having to do it manually 2023-03-02 15:34:53 +00:00
Eric Allam 1789d9d215 Use the caret semver for the SDK in all the other packages 2023-03-02 14:44:33 +00:00
Eric Allam f3ac17ad91 Use caret constraint for the sdk in airtable as well 2023-03-02 13:27:19 +00:00
Eric Allam 71d78805e7 Use a caret constraint for the SDK to prevent updating integration dependencies when the SDK bumps a minor version (github only) 2023-03-02 12:43:13 +00:00
Eric Allam 3012771a21 Remove unused argument 2023-03-02 12:29:56 +00:00
Eric Allam 5ec7198046 Send additional metadata about a workflow when initializing the host 2023-03-02 12:29:47 +00:00
D-K-P 60cb8d54c4 Added tooltips to sidebar and org page 2023-03-01 18:47:31 +00:00
D-K-P 9d7186eba5 Added sendgrid template 2023-03-01 17:42:32 +00:00
D-K-P 5401fa1acb Added basic cron template 2023-03-01 14:18:32 +00:00
Matt Aitken 79f21fd94e Fix for bad documentation url in Notion spec 2023-03-01 13:47:14 +00:00
James Ritchie fa7ec12434 Added a Product Hunt banner 2023-03-01 12:54:52 +00:00
Matt Aitken c6a668a5f6 Set is constant 2023-02-28 20:52:34 +00:00
Matt Aitken dd786845b7 Removed curly bracket from the end of the combined schema 2023-02-28 20:32:30 +00:00
Matt Aitken fee24168aa Revert "Added a save/cancel button for changing webhook secrets"
This reverts commit ce019c7b96.
2023-02-28 19:52:09 +00:00
Matt Aitken b344dfaaf8 Added the GitHub issue -> Notion template 2023-02-28 19:50:02 +00:00
James Ritchie ce019c7b96 Added a save/cancel button for changing webhook secrets 2023-02-28 18:19:22 +00:00
D-K-P 9a52afe1e2 Added new images for all the templates and increased their size on the template grid 2023-02-28 15:07:39 +00:00
Eric Allam 628726459a Added the supabase to loops template image 2023-02-28 15:04:44 +00:00
Matt Aitken 603c3953c6 Any action input that isn’t part of the params is put in the body 2023-02-28 14:27:55 +00:00
Matt Aitken 8a7795bd4d Don’t validate the action body 2023-02-28 14:27:55 +00:00
Matt Aitken 9202d3458a Added Notion production client id 2023-02-28 14:27:55 +00:00
Eric Allam fb98a4708f Added supabase to loops template 2023-02-28 14:07:04 +00:00
Matt Aitken b29039735b Fix for connection dropdowns only working for services (not the source) 2023-02-28 12:33:45 +00:00
Matt Aitken 4d5303b0ad Changeset version: @trigger.dev/notion@0.1.24 2023-02-28 12:33:45 +00:00
Matt Aitken c3f292a320 Changeset added: @trigger.dev/notion Far smaller SDK, by creating shared types 2023-02-28 12:33:45 +00:00
Matt Aitken cb414b448e Don’t generate intermediate schema 2023-02-28 12:33:45 +00:00
D-K-P 5ad6330868 Added discord > supabase image 2023-02-28 11:48:34 +00:00
Matt Aitken e8ee088f85 Generated Notion SDK 2023-02-28 11:13:45 +00:00
Matt Aitken 167b1d1db9 Generated Airtable 2023-02-28 11:06:44 +00:00
Matt Aitken a365b81915 Generated Sendgrid 2023-02-28 11:06:44 +00:00
Matt Aitken 697e8f930a Added Prettify to the inputs and outputs inline 2023-02-28 11:06:44 +00:00
Matt Aitken 0e0baa8af8 You can generate specific integrations now 2023-02-28 11:06:44 +00:00
Matt Aitken a82088c243 Autoreffer works deep to shallow so we get refs inside refs. Better auto-naming 2023-02-28 11:06:44 +00:00
Matt Aitken e4fc05924e Autoreffer now only refs after x occurences, works for string enums too 2023-02-28 11:06:44 +00:00
Matt Aitken b3a46212ee Generate the service and use the auto reffer, and output intermediate files for viewing 2023-02-28 11:06:44 +00:00
Matt Aitken dec790e4a3 AutoReffer improved 2023-02-28 11:06:44 +00:00
Eric Allam a146469d63 Fixed bug where a duplicate event ID would throw an error instead of returning a success 2023-02-28 09:35:19 +00:00
Matt Aitken e5a3bb8903 Automatically create references to de-duplicate objects 2023-02-27 23:12:45 +00:00
Matt Aitken b61b5054dc Type generator works with $refs 2023-02-27 23:12:35 +00:00
Matt Aitken b613f3bbfc Deal with undefined params where an endpoint has no input 2023-02-27 23:12:08 +00:00
Matt Aitken 800ae1d834 Added Notion to the list of packages 2023-02-27 23:11:53 +00:00
Matt Aitken d5d3786a97 Automatically set "Notion-Version" to "2022-06-28" so users don’t have to 2023-02-27 21:39:06 +00:00
Matt Aitken b90eeea1e8 Allow generating actions with some manipulation 2023-02-27 21:39:06 +00:00
Matt Aitken aa30013e05 Params go before body in the generated SDK 2023-02-27 21:39:06 +00:00
Matt Aitken eaf06638c3 Generating the docs and SDK now deals better with anyOf 2023-02-27 21:39:06 +00:00
Eric Allam 4834eabb9d Scroll restoration not working for some reason so need to do full reloads when going to a template page 2023-02-27 18:23:17 +00:00
Eric Allam 8aceb6418a Added supabase-to-discord template 2023-02-27 18:05:07 +00:00
Eric Allam da6062a20c Changeset: new version 2023-02-27 16:54:09 +00:00
Eric Allam b57241951b Fixed issue where default webhook schema wasn't being used which caused an error 2023-02-27 16:53:55 +00:00
Matt Aitken 6a1823b242 Installed packages 2023-02-27 15:12:45 +00:00
Matt Aitken 2ad039f867 Merge remote-tracking branch 'origin/integrations/notion' into dev
# Conflicts:
#	pnpm-lock.yaml
2023-02-27 15:12:17 +00:00
Matt Aitken 634ec6c1e3 Added Notion staging OAuth details 2023-02-27 15:11:38 +00:00
Matt Aitken a73ddb2dad Generated Notion SDK 2023-02-27 14:46:59 +00:00
Matt Aitken 0504667334 Combine allOf schemas before generating the types, much better results and docs 2023-02-27 14:46:41 +00:00
Matt Aitken 6d85eee0cd Generate the SDKs in sequence not parallel 2023-02-27 14:28:55 +00:00
Matt Aitken 1f43988ad9 Increased generate-integrations memory to 16GB… we need to optimise this at some point 2023-02-27 14:24:21 +00:00
Matt Aitken 0129cbb162 Generating docs works with allOf 2023-02-27 14:24:05 +00:00
Matt Aitken 0121e1b50d SDK input schema is now the merged object of params and body 2023-02-27 14:23:54 +00:00
Eric Allam 63b1c2237a Changeset: release new version 2023-02-27 14:03:29 +00:00
Eric Allam c72120eab0 Removed accidental log statement 2023-02-27 14:03:15 +00:00
Eric Allam 313b7163e8 Change from npm create trigger to npx create-trigger 2023-02-27 13:49:04 +00:00
Eric Allam b0e64937a0 Changeset: new version 2023-02-27 13:04:15 +00:00
Eric Allam 3a2cf0ddb7 Fixed the missing error message when logging invalid API key and improved the error message 2023-02-27 13:03:14 +00:00
Matt Aitken 0f90ea9455 getComments and createComment 2023-02-27 13:01:27 +00:00
Matt Aitken 6d2217bd18 updateDatabase 2023-02-27 12:48:39 +00:00
Eric Allam 1579cdbfb2 Changeset: release new version 2023-02-27 12:11:58 +00:00
James Ritchie f1e81137b7 Improved the copy for how to trigger your workflow 2023-02-27 12:10:50 +00:00
Matt Aitken 0f51328979 createDatabase 2023-02-27 12:03:43 +00:00
Matt Aitken aea812f621 queryDatabase 2023-02-27 11:59:45 +00:00
Eric Allam 45b2bea39f Changeset: version next.3 2023-02-27 11:35:08 +00:00
Eric Allam 4f47d03114 Added changeset 2023-02-27 11:35:08 +00:00
Eric Allam 618cca3304 Validate the API key (to better work with the templates and the CLI) 2023-02-27 11:35:08 +00:00
Matt Aitken 4fe573b397 getDatabase 2023-02-27 11:32:21 +00:00
Matt Aitken d338b95e7e deleteBlock 2023-02-27 11:26:28 +00:00
Matt Aitken 2d9bdb26d4 appendBlockChildren 2023-02-27 11:23:24 +00:00
Matt Aitken b660a4c07f Update block and get block children 2023-02-27 11:16:41 +00:00
James Ritchie 5706c3ab52 Improved the API information link 2023-02-27 11:14:46 +00:00
James Ritchie e8c81cafb8 Improved some of the Template’s title copy 2023-02-27 11:14:46 +00:00
Eric Allam a0d062c977 Changeset: version next.2 2023-02-27 11:10:06 +00:00
Eric Allam 87a3bbee8e Added a more helpful message when adding an API key 2023-02-27 11:09:38 +00:00
Matt Aitken 65aa6e4e4c Get block endpoint 2023-02-27 09:26:28 +00:00
Matt Aitken 0432a64357 Update page endpoint 2023-02-27 09:19:28 +00:00
Eric Allam a5ff50f737 Implement new API key sidebar and a couple other various fixes 2023-02-26 22:15:49 +00:00
James Ritchie 763dd8b55a Improved the environment panel in the side menu to be clearer 2023-02-26 19:10:06 +00:00
Matt Aitken c2eea6c2b6 Added todos with remaining endpoints 2023-02-26 18:56:07 +00:00
Matt Aitken 81bbae977f Fix for endpoints that return void 2023-02-26 18:53:25 +00:00
Matt Aitken 37bd8f4952 Separated the bot endpoint response so it doesn’t mess the SDK generation up 2023-02-26 18:47:10 +00:00
Matt Aitken 20d6c6fdfb Added typecheck to integrations 2023-02-26 18:37:11 +00:00
Matt Aitken ebc45b7f8d Fix for typecheck error in services 2023-02-26 18:37:05 +00:00
Matt Aitken 77f146210a Fixed generating successful responses schemas 2023-02-26 18:36:58 +00:00
Matt Aitken 18cb9c6bec Fix for badly named file 2023-02-26 18:36:40 +00:00
Matt Aitken dfd4966cb0 Removed validation when doing requests, changed the way we select the success/fail on a response 2023-02-26 18:24:13 +00:00
Matt Aitken d7384bf481 Nock file for creating a page 2023-02-26 18:23:25 +00:00
James Ritchie 9e5c687174 Improvements to the Org page api keys 2023-02-26 18:04:10 +00:00
James Ritchie dcbb0f5287 small padding fix 2023-02-26 17:54:52 +00:00
James Ritchie d64cfe5add Widened the pages displaying the Template grid 2023-02-26 17:40:21 +00:00
James Ritchie 1fa52f1c8c Added padding back to the template cards 2023-02-26 17:40:00 +00:00
Matt Aitken f7dfc712b5 Added content-type to the createPage spec 2023-02-26 17:37:47 +00:00
Matt Aitken 1cfb93ada9 Remove validation of the request body and params 2023-02-26 17:29:43 +00:00
James Ritchie ea28f3dd47 Added installation instructions to the npm copy button for a template 2023-02-26 17:29:00 +00:00
James Ritchie 2c563ce998 Improvements to the Container component for mobile 2023-02-26 17:28:31 +00:00
Matt Aitken 7437d9fbd6 Create page test – this crashes Node because the schema is so massive… 2023-02-26 17:27:11 +00:00
James Ritchie 7dd0102579 Fixed the public template page on mobile 2023-02-26 17:08:29 +00:00
Matt Aitken 16c152ec26 Updated Notion Nock files 2023-02-26 17:05:02 +00:00
James Ritchie 01bc7df3e2 Template Overview page sticky left column now works 2023-02-26 16:51:37 +00:00
Matt Aitken 92d4008cc2 Notion specs updated by pointing at new generated schemas. Tests passing. 2023-02-26 16:50:57 +00:00
James Ritchie 6d4f71d22c Improvements to the template grid 2023-02-26 16:46:01 +00:00
Matt Aitken 2770df644b Imported dependencies and formatted Notion schemas 2023-02-26 16:33:21 +00:00
James Ritchie cc002ef707 Increased the width of the template overview side column so you can see more package info 2023-02-26 16:06:38 +00:00
James Ritchie f552af517b Removed redundant class 2023-02-26 15:58:57 +00:00
James Ritchie 8aff958bd3 Copy fix 2023-02-26 15:57:06 +00:00
James Ritchie ad189b1f4b Improved the scroll bars on modals 2023-02-26 15:54:48 +00:00
Matt Aitken 7bebf919e2 Fixed imports and formatted some of the files 2023-02-26 15:39:43 +00:00
James Ritchie e54ba7cbed Improved the Create workflow page and moved some info into a modal 2023-02-26 15:39:10 +00:00
Matt Aitken 4b6e21d6d4 Split Notion schemas into more sensible sized files 2023-02-26 15:32:22 +00:00
Matt Aitken 21d70821de Massive Notion schema from SDK 2023-02-26 14:38:17 +00:00
Matt Aitken a4d3f1b61c Massive generated schema 2023-02-26 14:37:08 +00:00
Matt Aitken 42e297474c Delete old schemas 2023-02-26 14:37:00 +00:00
Matt Aitken a40afd55d2 Output the schema refs when generating a schema 2023-02-26 14:34:04 +00:00
Matt Aitken 621254d0ab Fleshed out the specs some more 2023-02-26 13:26:15 +00:00
Matt Aitken 0ff568843d make functions turn properties into optional 2023-02-26 13:26:03 +00:00
James Ritchie 1d056b5328 Updated the org page styles 2023-02-26 12:26:31 +00:00
Eric Allam cf7c413c87 Combine the workflow onboarding into one component and obfuscate the api key 2023-02-24 22:16:53 +00:00
Eric Allam ac87a634a3 Add in the apiKeys in the orgs list page, obfuscated, and obfuscate them in the SideMenu as well 2023-02-24 22:09:30 +00:00
Matt Aitken 1bc9bc9244 getPage is working 2023-02-24 19:18:35 +00:00
Matt Aitken 2fea9e5a6c Use a test Notion workspace so I can test all the integration features 2023-02-24 19:12:43 +00:00
Matt Aitken 2756bfe073 Notion search is working and performance is good (when a schema is cached) 2023-02-24 19:05:19 +00:00
Matt Aitken 165ca9cb0f Option to measure performance of validation and compiling 2023-02-24 19:04:46 +00:00
James Ritchie c9e411be9b Simplified the info on the template cards 2023-02-24 18:51:38 +00:00
James Ritchie ee4e181fc3 Added ability to copy env vars from the Org page 2023-02-24 18:51:38 +00:00
James Ritchie f51f8f3ece Added more styles to the copy text panel 2023-02-24 18:51:38 +00:00
Matt Aitken 840435284b Using ajv to compile on-demand and validate using JSON Schemas 2023-02-24 18:48:03 +00:00
D-K-P 12f4f3bc68 Changed blank starter and hello world images 2023-02-24 18:02:21 +00:00
Eric Allam 894a5dcb5d Pass through command flags 2023-02-24 17:58:05 +00:00
Matt Aitken d65ef5eb87 If schema validation fails on prod and it’s a 2xx status, let it through as a success and log validation error 2023-02-24 17:49:41 +00:00
Matt Aitken 71007b5f60 Added Sentry to the integrations service 2023-02-24 17:49:02 +00:00
Eric Allam 3af9b63a9c Changeset: release next.1 version 2023-02-24 17:34:09 +00:00
Eric Allam 0932ae7d89 Log out when a run first starts, as well as completes 2023-02-24 17:32:13 +00:00
Matt Aitken 43250c444e Added Notion database schema (748 lines 😳) 2023-02-24 17:14:28 +00:00
Eric Allam 12056d888b Update the docs for the new create-trigger cli 2023-02-24 16:36:50 +00:00
Eric Allam 63e004594c No workflows in the blank starter 2023-02-24 16:20:25 +00:00
James Ritchie ec3e98ca9f Updated the Orgs with more distinct icons 2023-02-24 16:12:48 +00:00
Matt Aitken 0ccc6d3729 Search is working with pages, but not databases yet 2023-02-24 16:12:05 +00:00
Eric Allam f3ffffd50b implement the New Workflow page and add the api key to the command to copy for templates and the main one 2023-02-24 15:59:34 +00:00
Eric Allam e6550d156e Convert basic starter to hello world and added isLive to templates to filter out the existing basic starter 2023-02-24 15:29:27 +00:00
James Ritchie ae550df37d Updated the Workflows Overview page if you have no workflows 2023-02-24 15:25:45 +00:00
James Ritchie 26ac1fa57c CopyText ignores default and propagation clicks 2023-02-24 15:25:45 +00:00
James Ritchie 14031a8c6e Title component now accepts className 2023-02-24 15:25:45 +00:00
James Ritchie 719ef2a3a9 Improved the grid template styles 2023-02-24 15:25:45 +00:00
Matt Aitken e779cff42a New nock responses 2023-02-24 15:05:07 +00:00
Matt Aitken 0b3c3758a7 Switched to using oauth for Notion 2023-02-24 15:05:00 +00:00
Matt Aitken ab351cbc8e Merge remote-tracking branch 'origin/nango-upgrade' into integrations/notion
# Conflicts:
#	apps/integrations/package.json
2023-02-24 14:56:06 +00:00
Matt Aitken dd4fc8c262 Added search endpoint but the current auth token is giving no results back 2023-02-24 14:54:56 +00:00
Matt Aitken a55acb6296 More page types and fixed Notion tests 2023-02-24 13:33:46 +00:00
Eric Allam aa295134ff Changeset: prerelease the next version 2023-02-24 13:29:36 +00:00
Eric Allam b2f14cbea3 Make the SDK a patch 2023-02-24 13:29:08 +00:00
Eric Allam 26e69cb659 Added cli changeset 2023-02-24 13:15:49 +00:00
Eric Allam 51f9bc9d72 Added handy links to the SDK when logging information about the workflows 2023-02-24 13:15:49 +00:00
Eric Allam 74a6a21c35 Adding the create-trigger CLI package 2023-02-24 13:15:49 +00:00
Matt Aitken 4cae6fed63 Added a lot more schemas for the page 2023-02-24 12:51:31 +00:00
James Ritchie b69058bfcb Style tweaks 2023-02-24 12:17:00 +00:00
James Ritchie 1c5d8a4c0b Updated the template page to include the npm copy panel, link to repo and docs 2023-02-24 11:53:48 +00:00
Matt Aitken 28c70ab9d1 Upgrade to the latest Nango – this will require a manual server migrate and testing 2023-02-24 11:34:29 +00:00
James Ritchie 15ab35c816 Added a new copy npm install values to the template cards 2023-02-24 11:31:51 +00:00
James Ritchie 1218320492 Added a new copy panel 2023-02-24 11:30:41 +00:00
Matt Aitken 9d65a1a2c3 Schema for page 2023-02-24 09:55:18 +00:00
Matt Aitken fc3e85f93e Made userId user_id instead. WIP on getPage 2023-02-24 09:55:12 +00:00
James Ritchie 80373c6874 Removed file for old steps 1, 2, 3 2023-02-24 09:54:22 +00:00
James Ritchie 590dd688a9 Fixed max width 2023-02-24 09:50:19 +00:00
James Ritchie f739f49209 First workflow onboarding step is now Choose a Template 2023-02-24 09:49:43 +00:00
James Ritchie dabf26c2c9 Added a message to Test page to make it clearer how to run tests 2023-02-24 09:37:30 +00:00
Matt Aitken 8252f3ef86 Revert "Using generated schemas…"
This reverts commit 7d78089275.
2023-02-24 08:32:15 +00:00
Matt Aitken 7d78089275 Using generated schemas… 2023-02-23 20:27:19 +00:00
Matt Aitken 5ae21f28c3 Removed log from typescript-to-json-schema generator 2023-02-23 20:26:57 +00:00
Eric Allam 173f88dcad Fixed the revalidator in the useEffect deps array causing tons of requests 2023-02-23 18:23:37 +00:00
Matt Aitken c2d8934820 Generate Schema TypeScript from TypeScript Types file 2023-02-23 16:32:22 +00:00
Matt Aitken 2edff18a59 Tool to generate TypeScript JSONSchemas from TypeScript types working 2023-02-23 13:56:59 +00:00
Matt Aitken fc94c78109 Work on generating schemas from TypeScript files 2023-02-23 13:46:40 +00:00
Eric Allam ee20f9212f Make the schema an optional param for customEvent and webhookEvent 2023-02-23 12:33:51 +00:00
Matt Aitken 77a99c226d WIP on Notion schemas… pages are complex 2023-02-23 12:07:26 +00:00
Matt Aitken 50921f1307 makeStringSchema: you can set a string as a const 2023-02-23 12:07:08 +00:00
James Ritchie 566fb54615 Fixed generic webhook panel not showing when it was connected 2023-02-22 17:57:47 +00:00
Eric Allam 100edb8abd Don’t require dotenv, instead use it in the dev command 2023-02-22 16:21:04 +00:00
Matt Aitken 160ab22f70 Added getBotInfo endpoint 2023-02-22 16:06:24 +00:00
Matt Aitken 0cf3ebfae3 First two Notion endpoints working with API key 2023-02-22 14:58:47 +00:00
Eric Allam 8cb08b63d2 Recreate the original changelog for generated packages 2023-02-22 12:47:15 +00:00
Matt Aitken 8767403a44 Notion authentication setup and first endpoint, but not tested yet 2023-02-22 12:43:13 +00:00
Matt Aitken 5f1ac75044 The CLI now deals with oauth with no scopes 2023-02-22 12:42:44 +00:00
James Ritchie 4f21aaef97 Removed Intercom 2023-02-22 11:30:52 +00:00
James Ritchie 8272363069 Added absolute path for the integrations link 2023-02-22 11:03:08 +00:00
James Ritchie 3e32802fdf Warp example infisical cmd fixed 2023-02-22 10:50:47 +00:00
James Ritchie 3e1c1138e5 Fix for integrations server env variables not being loaded on local 2023-02-22 10:50:31 +00:00
Matt Aitken 7d1e64cb01 WIP on API.fetch support 2023-02-22 09:47:21 +00:00
Matt Aitken 08abf25fd9 Added base url to services, for use by fetch 2023-02-22 09:46:49 +00:00
Matt Aitken 9c9a4caa20 Merge pull request #66 from triggerdotdev/features/new-overview-page
Improved overview page
2023-02-21 22:26:13 +00:00
Matt Aitken 352b7f75ce Installed packages 2023-02-21 22:22:04 +00:00
Matt Aitken f0378fa874 Fix for incorrect types (after merge) 2023-02-21 22:21:51 +00:00
Matt Aitken 8de37d47bf Renamed new example package to @examples/generic-webhook 2023-02-21 22:16:37 +00:00
Matt Aitken 23376457e6 Merge remote-tracking branch 'origin/dev' into features/new-overview-page
# Conflicts:
#	pnpm-lock.yaml
2023-02-21 22:13:42 +00:00
James Ritchie 75589d3bae Reduced prominence of connect api message 2023-02-21 21:35:07 +00:00
James Ritchie 96c4f319e4 Label positioned better 2023-02-21 21:30:14 +00:00
James Ritchie 8587841ee4 Made the test button less prominent 2023-02-21 21:27:30 +00:00
James Ritchie 058afb40ce Copy improvement 2023-02-21 21:18:41 +00:00
Eric Allam dc058c8835 Remove webapp dep on integrations server 2023-02-21 21:15:20 +00:00
James Ritchie f80253ed1d typography improvements 2023-02-21 21:13:19 +00:00
James Ritchie 3e384ff18a Show better copy in the How to trigger your workflow panel 2023-02-21 21:05:12 +00:00
James Ritchie db9b03ca05 Link to the org integrations page 2023-02-21 21:04:17 +00:00
James Ritchie cc6adecfb4 Only show the Create workflow run panel if a workflow or non-test runs have happened 2023-02-21 20:43:46 +00:00
James Ritchie 841421bf76 Made the concertina panels open when relevant 2023-02-21 20:36:02 +00:00
Matt Aitken f5ebde8ddb Changeset: release version 2023-02-21 16:27:10 +00:00
Matt Aitken da9e357b6d Added env vars to prod webapp 2023-02-21 16:23:18 +00:00
Matt Aitken cde0b7fcfe Increased the p-integrations resources 2023-02-21 16:21:50 +00:00
Matt Aitken 43f913e796 Prod flightcontrol for integrations 2023-02-21 16:14:54 +00:00
Matt Aitken 26ae66ad2a Add Airtable client_id for prod 2023-02-21 16:14:11 +00:00
Matt Aitken 88fe24ad67 Fix so integration requests can use api_key auth type 2023-02-21 15:53:25 +00:00
Matt Aitken da0ee481b8 Make staging webapp depend on integrations 2023-02-21 15:53:25 +00:00
Matt Aitken ff57a70a53 Added airtable to staging client ids 2023-02-21 15:53:25 +00:00
Matt Aitken 22ae2131a5 The internal CLI can now push API keys to Pizzly from our new integrations 2023-02-21 15:53:25 +00:00
Matt Aitken 5880d966ac serviceFetch basics working. Share some code with requestEndpoint 2023-02-21 15:53:25 +00:00
Eric Allam 9eeacee7c2 Fix: pass in the id from sendEvent through to the API call 2023-02-21 14:12:14 +00:00
D-K-P 6ced99fb02 Updated the healthcheck image 2023-02-21 13:12:14 +00:00
James Ritchie 28fb5d066f Updated the integrations link 2023-02-21 12:49:15 +00:00
James Ritchie 0d72b8e0c4 Added a custom webhook connection concertina 2023-02-21 12:47:51 +00:00
James Ritchie 547aab667d Added a custom plug icon 2023-02-21 12:47:20 +00:00
James Ritchie d744efdb26 Added a generic webhook example workflow 2023-02-21 12:47:07 +00:00
Matt Aitken 727a492e45 Don’t restrict access to /healthcheck 2023-02-21 12:12:28 +00:00
Matt Aitken 384752d36c Added generate script to integrations 2023-02-21 11:58:41 +00:00
Matt Aitken d699d38981 Changeset version – next: New integrations service compatibility 2023-02-21 11:51:13 +00:00
Matt Aitken 6b53aeb8c2 Changeset added: New integrations service compatibility 2023-02-21 11:49:55 +00:00
Matt Aitken b7ee8fd432 Revert "Changeset for new integrations service"
This reverts commit 5df5e30a7d.
2023-02-21 11:48:34 +00:00
Matt Aitken 8836aeae81 Latest pnpm lockfile 2023-02-21 11:46:24 +00:00
Matt Aitken 2748d9e9a6 Revert "Changeset version: created a pre-release 0.3.x"
This reverts commit 9e739a50b2.

# Conflicts:
#	apps/integrations/package.json
2023-02-21 11:45:17 +00:00
Matt Aitken f2a0f304af Removed @trigger.dev/sdk dependency from the integrations package.json 2023-02-21 11:43:01 +00:00
Matt Aitken 7659835541 Integrations docker frozen-lockfile again 2023-02-21 11:25:21 +00:00
James Ritchie 8862b563dd Added a “How to run your workflow” concertina 2023-02-21 11:22:35 +00:00
James Ritchie ed1c2da660 Added a permenant message about api connectiions 2023-02-21 11:22:13 +00:00
Matt Aitken 9e739a50b2 Changeset version: created a pre-release 0.3.x 2023-02-21 11:21:04 +00:00
Matt Aitken e4efed07e5 Improved changeset pre-release instructions and fixed a config issue 2023-02-21 11:20:47 +00:00
Matt Aitken 55644577ea no-frozen-lockfile 2023-02-21 11:17:01 +00:00
Matt Aitken 5df5e30a7d Changeset for new integrations service 2023-02-21 11:16:18 +00:00
Matt Aitken 43ceb44db9 Fixed Sendgrid version number 2023-02-21 11:16:03 +00:00
Matt Aitken 154294f86e Added more ignores to changeset config 2023-02-21 11:12:40 +00:00
Matt Aitken e20f7ba16a Installed packages 2023-02-21 11:12:35 +00:00
Matt Aitken be6954abf2 changeset config for generated-integrations 2023-02-21 11:00:17 +00:00
Matt Aitken 810996f26f Fix for type error with optional outpyt JSONSchema 2023-02-21 11:00:04 +00:00
Matt Aitken a7044511bb Doesn’t change the generated package.json file if it exists 2023-02-21 10:59:48 +00:00
Matt Aitken 0efbbece9e Changed version number for Airtable 2023-02-21 10:59:29 +00:00
Matt Aitken a38945ebcd Delete not-exported slack integration 2023-02-21 10:58:34 +00:00
James Ritchie a63ebd73fb Added a connection icon and fixed some concertina behaviour issues 2023-02-21 10:44:05 +00:00
Matt Aitken b34018eb17 Created integrations Dockerfile 2023-02-21 10:25:36 +00:00
Matt Aitken a6f9e1e35d Setup flightcontrol for integrations 2023-02-21 10:25:28 +00:00
Matt Aitken c7c5d407ef Added healthcheck 2023-02-21 10:25:00 +00:00
James Ritchie 0c6d98d353 Added margin between the sections 2023-02-21 10:19:16 +00:00
Matt Aitken f6ed5517c2 Merge branch 'features/new-integrations' into dev 2023-02-21 10:10:15 +00:00
Matt Aitken 4aae45ede2 WIP on integration.fetch 2023-02-21 10:09:56 +00:00
James Ritchie f969f03197 Now exporting the connection data for useConnectionSlots 2023-02-21 10:01:19 +00:00
James Ritchie cd8e85f85f Show hide the concertina panel for connecting the source 2023-02-21 09:29:50 +00:00
James Ritchie 3c27b3c40b Passed classnames props 2023-02-21 09:19:54 +00:00
Eric Allam 0a3b12d135 Make the private repo checkbox flipped to be public, and now it’s default private 2023-02-20 21:17:48 +00:00
Eric Allam aca332fffc Remove the testing instructions from the run local markdown 2023-02-20 21:09:27 +00:00
James Ritchie 350a60590d WIP adding a concertina menu to the main workflow panel 2023-02-20 18:24:06 +00:00
James Ritchie ad8a2f170a Improved the border style of the disconnected apis 2023-02-20 18:23:06 +00:00
D-K-P 67f6971601 Added github issues seed / md files 2023-02-20 17:49:59 +00:00
Eric Allam 695e4ca3f0 Split pulsar and the rest of the local docker services 2023-02-20 17:23:42 +00:00
D-K-P 4243b10683 Updated the template grid so it would preview on the signed in version better, and replaced the resend image 2023-02-20 17:10:52 +00:00
James Ritchie c9bd1812f4 Swapped over the workflow panel with the API panel 2023-02-20 17:10:18 +00:00
James Ritchie a117a3b534 APIs not connected get a red border treatment to make them stand out 2023-02-20 17:07:33 +00:00
James Ritchie 9e64f9d570 Copy changes to titles 2023-02-20 16:53:01 +00:00
D-K-P 823da44fb7 Added schedule healthcheck info 2023-02-20 16:21:32 +00:00
Matt Aitken a5a5dcbccb Generated SendGrid SDK 2023-02-20 15:35:09 +00:00
Matt Aitken e2693eb539 Removed $ref from SendGrid marketingContacts endpoint schema 2023-02-20 15:33:07 +00:00
Matt Aitken 036ffa7e5f Created marketingContacts endpoint 2023-02-20 15:23:52 +00:00
Matt Aitken 679ac99fad Added scopes to api_key authentication in the web app 2023-02-20 15:23:34 +00:00
Matt Aitken 9f6886c55b Added infisical config to the root 2023-02-20 13:45:28 +00:00
Eric Allam ad9089da57 Make sure only started runs are considered created 2023-02-20 13:43:58 +00:00
Eric Allam 9313adee12 Add the github access docs link and tweak copy 2023-02-20 13:29:07 +00:00
Matt Aitken 9bb8363643 Fix for typecheck issue 2023-02-20 13:27:11 +00:00
Matt Aitken 4e2fe3dcac Moved all presenters into the presenters folder 2023-02-20 13:25:46 +00:00
D-K-P 092b139d71 Added a second line to the github button on the template deploy page 2023-02-20 12:34:02 +00:00
Matt Aitken ab92e9515b Installed packages 2023-02-20 12:28:34 +00:00
Matt Aitken d4939c4e11 More fixes from mege conflict 2023-02-20 12:28:30 +00:00
James Ritchie ef3f075042 Added a missing noreferrer property 2023-02-20 12:26:01 +00:00
Matt Aitken c76d930f08 Fixing issues with service metadata 2023-02-20 12:22:32 +00:00
Matt Aitken 06f2fc3aeb Fix for bad import of WorkflowsPresenter 2023-02-20 12:12:13 +00:00
Matt Aitken 3cd4f2fb9f Merge remote-tracking branch 'origin/dev' into features/new-integrations
# Conflicts:
#	apps/webapp/app/env.server.ts
#	apps/webapp/app/models/integrations.server.ts
#	apps/webapp/app/models/organizationTemplatePresenter.server.ts
#	apps/webapp/app/models/templateListPresenter.server.ts
#	apps/webapp/app/models/templatePresenter.server.ts
#	apps/webapp/app/models/workflowListPresenter.server.ts
#	apps/webapp/app/models/workflowStartPresenter.server.ts
#	apps/webapp/app/models/workflowsPresenter.server.ts
#	apps/webapp/app/routes/__app/orgs/$organizationSlug/__org/index.tsx
#	apps/webapp/app/routes/__app/orgs/$organizationSlug/__org/workflows.new.tsx
#	pnpm-lock.yaml
2023-02-20 12:10:50 +00:00
D-K-P 8f011a5da3 Updated step 2 text so it’s clearer which route includes the repo templates 2023-02-20 11:59:50 +00:00
Eric Allam 067dbfc0cf Improved the template docs 2023-02-20 11:57:36 +00:00
Matt Aitken 8dfdfdb2fa Regenerated docs with default open on params 2023-02-20 11:52:08 +00:00
Matt Aitken 3b76574ef8 Make the params default open 2023-02-20 11:52:00 +00:00
Matt Aitken 3a0a6e491c Update SendGrid’s documentation 2023-02-20 11:48:48 +00:00
Matt Aitken 24203d1b8d Sanitize text for mdx (so we can display HTML tags on the page) 2023-02-20 11:48:37 +00:00
Matt Aitken 8da0f9ac01 Generated SendGrid SDK 2023-02-19 19:30:01 +00:00
Matt Aitken 011264865b Fixes for an optional body in the response 2023-02-19 19:29:52 +00:00
Matt Aitken 889d9910e2 SendGrid mailSend endpoint implemented 2023-02-19 19:18:23 +00:00
Matt Aitken 679239d9fc Added scopes to api_key authentication method 2023-02-19 19:18:08 +00:00
Matt Aitken 20d8493c3e Response body is optional 2023-02-19 19:17:56 +00:00
Matt Aitken fe598ff713 Add support for api_key authentication 2023-02-19 19:17:41 +00:00
Matt Aitken ac1354b71a Deal with validating when a schema is undefined or data is undefined 2023-02-19 19:17:27 +00:00
Matt Aitken 55f04d5d12 Fix for generateTypes test now we don’t format 2023-02-19 19:17:01 +00:00
Matt Aitken 3796ba5b07 Generated docs for Slack example and Airtable 2023-02-19 17:49:34 +00:00
Matt Aitken 86e1e7143f Generate docs with good support for oneOf and anyOf 2023-02-19 17:49:25 +00:00
Matt Aitken d32aa49020 output the response types 2023-02-19 17:27:38 +00:00
Matt Aitken 08338d15a5 Generate much nicer params 2023-02-19 17:09:46 +00:00
Matt Aitken 4b3c9b7230 Much better generated docs 2023-02-19 16:36:56 +00:00
Matt Aitken e84e43e4e1 Decent param field generation 2023-02-19 16:02:10 +00:00
Matt Aitken 584b12451d Started generating docs, with metadata first 2023-02-19 15:15:28 +00:00
Matt Aitken 0913a34174 Prepared code generation for docs 2023-02-19 14:58:41 +00:00
Matt Aitken e6d6bfced4 Newly generated SDKs using the new generator 2023-02-19 14:37:37 +00:00
Matt Aitken c7e926a8a9 Ignore missing patterns when linting 2023-02-19 14:36:09 +00:00
Matt Aitken 3ad8a0a5de Separate schema titles and descriptions so we get nice TypeNames and jsdocs 2023-02-19 14:35:58 +00:00
Matt Aitken 0d918e7bf6 Generate types by creating a combined schema 2023-02-19 14:35:27 +00:00
Matt Aitken 444996533f Deduplicated type definitions, but still has multiple interfaces 2023-02-19 13:48:51 +00:00
Matt Aitken 1b53ccbbac WIP on de-duplicating type definitions from generated SDK 2023-02-19 13:42:48 +00:00
Matt Aitken dbd4e9a68c Don’t format the types when creating them from schemas 2023-02-19 13:42:32 +00:00
Matt Aitken 0c36c3e16f When making schemas don’t add properties with undefined values, it messes up the Typescript generator 2023-02-19 12:53:27 +00:00
Matt Aitken 05af0ba2b5 Make multiple actions at once 2023-02-19 12:48:25 +00:00
Matt Aitken f2e341e753 Delete records and record 2023-02-18 17:26:27 +00:00
Matt Aitken 6e337eb144 Create mutiple and single records 2023-02-18 17:06:05 +00:00
Matt Aitken fd90e3c3d8 Update single record 2023-02-18 16:56:47 +00:00
Matt Aitken b969653f7c Added update/upsert records 2023-02-18 16:49:54 +00:00
Matt Aitken b5128abee0 listRecords is working 2023-02-18 16:26:34 +00:00
Matt Aitken 1f5053bcdb Reworked how nock works to allow updating 2023-02-18 16:07:57 +00:00
Matt Aitken 232b58daf1 Added listRecords endpoints with improvements to generating schemas 2023-02-18 15:17:50 +00:00
Matt Aitken d07a54f09b Airtable Field schema 2023-02-18 14:06:16 +00:00
Matt Aitken 2adea4cd9b Created an AirTable field schema 2023-02-18 12:30:18 +00:00
Matt Aitken 27e1d134f7 WIP Airtable schemas 2023-02-17 19:07:20 +00:00
Matt Aitken 92ca01f3c7 An easier way to write JSON Schemas 2023-02-17 19:05:48 +00:00
Matt Aitken c75181f10d Renamed the code that used open api specs 2023-02-17 19:05:25 +00:00
James Ritchie a26002c525 Improved the layout of the TemplateOverview 2023-02-17 18:45:22 +00:00
James Ritchie 5a3fdc470f The logo had a broken URL link in the marketing header 2023-02-17 17:06:00 +00:00
Matt Aitken 781a208c07 Merge pull request #60 from mv-turtle/main
Added infisical as one of the command in package.json
2023-02-17 16:12:26 +00:00
Matt Aitken 67eb592ecc Merge branch 'dev' into main 2023-02-17 16:11:20 +00:00
James Ritchie efc35c6c79 Added a Todo comment to make it clear the id needs to be unique 2023-02-17 16:03:36 +00:00
Eric Allam 65649c1fc7 Merge branch 'main' into dev 2023-02-17 14:35:49 +00:00
Matt Aitken 0fa59d9387 More code comments in the examples 2023-02-17 14:25:27 +00:00
Matt Aitken aa8cd86041 Improved GitHub star example with comments 2023-02-17 14:15:06 +00:00
Matt Aitken 165bd68d2d Added nice code comments to GitHub issues example 2023-02-17 14:15:06 +00:00
Eric Allam 9b664a1af2 Added the org template repo to the workflow overview page 2023-02-17 14:10:58 +00:00
Matt Aitken 3d174f5aeb Added code comments to the custom event 2023-02-17 13:52:05 +00:00
Matt Aitken b341e7bb71 Added code comments to the webhook example 2023-02-17 13:51:42 +00:00
Matt Aitken 1dc11a39ea Improved the WhatsApp example text 2023-02-17 13:36:48 +00:00
James Ritchie 970cfcb094 Improved the copy on step 6 of the existing repo journey 2023-02-17 13:35:55 +00:00
James Ritchie c33e228b26 Small improvement to the connected workflow message 2023-02-17 13:35:55 +00:00
Matt Aitken 6ba6e20026 Improved the Shopify example 2023-02-17 13:16:52 +00:00
Matt Aitken 81b2742577 Removed new user (Resend) example as it involves too much config for now 2023-02-17 12:25:40 +00:00
Matt Aitken ccadf08bd2 Set the from email to say Trigger.dev 2023-02-17 12:11:59 +00:00
D-K-P cea1291496 Removed title dupe 2023-02-17 12:05:15 +00:00
Matt Aitken 3e6b0c747b Workflow not connected to environment: Show a message on the overview page with basic help 2023-02-17 12:01:02 +00:00
Matt Aitken affcabc36f Workflow not connected to environment: hide test and runs pages 2023-02-17 12:01:02 +00:00
D-K-P 6732015b5c Updated the welcome email 2023-02-17 11:44:19 +00:00
Eric Allam cbb50a05ad Fixed issue with expiring user-to-server access tokens 2023-02-17 11:34:49 +00:00
Eric Allam 142fa85b14 Removed unnecessary log 2023-02-17 11:34:49 +00:00
James Ritchie 857ecf1de7 Gave the connected workflow more space 2023-02-17 11:24:24 +00:00
James Ritchie df6fe919c2 Added a Waiting to connect state to the Deploy step 2023-02-17 11:19:23 +00:00
James Ritchie 579e98c7af Copy updates to the new repo journey 2023-02-17 10:48:46 +00:00
James Ritchie 4724ef00fc Fixed Safari bug where template grid cards were really long and scrolling 2023-02-17 10:40:53 +00:00
James Ritchie 77e3769dbd Removed full stop 2023-02-17 10:40:53 +00:00
James Ritchie 70a547a5c5 Button arrow now uses a heroicon 2023-02-17 10:40:53 +00:00
Matt Aitken 3c8a3c421b Make it clear a request error comes from the API being called 2023-02-17 10:31:08 +00:00
Eric Allam 842ab0cdcc Ping the connection every second to try and keep it open through CloudFront 2023-02-17 09:11:13 +00:00
James Ritchie 64e0445acb Added a github icon to the external repo link 2023-02-16 20:50:25 +00:00
Eric Allam 213d86cb1f Improve run local instructions 2023-02-16 20:49:57 +00:00
Eric Allam 66805f67fa Call examples examples, not templates 2023-02-16 20:39:21 +00:00
Eric Allam 3defbcc0ed Fill in the correct API key in the run local docs 2023-02-16 20:23:12 +00:00
Eric Allam 942e695782 Fill in the ready to deploy api keys 2023-02-16 20:21:49 +00:00
James Ritchie 4a8b977a99 Remade the Deploy step layout 2023-02-16 20:03:31 +00:00
Eric Allam 2e9875c4c6 Add loading UI state when submitting add template form 2023-02-16 19:59:13 +00:00
Eric Allam ed775706a0 Use the installation_repositories.added webhook because repository.created wasn’t reliably being delivered 2023-02-16 19:42:36 +00:00
Eric Allam 89abb57e44 Changeset: new version 2023-02-16 19:14:49 +00:00
Eric Allam f264aaa16f Added = to the .env 2023-02-16 19:10:03 +00:00
Eric Allam 2f7caab661 Link workflows with their org templates if they exist (and improve the run local docs output) 2023-02-16 19:00:08 +00:00
James Ritchie c92fec9787 Made the github connect button bigger 2023-02-16 17:48:26 +00:00
D-K-P 9211cce807 fixed images so they’re bigger on the templates page and there isn’t a gap 2023-02-16 17:45:52 +00:00
Eric Allam 26c4f5d23c Move customize sections down to the bottom of the template markdown docs 2023-02-16 17:10:33 +00:00
Matt Aitken 4c9891de90 Have a max-height on the example code block 2023-02-16 17:02:19 +00:00
D-K-P 3c706723a2 Increased the image height to 36 2023-02-16 16:54:53 +00:00
Matt Aitken 6e3778d74e Created PanelLoading 2023-02-16 16:41:03 +00:00
Eric Allam 8a10431766 Use internal pulsar to define the webapp-events topic 2023-02-16 16:37:58 +00:00
Matt Aitken 825983db77 Add PostHog Sentry integration 2023-02-16 16:28:37 +00:00
James Ritchie a79ded125e minor improvement to image heights 2023-02-16 16:11:55 +00:00
James Ritchie e05b3d633d Removed scrolling from codeblock on the examples modal 2023-02-16 15:39:20 +00:00
Matt Aitken f659d9aec6 Don’t delete the nock snapshot when a test suite fails 2023-02-16 15:34:04 +00:00
Matt Aitken 1772b0664c Added requiredPackages to Resend example 2023-02-16 15:27:11 +00:00
Matt Aitken eca961a30f Text for previous option correct after templates 2023-02-16 15:26:28 +00:00
Matt Aitken c500155d60 Fixed resend example code 2023-02-16 15:22:41 +00:00
Matt Aitken f8957423e5 Changed text on example to “Use this example" 2023-02-16 15:22:41 +00:00
Matt Aitken 9da448a21b The code block now works with jsx/tsx 2023-02-16 15:22:41 +00:00
James Ritchie 8468db0a83 Fixed the required packages so they correctly display 2023-02-16 15:06:19 +00:00
James Ritchie f0d3b12d84 Fixed padding so it displays longer names on the examples buttons 2023-02-16 15:06:19 +00:00
James Ritchie ce5a42ccd7 Removed Zod from some of the required packages and corrected Whatsapp title 2023-02-16 15:06:19 +00:00
Eric Allam fc962f50c9 Create template repositories in a way that allows users to not give full access to their gitihub accounts to our github app 2023-02-16 15:01:46 +00:00
Matt Aitken 171d16ef41 If GitHub connect fails, show an error page and log out the params 2023-02-16 14:29:44 +00:00
Matt Aitken bec76a3704 Fix for channel instead of channelName being used in new user Slack example 2023-02-16 14:14:05 +00:00
Matt Aitken 3c403c4212 Removed strange capitilization from resend template 2023-02-16 14:03:38 +00:00
Matt Aitken 97e432462d Made the ensure it runs instructions a bit clearer 2023-02-16 13:49:31 +00:00
James Ritchie 4a2e0b28f4 Fixed links in the marketing header not working 2023-02-16 13:35:55 +00:00
James Ritchie fb496b1efa Changed the dangerouslySetInnerHtml from <code> back to <divs> to fix formatting 2023-02-16 13:22:48 +00:00
Matt Aitken 6c299072cd Fix for new user analytics event 2023-02-16 13:20:42 +00:00
Matt Aitken 25f70c4574 Added a “user created” event 2023-02-16 13:13:02 +00:00
James Ritchie 7f0ad4c18a Updated dangerouslySetInnerHtml to use <code> element and added the correct background colour 2023-02-16 12:51:44 +00:00
Matt Aitken 6c50ce078a Improved nock scripts, and setup for Airtable 2023-02-16 12:46:23 +00:00
D-K-P e8d018ef9d Made the templates overview responsive 2023-02-16 12:10:19 +00:00
Matt Aitken 9dc2ec4dca WIP on AirTable failing test 2023-02-16 12:10:05 +00:00
Matt Aitken 694df6ee38 Nock records and saves a successful run’s recording from tests 2023-02-16 12:08:35 +00:00
Matt Aitken c27987c191 Created a system to record successful test suite responses and load them on the next run 2023-02-16 11:50:35 +00:00
James Ritchie 19aedf8f73 Improved the final connected workfow step 2023-02-16 11:40:50 +00:00
D-K-P 4c219a8bf8 Template overview now has a responsive width 2023-02-16 11:35:08 +00:00
James Ritchie f30037da15 Improved message while waiting to connect github 2023-02-16 11:33:33 +00:00
James Ritchie df405aa740 Children not needed on the PanelInfo component 2023-02-16 11:33:33 +00:00
Eric Allam 7465d31e28 Improved the github stars markdown docs 2023-02-16 11:27:31 +00:00
D-K-P 2876946792 Added place-content-between to move services to bottom left 2023-02-16 11:24:57 +00:00
James Ritchie ae7c1c2cec TemplateCard now sits next to the steps on the new repo journey 2023-02-16 11:13:45 +00:00
James Ritchie 10b5558dbc Improved some of the information displayed in the new repo journey 2023-02-16 11:11:24 +00:00
Eric Allam 570683446c Updated template images 2023-02-16 10:52:21 +00:00
Eric Allam 29f3504a23 Improved the basic starter and resend markdown docs 2023-02-16 10:52:21 +00:00
James Ritchie 4bc156ce04 Improvements to the Cloud modal 2023-02-16 10:48:27 +00:00
James Ritchie c055c97209 Improvements to the modal so it’s more visible against the background 2023-02-16 10:48:01 +00:00
James Ritchie bc767516b6 Moved classes out of the card component to make it more reusable 2023-02-16 10:36:26 +00:00
James Ritchie 7a19bb8381 Template card locks to left side of the form 2023-02-16 10:32:38 +00:00
James Ritchie e742486677 Back button width fix 2023-02-16 10:16:33 +00:00
James Ritchie 821af448f3 Removed unused exports 2023-02-16 10:13:37 +00:00
James Ritchie 9db2e483ef Removed the title from the Overview page and added a back button 2023-02-16 10:13:05 +00:00
Eric Allam 277108d90c Implement cloud waitlist functionality 2023-02-16 10:08:06 +00:00
James Ritchie 49068d8db1 Fixed missbehaving layout on the examples modal 2023-02-16 09:53:07 +00:00
Eric Allam 3558a76e27 Implement correct flow on the templates.add route 2023-02-16 09:33:24 +00:00
Eric Allam fde3fec37f Setup the prod github app env vars 2023-02-16 09:13:00 +00:00
Eric Allam dabb17cf51 Move template doc files into the webapp 2023-02-16 08:49:59 +00:00
James Ritchie 7a8ad5f254 Right aligned the primary buttons 2023-02-15 21:02:13 +00:00
James Ritchie ab1d283217 centered text in button 2023-02-15 21:02:13 +00:00
D-K-P 7e80c5e7f6 removed maxHeight 2023-02-15 21:00:23 +00:00
D-K-P c5a5cef9f3 Redid the template overview fixes 2023-02-15 21:00:23 +00:00
James Ritchie f51aa7b792 Removed margin from the template grid component 2023-02-15 20:43:44 +00:00
D-K-P 9175d1e541 Import fix 2023-02-15 20:39:19 +00:00
James Ritchie 38fbf41e79 Improvements to the existing repo flow 2023-02-15 20:38:48 +00:00
James Ritchie 4bd3cabad4 Fixed the layout of the Connect another Github link 2023-02-15 20:18:07 +00:00
James Ritchie 6c9d31fe1c Removed the NoMobileOverlay on the public pages 2023-02-15 20:00:05 +00:00
James Ritchie c13c52aa05 Added a back button to the template section of the login page 2023-02-15 19:35:24 +00:00
Eric Allam 260bd5f007 Add github app env vars to staging webapp 2023-02-15 17:55:26 +00:00
Matt Aitken 25cf0245a4 Tidied up the mad nock reply 2023-02-15 17:48:45 +00:00
Matt Aitken 98cac166b3 Use nock to return from the API 2023-02-15 17:42:14 +00:00
Matt Aitken c2e9accade Moved the logger below express json 2023-02-15 17:41:55 +00:00
Eric Allam dc86fc2998 Merge pull request #61 from triggerdotdev/features/workflow-hosting
Feature: Easy to use templates with better onboarding
2023-02-15 17:40:36 +00:00
Eric Allam 7a6968d0ac Merge branch 'dev' into features/workflow-hosting
# Conflicts:
#	apps/webapp/app/components/LoginPromoPanel.tsx
#	apps/webapp/app/routes/__app/orgs/$organizationSlug.tsx
#	apps/webapp/app/routes/login.magic.tsx
#	apps/webapp/app/routes/login.tsx
#	apps/webapp/app/services/messageBroker.server.ts
2023-02-15 17:39:48 +00:00
Eric Allam 2c780c976e Added resend welcome drip campaign template 2023-02-15 17:19:09 +00:00
James Ritchie fbc1b86ea0 Added ability to pass in a size to the buttons - currently only supports “large” 2023-02-15 17:05:39 +00:00
D-K-P f20b29519a Padding / breathing space tweaks 2023-02-15 15:18:26 +00:00
D-K-P 3c7f6cf9ec Added primary buttons to the examples 2023-02-15 15:05:52 +00:00
Matt Aitken 1410688499 Added morgan logging to the integrations server 2023-02-15 14:57:38 +00:00
D-K-P d583e2a8f2 Added primary button to templateoverview 2023-02-15 14:52:35 +00:00
Matt Aitken a94c8e4576 Airtable example working 2023-02-15 14:51:14 +00:00
Matt Aitken 5fc1236d2e Added nock 2023-02-15 14:50:58 +00:00
Matt Aitken 3b67a5ce10 Remove unused integrations index file 2023-02-15 14:50:52 +00:00
D-K-P 016cf05aba Added templates copy 2023-02-15 14:45:40 +00:00
D-K-P 22c8a16758 Moved the image to the top left and sorted scrolling 2023-02-15 14:45:40 +00:00
D-K-P 0955a51333 Added bottom padding 2023-02-15 14:45:40 +00:00
D-K-P 8dc5bba8ca Reduced top margins on the templates page 2023-02-15 14:45:40 +00:00
James Ritchie 3538754a76 Updated the links in the marketing header 2023-02-15 14:41:28 +00:00
James Ritchie 8ef434eb13 Added a toxic style A button 2023-02-15 14:41:16 +00:00
James Ritchie 78ecfb60dc Hopful fix for google fonts not working 2023-02-15 14:40:46 +00:00
Matt Aitken 2acd79fb36 Fix so the integration actually responds 2023-02-15 14:08:59 +00:00
Matt Aitken 8d15e9a2b9 Created Airtable example 2023-02-15 14:01:29 +00:00
Matt Aitken d99446a1b2 Added descriptions to the response fields 2023-02-15 14:01:19 +00:00
Matt Aitken 7b24248b80 Deleted slackv2 example 2023-02-15 14:01:07 +00:00
D-K-P feafa69068 Updated the viewing runs image link in the readme 2023-02-15 14:00:36 +00:00
James Ritchie 91ed853747 Updated the login page with new template card style 2023-02-15 13:58:35 +00:00
Eric Allam 76737caa47 Remove basic starter title in desc 2023-02-15 13:56:15 +00:00
Eric Allam b480fa242a All dangerouslySetInnerHTML elements should not be p tags 2023-02-15 13:53:50 +00:00
Matt Aitken 192a1d2119 Made the Airtable fields a loose schema for now 2023-02-15 13:53:46 +00:00
Matt Aitken 2261a769e4 Deleted pointless generateService test 2023-02-15 13:49:59 +00:00
Matt Aitken 7e92e8cc75 Added Airtable to the catalog 2023-02-15 13:41:25 +00:00
Matt Aitken 5a312dec55 Fix generate test to point at slackv2 2023-02-15 13:41:06 +00:00
D-K-P a1535dff70 Added title and sub to the templates page 2023-02-15 13:38:35 +00:00
Eric Allam 4a00abed46 Add import code step to existing repo 2023-02-15 13:35:40 +00:00
Matt Aitken 15316a7504 Started work on Airtable 2023-02-15 13:29:15 +00:00
Eric Allam 039f652a41 Add another github connection button 2023-02-15 13:22:21 +00:00
Matt Aitken fa80ca07b7 Make the slack example not live 2023-02-15 13:22:20 +00:00
D-K-P f2cfa17b62 Added Poppins for the titles 2023-02-15 13:19:55 +00:00
Eric Allam 77124bba78 Sorted out connected to github 2023-02-15 12:58:17 +00:00
James Ritchie 7530400a38 Removed old template card 2023-02-15 12:42:31 +00:00
James Ritchie bfd8a4f6b8 Template card sits on the right and new states for login and configure 2023-02-15 12:42:30 +00:00
Eric Allam 4a72aff4ef Render the app header when logged in __public pages 2023-02-15 12:37:06 +00:00
Eric Allam 544b9b94c1 Implement “use this template” from the public page (either logged in or out) 2023-02-15 12:18:39 +00:00
James Ritchie 6b05b84342 Added a step number to the configure github step 2023-02-15 11:56:12 +00:00
James Ritchie 2ede12c2f3 Step numbers now have a complete state so they can show numbers in future steps rather than just a tick 2023-02-15 11:55:28 +00:00
Matt Aitken b142c55fc5 The DisplayProperties are now returned properly from the API 2023-02-15 11:55:06 +00:00
Matt Aitken 454bfcc58e Add the version info to a created IntegrationRequest 2023-02-15 11:54:37 +00:00
Matt Aitken eb98f50fca Get the display properties when creating an integration request 2023-02-15 11:54:06 +00:00
Matt Aitken 81ddf597ed Debugging the webapp should use infisical 2023-02-15 11:53:45 +00:00
Matt Aitken 75d6471c9e Created an example that uses the slackv2 integration 2023-02-15 11:53:30 +00:00
Matt Aitken 68544359f1 Generate the SDK with the correct endpoint name 2023-02-15 11:53:15 +00:00
James Ritchie 187c0279b2 Margin tweak 2023-02-15 11:24:40 +00:00
James Ritchie 98cf9afd8e Made the deployed workflow item more clickable 2023-02-15 11:23:30 +00:00
Matt Aitken 3ce5d5bf1a Include generated-integrations in the workspace 2023-02-15 11:18:38 +00:00
Matt Aitken f8ac05500a Renamed the new slack integration slackv2 2023-02-15 11:17:59 +00:00
Matt Aitken 23dbeff1c6 Added .template to the end of the template files so turbo doesn’t pick up on them 2023-02-15 11:10:07 +00:00
D-K-P ba0a4727d3 Moved the button to the top and fixed the padding 2023-02-15 11:00:15 +00:00
Eric Allam 54c5c82f22 Adding template list and template slug page to public pages 2023-02-15 10:46:39 +00:00
James Ritchie 6a3f26427b Small style tweaks 2023-02-15 10:41:30 +00:00
Matt Aitken 9db77b6478 Reverted workflowRunStep.server.ts 2023-02-15 10:37:05 +00:00
Matt Aitken 08ecd288e1 DisplayProperties stored on a run step and first read from there 2023-02-15 10:33:03 +00:00
James Ritchie 10ae5601f8 Added the floating template card 2023-02-15 10:29:43 +00:00
Eric Allam 9386e19620 Fill in the ConnectedToGithub stuff 2023-02-15 10:27:15 +00:00
Eric Allam 1df18b386a Better handle errors when trying to add a template to github account 2023-02-15 10:24:42 +00:00
Matt Aitken 83201312b2 The API won’t respond with services that aren’t live 2023-02-15 10:08:52 +00:00
Matt Aitken bfa096dc4a Services metadata being pulled from old and new systems 2023-02-15 09:54:34 +00:00
James Ritchie 81debee7aa Added a Github connected first step 2023-02-15 09:52:49 +00:00
Eric Allam 02499a0e63 Add the template card to template.add and template.id 2023-02-15 09:49:11 +00:00
Matt Aitken 558b705ace Added version to the Display properties are working for v1 integrations 2023-02-15 09:49:02 +00:00
Eric Allam 803b279133 Fill in actual data to the configured github state 2023-02-15 09:38:00 +00:00
Matt Aitken 4874288db0 Added icon to the services API json 2023-02-15 09:26:50 +00:00
Matt Aitken 30c0984623 Make the api use v2 (as v1 was the old integrations system) 2023-02-15 09:23:14 +00:00
Vladyslav Matsiiako 1b675968f6 Added infisical as one of the command in package.json 2023-02-14 19:46:36 -08:00
Eric Allam e58b7ada83 Filled in the run local docs 2023-02-14 22:03:32 +00:00
Matt Aitken a96bfd3528 The display properties endpoint is working 2023-02-14 20:20:55 +00:00
D-K-P a47a9b4fd6 Styled the start from scratch modal 2023-02-14 18:45:54 +00:00
D-K-P 727ec22fee Styled the examples overview modal 2023-02-14 18:45:54 +00:00
Matt Aitken c359962b3a Removed logging in the auth middleware 2023-02-14 18:45:35 +00:00
Matt Aitken 7bc11fe41f Added test for action displayProperties and made a fix 2023-02-14 18:44:24 +00:00
James Ritchie 7af88c33da Made the fields all consistently styled 2023-02-14 18:42:02 +00:00
Matt Aitken 108bb6281e Added displayProperties functionality to the endpoints/actions 2023-02-14 18:39:29 +00:00
James Ritchie 88ff526b87 Added blank deploy state to configure github state 2023-02-14 18:37:17 +00:00
James Ritchie b88eaa2c40 Import cleanup 2023-02-14 18:30:39 +00:00
James Ritchie a46b93e29d Updated to the deploy state 2023-02-14 18:23:38 +00:00
James Ritchie 1f672d9612 Made classNames available on the WorkflowList 2023-02-14 18:23:38 +00:00
Eric Allam d489311371 Run locally, not self host (WIP run local docs) 2023-02-14 18:14:46 +00:00
Eric Allam af29669003 Fill out some github-stars-to-slack template data 2023-02-14 17:59:59 +00:00
James Ritchie 8f32446170 Added a modal to the deploy section 2023-02-14 17:35:10 +00:00
James Ritchie 7f6e03b776 Improvements to the deploy state 2023-02-14 17:11:28 +00:00
Matt Aitken 140d02f462 WIP getting the new integrations working with the old ones 2023-02-14 16:54:13 +00:00
Matt Aitken 6a3ffa6395 Added authentication middleware to the integrations service 2023-02-14 16:53:49 +00:00
James Ritchie f6363ab5b6 Added a deploy skeleton state 2023-02-14 16:42:36 +00:00
James Ritchie 60ac029220 Added a disabled button state 2023-02-14 16:42:36 +00:00
Eric Allam 1f3eb459c4 Added runLocalDocs for templates 2023-02-14 16:37:19 +00:00
Eric Allam 9388b5bbed Added markdown syntax highlighting for the template documentation 2023-02-14 16:33:30 +00:00
Eric Allam 047b011fdd Run db:seed when deploying (so needs to be safe in prod) 2023-02-14 15:59:54 +00:00
Eric Allam fa470462c4 Implement the “existing repo” flow 2023-02-14 15:46:02 +00:00
Matt Aitken d807421b40 Migrated the metadata format 2023-02-14 15:39:59 +00:00
Matt Aitken b2bd170a2c Downgraded vitest in the webapp because it caused typecheck issues 2023-02-14 15:39:43 +00:00
Matt Aitken e013c6faa9 Renamed slug to service 2023-02-14 15:09:46 +00:00
Matt Aitken d60e9ae939 Renamed IntegrationMetadata to ServiceMetadata 2023-02-14 15:09:00 +00:00
Matt Aitken 8039f326a9 Created an IntegrationsClient that’s used to communicate with the integrations service 2023-02-14 15:04:45 +00:00
Matt Aitken 259e28e13a Removed old todo 2023-02-14 15:04:27 +00:00
James Ritchie 103f77215c margins adjustment 2023-02-14 14:58:55 +00:00
James Ritchie 967b8b0053 Updated the deployed state 2023-02-14 14:56:16 +00:00
Matt Aitken 974033d5d2 Don’t export the service metadata type 2023-02-14 14:52:51 +00:00
Matt Aitken 84bd5a63a2 Added API key auth type 2023-02-14 14:52:35 +00:00
D-K-P f0a05ab4e3 Moved the integration icons to the bottom 2023-02-14 14:43:21 +00:00
D-K-P 805f675264 Padding now fixed if there are / aren’t API logos 2023-02-14 14:36:41 +00:00
Matt Aitken dfab30c901 Endpoint that returns information about the services 2023-02-14 14:33:58 +00:00
Matt Aitken 8f5474072f Added live flag to service 2023-02-14 14:33:29 +00:00
D-K-P 056bab7233 Fixed padding issue on the grid 2023-02-14 14:32:16 +00:00
James Ritchie 08c7a04b61 Updated layout for ready to deploy state 2023-02-14 14:14:36 +00:00
James Ritchie f2a96a1535 tweaked styles 2023-02-14 14:14:36 +00:00
D-K-P abc113701c Fixed styling on the grid and overview pages 2023-02-14 14:13:02 +00:00
Matt Aitken fb6953bc1d Actually we’re going to cache using connection + service 2023-02-14 13:58:54 +00:00
Matt Aitken 8a6467f4c8 The namespace for the cache includs connection id and workflow id
Connections are used across workflows, so there was a chance the same key could have been fighting
2023-02-14 13:57:14 +00:00
Matt Aitken 581068362f The integration service now returns the response in the format the webapp is expecting 2023-02-14 13:44:03 +00:00
Matt Aitken 011d7d5611 Added retryableStatusCodes to a service 2023-02-14 13:43:24 +00:00
Matt Aitken caac573a64 Added version and made response schema optional for SDK requests 2023-02-14 12:35:24 +00:00
Matt Aitken 39d02e6d00 Added the integrations service to the example Warp config 2023-02-14 12:33:17 +00:00
Matt Aitken 1e1da62b32 The API for integrations is now versioned, accepts params and build credentials 2023-02-14 12:32:21 +00:00
Eric Allam d67ab54d55 WIP on the “New Repo” side of the workflows/new flow 2023-02-14 12:24:26 +00:00
James Ritchie 8e5938cd0c Styling for the github configuration forms 2023-02-14 11:35:10 +00:00
James Ritchie 16d89c4b79 added optional classname to input component 2023-02-14 11:34:21 +00:00
James Ritchie bf9e269ff3 Changed the error to a panel warning 2023-02-14 10:12:25 +00:00
Matt Aitken a5190693c8 Use __trigger so we don’t have to change the webhooks and introduce incompatibility 2023-02-13 23:08:13 +00:00
Matt Aitken de5b2ca3d8 Add metadata to slack post message 2023-02-13 23:02:29 +00:00
Matt Aitken 5c8fc8188a Passing the cache through to requests, it’s working. Made the expected request metadata specific 2023-02-13 22:52:01 +00:00
Matt Aitken 5949c98748 Created Postgres schema with cache table and PostgresCacheService 2023-02-13 22:40:44 +00:00
Matt Aitken 4f7a8f6ae0 Created a VS Code workspace 2023-02-13 22:05:57 +00:00
Matt Aitken c01bc15622 Allow metadata to be passed to the integrations API 2023-02-13 22:05:39 +00:00
Matt Aitken 027f0210dc The input is validated and results are coming back! 2023-02-13 21:44:18 +00:00
James Ritchie da155d1378 Added a modal for the cloud hosting option 2023-02-13 19:11:12 +00:00
Matt Aitken 38f32f405f Progress on action api endpoint 2023-02-13 18:24:36 +00:00
James Ritchie 0fee3ceae5 Blank example now has a modal 2023-02-13 18:20:10 +00:00
James Ritchie 710003ebdf Added modals for the webhook, custom event etc cards 2023-02-13 18:09:00 +00:00
Matt Aitken 76a2c82d9f Fixes for CommonJS in express and tests failing because of access token 2023-02-13 17:59:17 +00:00
James Ritchie 1be2af9309 Example modal update 2023-02-13 17:50:15 +00:00
James Ritchie cdbae933b2 Exported types from sample data 2023-02-13 17:44:39 +00:00
James Ritchie 7f2c9687b7 Created an examples overview with modal 2023-02-13 17:44:39 +00:00
James Ritchie 721a32a379 Moved modal into the examples component 2023-02-13 17:44:39 +00:00
James Ritchie 2424de07ac Added typography and forms tailwind packages 2023-02-13 17:44:39 +00:00
Eric Allam 179afbbcb3 More work on the org template page (added workflows list) 2023-02-13 17:02:52 +00:00
Matt Aitken 4d6963f0e7 Added target node16 to tsup 2023-02-13 16:37:41 +00:00
Matt Aitken 73fb0f3c0d Added explicit returns types because tsup was complaining 2023-02-13 16:37:26 +00:00
D-K-P 4ed486ef93 Styled the template overview button 2023-02-13 16:18:31 +00:00
Matt Aitken 9751531cc1 Watch mode working properly with the action endpoint 2023-02-13 16:14:43 +00:00
Matt Aitken 313a8c59cf First commit of WIP generated Slack SDK 2023-02-13 16:14:31 +00:00
Matt Aitken 76c660f167 eslint ignore build folder 2023-02-13 16:10:04 +00:00
Matt Aitken 3d5bbf899e Got integrations express server up and running 2023-02-13 15:54:36 +00:00
James Ritchie 460e8aa4a7 Fixed layout issues and added a max height 2023-02-13 15:16:46 +00:00
Matt Aitken 62ab7e098d Generate integrations in the correct folder 2023-02-13 15:03:02 +00:00
D-K-P c4a441129b modal and grid updates 2023-02-13 14:57:10 +00:00
Matt Aitken 63486d21c4 Renamed command to generate-integrations 2023-02-13 14:57:09 +00:00
Matt Aitken fbdc3c799d Created the generated-integrations folder with a Readme 2023-02-13 14:56:55 +00:00
Matt Aitken fc1dd44f39 Added the new integrations system into the mono-repo 2023-02-13 14:48:12 +00:00
James Ritchie 8a1517bc7f Removed old step 2023-02-13 14:38:46 +00:00
D-K-P fb0ecb8c34 Added overflow-scrolling and fixed side bar 2023-02-13 14:37:30 +00:00
James Ritchie c091bc3326 Added a modal to the template cards 2023-02-13 14:36:51 +00:00
Eric Allam c27bdf6308 Added markdownDocs to Template 2023-02-13 14:21:21 +00:00
James Ritchie 007dc2d713 Removed styling around templateoverview 2023-02-13 14:16:07 +00:00
D-K-P ba868cbd40 Pushed markdown in the templatesdata file 2023-02-13 14:13:56 +00:00
Eric Allam 030844d905 Live update created org templates using SSE and useRevalidator. Updated remix to v1.10.1 2023-02-13 14:12:17 +00:00
James Ritchie 36e25a85f8 Blank ExampleOverview file 2023-02-13 13:52:53 +00:00
James Ritchie 4b0d03f9cc Passing in template data 2023-02-13 13:52:53 +00:00
D-K-P d6c6c71268 Added markdown to templatesoverview 2023-02-13 13:52:08 +00:00
James Ritchie 6117bcf7eb Used the existing diaglog component and added a close icon 2023-02-13 13:10:36 +00:00
D-K-P e1fb69fe44 Removed close button 2023-02-13 12:09:58 +00:00
James Ritchie bf5621b716 Added a basic modal to existing repo step 3 2023-02-13 12:00:55 +00:00
James Ritchie 1c9be1ee1d Moved misplaced imports up to the top 2023-02-13 12:00:55 +00:00
James Ritchie a020dfa036 Added @trigger.dev/sdk to the required packages 2023-02-13 12:00:55 +00:00
D-K-P 2e28bd09ca Layout for template overview 2023-02-13 11:29:52 +00:00
D-K-P 6595535b40 Added template grid and updated data 2023-02-13 11:29:52 +00:00
James Ritchie a7eac27b98 Added a blank example as the first option in the list 2023-02-13 10:33:46 +00:00
James Ritchie b98bae8588 ‘Choose an example’ now shows all the options styled into cards 2023-02-13 10:27:51 +00:00
James Ritchie 90a582f6ad Improved the tertiary link colour 2023-02-13 10:26:44 +00:00
James Ritchie c41c2e8725 Turned the old templates page into a placeholder for now 2023-02-13 09:34:18 +00:00
James Ritchie ed4d6846f7 Merged installing the packages into 1 step and added a new step 6 2023-02-12 17:51:48 +00:00
James Ritchie 952e584d68 Full workflow for existing repo 2023-02-12 16:26:00 +00:00
James Ritchie f178629b9d WIP adding new steps for the existing repo journey 2023-02-11 11:42:16 +00:00
James Ritchie eb2741708a Button tweak 2023-02-11 11:13:41 +00:00
James Ritchie fce24cc7fa Previous steps now links 2023-02-11 10:38:45 +00:00
James Ritchie 1ca8760868 Improved wording and styling 2023-02-11 10:19:03 +00:00
James Ritchie ffcdc763eb Added a cloud coming soon message 2023-02-11 10:06:31 +00:00
Matt Aitken bacd76c8e5 Improved .env.example 2023-02-10 20:05:41 +00:00
Matt Aitken cf04c3902f Added pnpm run idev command for running the webapp with Infisical secrets injected 2023-02-10 19:56:17 +00:00
James Ritchie c4ba591df0 Copy update to fix step 2 2023-02-10 19:30:53 +00:00
James Ritchie ef8431b292 Step numbers now have an active green state 2023-02-10 19:24:11 +00:00
Eric Allam b2290e3bc0 Get deploy to render working with the templates with the button pointing to the correct url 2023-02-10 18:15:18 +00:00
James Ritchie 1bb2ebc7bc Created a Template step by step guide page 2023-02-10 17:27:01 +00:00
James Ritchie 0193327f5d Added a new Overview page 2023-02-10 17:27:01 +00:00
James Ritchie 431079c894 Exported the step numbers 2023-02-10 17:27:01 +00:00
Eric Allam cc6a37bdf6 Add a specific template, and remove installations when getting the installations.delete github webhook 2023-02-10 16:51:38 +00:00
Eric Allam 9539138992 WIP creating template repos in github accounts 2023-02-10 15:24:47 +00:00
Matt Aitken dee2db231a Merge pull request #57 from triggerdotdev/dev
Workflow run created event now has the `environmentType` property
2023-02-10 14:20:04 +00:00
Matt Aitken 5e99b28ea5 Report the environment type on a workflow run event (live or development) 2023-02-10 14:18:42 +00:00
James Ritchie 038d53c7c5 Added templates data file 2023-02-10 14:11:21 +00:00
James Ritchie ad1f9346b8 Removed un-used tailwind config values 2023-02-10 13:50:06 +00:00
Eric Allam ddfce4e3c7 GitHub app installation 2023-02-10 13:07:41 +00:00
Matt Aitken 8a73e559e8 Merge pull request #56 from triggerdotdev/dev
Fixed all linting issues, almost all unused imports or type imports
2023-02-10 10:25:11 +00:00
Matt Aitken ad26302925 Fixed all liniting issues, almost all unused imports or type imports 2023-02-10 10:23:05 +00:00
Matt Aitken 2a20546e7b Merge pull request #55 from triggerdotdev/dev
Added WebHook examples for first workflow tests
2023-02-10 10:22:45 +00:00
Matt Aitken 137db98176 Removed unused GitHub example object 2023-02-10 10:21:18 +00:00
James Ritchie 94154bd96c Pricing link goes to the correct URL 2023-02-10 10:16:56 +00:00
James Ritchie c34a28b2d5 Added toxic and acid colours and button to the app 2023-02-10 10:12:03 +00:00
Matt Aitken 79622b6123 GitHub webhook schema fixes 2023-02-10 09:56:47 +00:00
Matt Aitken d329aca7e5 Added WhatsApp examples 2023-02-10 09:56:34 +00:00
D-K-P a347e5526f Added placeholder image 2023-02-09 20:50:09 +00:00
Matt Aitken 5328ba1556 Added GitHub examples that are shown on test page 2023-02-09 20:33:28 +00:00
James Ritchie 7d12d3242e Added toxic and acid colours to the app 2023-02-09 18:36:18 +00:00
James Ritchie 706024841a Added the marketing site header to the app template page 2023-02-09 18:36:18 +00:00
Matt Aitken 6e5695f873 Removed unused import 2023-02-09 17:52:02 +00:00
Matt Aitken 565aba4021 Merge pull request #54 from triggerdotdev/dev
Analytics updates (orgs, workflows and runs)
2023-02-09 17:50:50 +00:00
Matt Aitken 5a10e53de6 Merge pull request #53 from triggerdotdev/analytics
Analytics events implemented on client and server for common events
2023-02-09 16:50:59 +00:00
D-K-P c927342da3 Added basic grid layout 2023-02-09 16:45:33 +00:00
Matt Aitken 862eeb89d5 POSTHOG_PROJECT_KEY env variable for flightcontrol.json in staging
"fromParameterStore": "/Prod/webapp/POSTHOG_PROJECT_KEY"
2023-02-09 16:42:15 +00:00
Matt Aitken b88ad37b92 Turn client-side analytics logging off 2023-02-09 16:36:00 +00:00
Matt Aitken 5ff4b68bae Pass properties for new events 2023-02-09 16:35:53 +00:00
Matt Aitken a7107cf1b1 Add runCount to user properties 2023-02-09 16:04:06 +00:00
Matt Aitken 6132cdf8c0 Removed workflow run completed event 2023-02-09 15:47:50 +00:00
Matt Aitken d39fb33c70 Workflow created and Workflow run created 2023-02-09 15:47:03 +00:00
James Ritchie 5e7ff78f23 Setting up basic structure and components for the new Templates 2023-02-09 15:21:10 +00:00
James Ritchie 05289d0cb1 Merge pull request #52 from triggerdotdev/dev
The side menu now only shows the workflows tab if you have 0 workflows
2023-02-09 15:06:22 +00:00
Matt Aitken 7dbc634388 Tidied up imports 2023-02-09 14:19:59 +00:00
Matt Aitken d58add78bf Org, Workflow, Environment events sending from frontend 2023-02-09 14:10:00 +00:00
James Ritchie 0c8448c65d The side menu now only shows the workflows tab if you have 0 workflows 2023-02-09 12:55:47 +00:00
Matt Aitken eed039319e Identify workflow and remove unused environment slug 2023-02-09 11:06:42 +00:00
Matt Aitken 3542c0ed87 Identify user, organization and environments 2023-02-09 10:58:18 +00:00
Matt Aitken 162c0f5db5 Identify user’s on the backend when they login/sign up 2023-02-09 09:01:56 +00:00
Matt Aitken 5f649d1b2e Moved postAuthentication actions into a separate file 2023-02-09 08:48:39 +00:00
Matt Aitken e261149065 Reworked PostHog client implementation 2023-02-08 20:51:05 +00:00
Eric Allam 5f3d985b64 Merge pull request #51 from triggerdotdev/dev
Very simple admin area to assist with user support
2023-02-08 10:18:28 +00:00
Eric Allam 283f6d6be6 Added a very simple admin section to assist in user support 2023-02-08 09:50:36 +00:00
James Ritchie 7d1b4e71a5 Made the horizontal scrollbar visible 2023-02-07 18:17:32 +00:00
Eric Allam 29b4ba4c78 Merge pull request #50 from triggerdotdev/dev
Feb 7 2023 - Safer SDK and added log feedback
2023-02-07 15:17:42 +00:00
Eric Allam ccd89d08d9 Merge pull request #49 from triggerdotdev/dev
Feb 6 2023 Release
2023-02-06 15:45:07 +00:00
Dan bf57430b66 Merge pull request #41 from triggerdotdev/onboarding
Fixed button
2023-02-02 22:00:12 +00:00
Eric Allam ad70dbc5dd Read from the latest trigger messages when creating workflow trigger subscription 2023-02-02 15:13:03 +00:00
Eric Allam a5d8290663 New emoji and fixed the runs image 2023-02-01 14:11:33 +00:00
Eric Allam 4fa967b2b1 Merge pull request #37 from triggerdotdev/dev
Fix builds by locking turbo dep to 1.7.0
2023-02-01 13:48:29 +00:00
Eric Allam cd11246d9a Merge pull request #36 from triggerdotdev/dev
README and mobile updates
2023-02-01 11:37:09 +00:00
Eric Allam f377aba208 Merge pull request #35 from triggerdotdev/dev
Move to dual license
2023-01-31 14:33:33 +00:00
Eric Allam 55a9031526 Merge pull request #34 from triggerdotdev/dev
Create separate packages for each integration
2023-01-31 14:11:23 +00:00
657 changed files with 638963 additions and 2855 deletions
+8 -1
View File
@@ -7,5 +7,12 @@
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": ["wss", "webapp"]
"ignore": [
"wss",
"webapp",
"integrations",
"emails",
"internal-cli",
"integration-catalog"
]
}
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/sdk": patch
---
Fixed an error message
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/sdk": patch
---
Added kv storage to persist data in between runs and between workflows
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/sdk": patch
---
Fix ESM error by dynamically importing ESM packages (chalk, terminal-link, etc.)
+33
View File
@@ -0,0 +1,33 @@
{
"mode": "pre",
"tag": "next",
"initialVersions": {
"integrations": "1.0.0",
"webapp": "1.0.0",
"wss": "1.0.0",
"@trigger.dev/airtable": "0.1.27",
"@trigger.dev/notion": "0.1.26",
"@trigger.dev/sendgrid": "0.1.27",
"@trigger.dev/github": "0.1.27",
"@trigger.dev/resend": "0.1.27",
"@trigger.dev/shopify": "0.1.27",
"@trigger.dev/slack": "0.1.27",
"@trigger.dev/whatsapp": "0.1.25",
"@trigger.dev/common-schemas": "0.1.1",
"create-trigger": "0.2.0",
"emails": "1.0.0",
"integration-catalog": "0.1.16",
"@trigger.dev/integration-sdk": "0.1.17",
"internal-bridge": "0.0.1",
"internal-cli": "0.0.1",
"internal-platform": "0.0.3",
"internal-pulsar": "0.0.1",
"@trigger.dev/sdk": "0.2.21"
},
"changesets": [
"eleven-gorillas-obey",
"little-lizards-joke",
"moody-ligers-arrive",
"shaggy-hounds-appear"
]
}
+5
View File
@@ -0,0 +1,5 @@
---
"@trigger.dev/sdk": patch
---
SDK now passes through the project ID from the env var
+2 -1
View File
@@ -45,4 +45,5 @@ yarn-error.log*
.output
apps/**/public/build
.tests-container-id.txt
.sentryclirc
.sentryclirc
.buildt
+1
View File
@@ -0,0 +1 @@
{"workspaceId":"63e5e42daf9a537ba8d9503c"}
+19 -1
View File
@@ -5,18 +5,36 @@
"version": "0.2.0",
"configurations": [
{
"command": "pnpm run dev --filter webapp",
"command": "pnpm run idev --filter webapp",
"name": "Run webapp",
"request": "launch",
"type": "node-terminal",
"cwd": "${workspaceFolder}"
},
{
"command": "pnpm run dev --filter integrations",
"name": "Run integrations",
"request": "launch",
"type": "node-terminal",
"cwd": "${workspaceFolder}"
},
{
"type": "chrome",
"request": "launch",
"name": "Chrome webapp",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}/apps/webapp/app"
},
{
"type": "node",
"request": "launch",
"name": "Debug Current Test File",
"autoAttachChildProcesses": true,
"skipFiles": ["<node_internals>/**", "**/node_modules/**"],
"program": "${workspaceRoot}/node_modules/vitest/vitest.mjs",
"args": ["run", "${relativeFile}"],
"smartStep": true,
"console": "integratedTerminal"
}
]
}
+19
View File
@@ -0,0 +1,19 @@
{
"folders": [
{
"name": "trigger.dev",
"path": "../"
},
{
"name": "Webapp",
"path": "../apps/webapp"
},
{
"name": "Integrations",
"path": "../apps/integrations"
}
],
"settings": {
"vitest.commandLine": "pnpm exec vitest"
}
}
+13 -1
View File
@@ -31,8 +31,17 @@ windows:
panes:
- cwd: /Users/eric/code/triggerdotdev/trigger.dev
commands:
- exec: pnpm run dev --filter webapp
- exec: pnpm run build --filter webapp
- exec: pnpm run i-dev --filter webapp
- cwd: /Users/eric/code/triggerdotdev/trigger.dev/apps/webapp
- title: integrations
layout:
split_direction: vertical
panes:
- cwd: /Users/eric/code/triggerdotdev/trigger.dev
commands:
- exec: pnpm run dev --filter integrations
- cwd: /Users/eric/code/triggerdotdev/trigger.dev/apps/integrations
- title: ngrok
layout:
split_direction: horizontal
@@ -43,6 +52,9 @@ windows:
- cwd: /Users/eric/code/triggerdotdev/trigger.dev
commands:
- exec: ./scripts/proxy-pizzly.sh <your-pizzly-dev>
- cwd: /Users/eric/code/triggerdotdev/trigger.dev
commands:
- exec: ./scripts/proxy-wss.sh <your-wss-dev>
- title: wss and examples
layout:
split_direction: horizontal
+6 -2
View File
@@ -9,6 +9,7 @@ To add a changeset, use `pnpm run changeset:add` and follow the instructions [he
- `@trigger.dev/sdk`
- `@trigger.dev/integration-sdk`
- `@trigger.dev/github`
- `@trigger.dev/notion`
- `@trigger.dev/slack`
- `@trigger.dev/shopify`
- `@trigger.dev/resend`
@@ -22,5 +23,8 @@ Based on the instructions [here](https://github.com/changesets/changesets/blob/m
## Pre-release instructions
- Switch into pre-release mode by running `pnpm run changeset:next`.
- Switch back into normal mode by running `pnpm run changeset:normal`.
1. Add changesets as usual `pnpm run changeset:add`
2. Switch to pre-release mode by running `pnpm run changeset:next`
3. Create version `pnpm run changeset:version`
4. Release `pnpm run changeset:release`
5. Switch back to normal mode by running `pnpm run changeset:normal`
+5 -3
View File
@@ -68,10 +68,11 @@ export PULSAR_CPP_DIR=/opt/homebrew/Cellar/libpulsar/3.1.0
If you are proxying the webapp according to step 2 then in `webapp/.env`, set the `APP_ORIGIN` to the `NGROK_SUBDOMAIN` provided to the `./scripts/proxy-webapp.sh` command, e.g. `APP_ORIGIN=https://dan-trigger-dev.eu.ngrok.io`
4. Start postgresql, pulsar, and pizzly server
4. Start postgresql, redis, pizzly server, followed by pulsar standalone
```bash
pnpm run docker:db
pnpm run docker:services
pnpm run docker:pulsar
```
> **Note:** The npm script will complete while Docker sets up the container in the background. Ensure that Docker has finished and your container is running before proceeding.
@@ -173,7 +174,8 @@ pnpm install
1. Ensure the docker containers are running
```bash
pnpm run docker:db
pnpm run docker:services
pnpm run docker:pulsar
```
2. Run the webapp
+2 -3
View File
@@ -9,7 +9,7 @@
</div>
# **⚡️ Trigger.dev**
# ** Trigger.dev**
### **The developer-first open source Zapier alternative.**
@@ -172,8 +172,7 @@ new Trigger({
One of the most powerful features of Trigger.dev is the [runs page](https://docs.trigger.dev/viewing-runs). All of the steps in a workflow, including the initial event, can be viewed in detail. See the status / output of each step, the logs, rich previews, errors and much more.
![Viewing runs](https://mintlify.s3-us-west-1.amazonaws.com/api-hero/images/run-succeeded.png)
![Viewing runs](https://imagedelivery.net/3TbraffuDZ4aEf8KWOmI_w/7343f3b2-2342-493b-5007-78f60ba5b700/public)
&nbsp;
+21
View File
@@ -0,0 +1,21 @@
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier"
],
"env": {
"node": true,
"commonjs": true
},
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"root": true,
"rules": {
"@typescript-eslint/explicit-function-return-type": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-vars": "off",
"no-console": "off"
},
"ignorePatterns": ["**/dist/*.js"]
}
+105
View File
@@ -0,0 +1,105 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
.DS_Store
+1
View File
@@ -0,0 +1 @@
{ "workspaceId": "63ea6cff29733e58db1e6b80" }
+4
View File
@@ -0,0 +1,4 @@
node_modules
/build
.env
+55
View File
@@ -0,0 +1,55 @@
FROM node:16-bullseye AS pruner
RUN apt-get update && apt-get install openssl -y
WORKDIR /app
RUN npm install turbo@1.7.0 -g
COPY . .
RUN turbo prune --scope=integrations --docker
RUN find . -name "node_modules" -type d -prune -exec rm -rf '{}' +
# Base strategy to have layer caching
FROM node:16-bullseye AS base
RUN apt-get update && apt-get install openssl -y
WORKDIR /app
COPY .gitignore .gitignore
COPY --from=pruner /app/out/json/ .
COPY --from=pruner /app/out/pnpm-lock.yaml ./pnpm-lock.yaml
COPY --from=pruner /app/out/pnpm-workspace.yaml ./pnpm-workspace.yaml
FROM base AS production-deps
WORKDIR /app
RUN npm install turbo@1.7.0 -g
RUN corepack enable
ENV NODE_ENV production
COPY --from=pruner /app/out/full/apps/integrations/prisma/schema.prisma /app/apps/integrations/prisma/schema.prisma
RUN pnpm install --prod --frozen-lockfile
RUN pnpx prisma generate --schema /app/apps/integrations/prisma/schema.prisma
FROM base AS builder
WORKDIR /app
RUN npm install turbo@1.7.0 -g
COPY turbo.json turbo.json
RUN corepack enable
COPY --from=pruner /app/out/full/ .
ENV NODE_ENV development
RUN pnpm install --ignore-scripts --frozen-lockfile
ENV NODE_ENV production
RUN pnpm run generate
RUN pnpm run build --filter=integrations...
RUN pnpx prisma migrate deploy --schema apps/integrations/prisma/schema.prisma
# Runner
FROM node:16-bullseye AS runner
RUN apt-get update && apt-get install openssl -y
WORKDIR /app
RUN corepack enable
ENV NODE_ENV production
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 expressjs
RUN chown -R expressjs:nodejs /app
USER expressjs
COPY --from=pruner --chown=expressjs:nodejs /app/out/full/ .
COPY --from=production-deps --chown=expressjs:nodejs /app .
COPY --from=builder --chown=expressjs:nodejs /app/apps/integrations/dist/index.js ./apps/integrations/dist/index.js
ENTRYPOINT ["pnpm", "--filter", "integrations", "run", "start"]
+2
View File
@@ -0,0 +1,2 @@
# trigger-integrations
You can create API integrations using this data and system
+71
View File
@@ -0,0 +1,71 @@
{
"private": true,
"name": "integrations",
"version": "1.0.0",
"description": "API integrations in a format that can be used to generate clients",
"main": "./dist/index.js",
"scripts": {
"build": "tsup",
"start": "node dist/index.js",
"dev": "node -r dotenv/config dist/index.js",
"test": "vitest",
"typecheck": "tsc -b",
"lint": "eslint --no-error-on-unmatched-pattern src/**",
"lint-fix": "eslint --no-error-on-unmatched-pattern --fix src/**",
"generate-integrations": "NODE_OPTIONS=--max-old-space-size=16384 tsx src/trigger/sdk/generate.ts generate",
"generate": "prisma generate",
"convert": "tsx src/tools/schemas/typescript-to-json-schema.ts convert",
"db:migrate:deploy": "prisma migrate deploy",
"db:migrate:dev": "prisma migrate dev"
},
"dependencies": {
"@cfworker/json-schema": "^1.12.5",
"@prisma/client": "^4.3.0",
"@sentry/node": "^7.38.0",
"ajv": "^8.12.0",
"express": "^4.18.1",
"express-async-errors": "^3.1.1",
"json-pointer": "^0.6.2",
"json-schema-deref-sync": "^0.14.0",
"json-schema-to-typescript": "^11.0.3",
"loglevel": "^1.8.1",
"morgan": "^1.10.0",
"node-fetch": "^3.3.0",
"node-object-hash": "^2.3.10",
"zod": "^3.20.2"
},
"devDependencies": {
"@apidevtools/json-schema-ref-parser": "^10.1.0",
"@types/eslint": "^8.4.6",
"@types/express": "^4.17.13",
"@types/json-pointer": "^1.0.31",
"@types/morgan": "^1.9.3",
"@types/node": "^18.13.0",
"@typescript-eslint/eslint-plugin": "^5.51.0",
"commander": "^9.4.1",
"concurrently": "^7.6.0",
"dotenv": "^16.0.3",
"eslint": "^8.34.0",
"eslint-config-prettier": "^8.5.0",
"eslint-config-standard-with-typescript": "^34.0.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-n": "^15.6.1",
"eslint-plugin-promise": "^6.1.1",
"nock": "^13.3.0",
"nodemon": "^2.0.19",
"prisma": "^4.3.0",
"rimraf": "^4.1.2",
"tiny-invariant": "^1.2.0",
"ts-json-schema-generator": "^1.2.0",
"ts-morph": "^17.0.1",
"tsup": "^6.6.2",
"tsx": "^3.12.3",
"typescript": "^4.9.5",
"vite": "^4.1.1",
"vite-tsconfig-paths": "^4.0.5",
"vitest": "^0.28.4"
},
"engines": {
"node": ">=16.0.0"
}
}
@@ -0,0 +1,20 @@
-- CreateTable
CREATE TABLE "Cache" (
"id" TEXT NOT NULL,
"namespace" TEXT NOT NULL,
"key" TEXT NOT NULL,
"value" TEXT NOT NULL,
"expiresAt" TIMESTAMP(3) NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Cache_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "Cache_key_key" ON "Cache"("key");
-- CreateIndex
CREATE INDEX "Cache_namespace_key_idx" ON "Cache"("namespace", "key");
-- CreateIndex
CREATE UNIQUE INDEX "Cache_namespace_key_key" ON "Cache"("namespace", "key");
@@ -0,0 +1,5 @@
-- DropIndex
DROP INDEX "Cache_key_key";
-- DropIndex
DROP INDEX "Cache_namespace_key_idx";
@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "Cache" ALTER COLUMN "expiresAt" DROP NOT NULL;
@@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (i.e. Git)
provider = "postgresql"
+22
View File
@@ -0,0 +1,22 @@
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
output = "../node_modules/.prisma/client"
binaryTargets = ["native", "debian-openssl-1.1.x"]
previewFeatures = ["orderByNulls"]
}
model Cache {
id String @id @default(cuid())
namespace String
key String
value String
expiresAt DateTime?
createdAt DateTime @default(now())
@@unique([namespace, key])
}
@@ -0,0 +1,34 @@
import { InputSpec } from "core/action/types";
export function createParametersBody(
inputSpec: InputSpec,
params?: Record<string | number, any> | undefined
) {
//separate the parameters and body by looking at the spec and pulling properties out
let parameters: Record<string, any> | undefined = undefined;
let body: any = undefined;
if (params) {
inputSpec.parameters?.forEach((p) => {
if (!parameters) {
parameters = {};
}
parameters[p.name] = params[p.name];
});
//everything left should go in the body
if (inputSpec.body) {
body = {};
Object.keys(params).forEach((name) => {
if (!inputSpec.parameters?.find((p) => p.name === name)) {
body[name] = params[name];
}
});
}
}
return {
parameters,
body,
};
}
@@ -0,0 +1,50 @@
import { DisplayProperties } from "core/action/types";
import { Request, Response } from "express";
import { catalog } from "integrations/catalog";
import { z } from "zod";
import { createParametersBody } from "./createParametersBody";
import { getServiceAction } from "./validation";
const requestBodySchema = z.object({
params: z.record(z.string().or(z.number()), z.any()).optional(),
});
export async function handleActionDisplay(req: Request, res: Response) {
const serviceActionResult = getServiceAction(req.params);
if (!serviceActionResult.success) {
res
.status(404)
.send(
JSON.stringify({ success: false, error: serviceActionResult.error })
);
return;
}
const { service, action } = serviceActionResult;
const parsedRequestBody = requestBodySchema.safeParse(req.body);
if (!parsedRequestBody.success) {
res.status(400).send(
JSON.stringify({
success: false,
error: {
type: "invalid_body",
message: "Action not found",
service,
action,
issues: parsedRequestBody.error.issues,
},
})
);
return;
}
const requestData = createParametersBody(
action.spec.input,
parsedRequestBody.data.params
);
const displayProperties = await action.displayProperties(requestData);
res.send(JSON.stringify({ success: true, properties: displayProperties }));
}
@@ -0,0 +1,148 @@
import { PostgresCacheService } from "cache/postgresCache";
import { AuthCredentials } from "core/authentication/types";
import { Service } from "core/service/types";
import { validateInputs } from "core/validation/inputs";
import { Request, Response } from "express";
import { z } from "zod";
import { error, ReturnResponse } from "../requestUtilities";
import { createParametersBody } from "./createParametersBody";
import { getServiceAction } from "./validation";
const requestBodySchema = z.object({
credentials: z.object({ accessToken: z.string() }).optional(),
params: z.record(z.string().or(z.number()), z.any()).optional(),
metadata: z.object({
requestId: z.string(),
workflowId: z.string(),
connectionId: z.string(),
}),
});
export async function handleAction(req: Request, res: Response) {
const serviceActionResult = getServiceAction(req.params);
if (!serviceActionResult.success) {
res
.status(404)
.send(JSON.stringify(error(404, false, serviceActionResult.error)));
return;
}
const { service, action } = serviceActionResult;
const parsedRequestBody = requestBodySchema.safeParse(req.body);
if (!parsedRequestBody.success) {
res.status(400).send(
JSON.stringify(
error(400, false, {
type: "invalid_body",
message: "Action not found",
service,
action,
issues: parsedRequestBody.error.issues,
})
)
);
return;
}
//for v1 of this API we're building the credentials from the action
//this is fine for now but we'll want to use the connection in future to cover complex cases
let credentials: AuthCredentials | undefined = undefined;
if (parsedRequestBody.data.credentials && action.spec.input.security) {
const firstSecurityMethod = Object.entries(action.spec.input.security)[0];
if (firstSecurityMethod) {
const [name, scopes] = firstSecurityMethod;
//get the full info from the service
const securityMethod = service.authentication[name];
switch (securityMethod.type) {
case "oauth2":
credentials = {
type: "oauth2",
name,
accessToken: parsedRequestBody.data.credentials.accessToken,
scopes,
};
break;
case "api_key":
credentials = {
type: "api_key",
name,
api_key: parsedRequestBody.data.credentials.accessToken,
scopes,
};
break;
default:
throw new Error(
`Not implemented credentials for: ${JSON.stringify(securityMethod)}`
);
}
}
}
const { parameters, body } = createParametersBody(
action.spec.input,
parsedRequestBody.data.params
);
const inputValidationResult = await validateInputs(action.spec.input, {
parameters,
body,
credentials,
});
if (!inputValidationResult.success) {
res
.status(400)
.send(JSON.stringify(error(400, false, inputValidationResult.error)));
return;
}
const { metadata } = parsedRequestBody.data;
const cache = new PostgresCacheService(`${metadata.connectionId}-${service}`);
try {
const data = await action.action(
{ credentials, parameters, body },
cache,
metadata
);
//convert into the format for the webapp
const response: ReturnResponse = {
ok: true,
isRetryable: isRetryable(service, data.status),
response: {
output: data.body ?? {},
context: {
statusCode: data.status,
headers: data.headers,
},
},
};
res.send(JSON.stringify(response));
} catch (e: any) {
console.error(e);
if (e instanceof Error) {
res
.status(500)
.send(JSON.stringify(error(500, false, { error: JSON.stringify(e) })));
return;
}
if ("error" in e) {
res.status(500).send(JSON.stringify(error(500, false, e.error)));
return;
}
res
.status(500)
.send(JSON.stringify(error(500, false, { error: JSON.stringify(e) })));
}
}
function isRetryable(service: Service, status: number): boolean {
return service.retryableStatusCodes.includes(status);
}
@@ -0,0 +1,50 @@
import { Action } from "core/action/types";
import { Service } from "core/service/types";
import { Request } from "express";
import { catalog } from "integrations/catalog";
type ServiceActionResult =
| {
success: true;
service: Service;
action: Action;
}
| {
success: false;
error: Record<string, any>;
};
export function getServiceAction(
params: Request["params"]
): ServiceActionResult {
const { service, action } = params;
const matchingService = Object.values(catalog.services).find(
(s) => s.service === service
);
if (!matchingService) {
return {
success: false,
error: { type: "missing_service", message: "Service not found", service },
};
}
const matchingAction = Object.values(matchingService.actions).find(
(a) => a.name === action
);
if (!matchingAction) {
return {
success: false,
error: {
type: "missing_action",
message: "Action not found",
service,
action,
},
};
}
return { success: true, service: matchingService, action: matchingAction };
}
+116
View File
@@ -0,0 +1,116 @@
import { AuthCredentials } from "core/authentication/types";
import { HTTPMethodSchema } from "core/endpoint/types";
import { serviceFetch } from "core/fetch/serviceFetch";
import { Request, Response } from "express";
import { catalog } from "integrations/catalog";
import { z } from "zod";
import { error } from "./requestUtilities";
const requestBodySchema = z.object({
credentials: z.object({ accessToken: z.string() }).optional(),
path: z.string(),
method: HTTPMethodSchema,
headers: z.record(z.string(), z.string()).optional(),
body: z.any(),
});
type ReturnResponse = {
response: NormalizedResponse;
isRetryable: boolean;
ok: boolean;
};
type NormalizedResponse = {
output: NonNullable<any>;
context: any;
};
export async function handleAction(req: Request, res: Response) {
const { service } = req.params;
const matchingService = Object.values(catalog.services).find(
(s) => s.service === service
);
if (!matchingService) {
return {
success: false,
error: { type: "missing_service", message: "Service not found", service },
};
}
const parsedRequestBody = requestBodySchema.safeParse(req.body);
if (!parsedRequestBody.success) {
res.status(400).send(
JSON.stringify(
error(400, false, {
type: "invalid_body",
message: "Invalid input",
issues: parsedRequestBody.error.issues,
})
)
);
return;
}
//v1 build credentials from the service authentication info
let credentials: AuthCredentials | undefined = undefined;
if (parsedRequestBody.data.credentials) {
//just get the first security method
const [name, securityMethod] = Object.entries(
matchingService.authentication
)[0];
switch (securityMethod.type) {
case "oauth2":
credentials = {
type: "oauth2",
name,
accessToken: parsedRequestBody.data.credentials.accessToken,
scopes: Object.keys(securityMethod.scopes),
};
break;
case "api_key":
credentials = {
type: "api_key",
name,
api_key: parsedRequestBody.data.credentials.accessToken,
scopes: Object.keys(securityMethod.scopes),
};
break;
default:
throw new Error(
`Not implemented credentials for: ${JSON.stringify(securityMethod)}`
);
}
}
const url = matchingService.baseUrl + parsedRequestBody.data.path;
const data = await serviceFetch({
url,
method: parsedRequestBody.data.method,
headers: parsedRequestBody.data.headers,
body: parsedRequestBody.data.body,
authentication: matchingService.authentication,
credentials,
});
const response: ReturnResponse = {
ok: true,
isRetryable: isRetryable(data.status),
response: {
output: data.body ?? {},
context: {
statusCode: data.status,
headers: data.headers,
},
},
};
res.send(JSON.stringify(response));
}
function isRetryable(statusCode: number) {
return [408, 429, 500, 502, 503, 504].includes(statusCode);
}
@@ -0,0 +1,29 @@
export type ReturnResponse = {
response: NormalizedResponse;
isRetryable: boolean;
ok: boolean;
};
export type NormalizedResponse = {
output: NonNullable<any>;
context: any;
};
export function error(
status: number,
isRetryable: boolean,
error: Record<string, any>
): ReturnResponse {
const response: ReturnResponse = {
ok: false,
isRetryable,
response: {
output: error,
context: {
statusCode: status,
headers: {},
},
},
};
return response;
}
+38
View File
@@ -0,0 +1,38 @@
import { IntegrationAuthentication } from "core/authentication/types";
import { Service } from "core/service/types";
import { Request, Response } from "express";
import { catalog } from "integrations/catalog";
type ServiceMetadata = {
name: string;
service: string;
version: string;
icon: string;
live: boolean;
authentication: IntegrationAuthentication;
};
export async function handleServices(_req: Request, res: Response) {
const servicesMetadata: Record<string, ServiceMetadata> = {};
Object.entries(catalog.services).forEach(([key, service]) => {
if (service.live === false) return;
const metadata = omitExtraInfo(service);
servicesMetadata[key] = {
...metadata,
icon: `/integrations/${metadata.service}.png`,
};
});
res.send(
JSON.stringify({
services: servicesMetadata,
})
);
}
function omitExtraInfo(
service: Service
): Omit<Service, "actions" | "retryableStatusCodes"> {
const { actions, retryableStatusCodes, ...rest } = service;
return rest;
}
+58
View File
@@ -0,0 +1,58 @@
import { PrismaClient, Prisma } from ".prisma/client";
import invariant from "tiny-invariant";
export { Prisma };
let prisma: PrismaClient;
declare global {
// eslint-disable-next-line no-var
var __db__: PrismaClient;
}
// this is needed because in development we don't want to restart
// the server with every change, but we want to make sure we don't
// create a new connection to the DB with every change either.
// in production we'll have a single connection to the DB.
if (process.env.NODE_ENV === "production") {
prisma = getClient();
} else {
if (!global.__db__) {
global.__db__ = getClient();
}
prisma = global.__db__;
}
function getClient() {
const { DATABASE_URL } = process.env;
invariant(typeof DATABASE_URL === "string", "DATABASE_URL env var not set");
// Remove the username:password in the url and print that to the console
const urlWithoutCredentials = new URL(DATABASE_URL);
urlWithoutCredentials.password = "";
console.log(
`1. 🔌 setting up prisma client to ${urlWithoutCredentials.toString()}`
);
const client = new PrismaClient({
datasources: {
db: {
url: DATABASE_URL,
},
},
log: ["warn", "error"],
});
console.log(`2.0 🔌 prisma client connecting`);
// connect eagerly
client.$connect();
console.log(`3.0 🔌 prisma client connected`);
return client;
}
export { prisma };
export type { PrismaClient } from ".prisma/client";
+53
View File
@@ -0,0 +1,53 @@
import type { Prisma, Cache } from ".prisma/client";
import { prisma } from "./db.server";
import { CacheService } from "core/cache/types";
export class PostgresCacheService implements CacheService {
constructor(private readonly namespace: string) {}
async get(key: string) {
const cachedRow = await prisma.cache.findFirst({
where: {
namespace: this.namespace,
key,
OR: [
{ expiresAt: null },
{
expiresAt: {
gt: new Date(),
},
},
],
},
});
if (cachedRow) {
return cachedRow.value;
}
return null;
}
async set(key: string, value: string, ttl?: number): Promise<void> {
const expiresAt = ttl ? new Date(Date.now() + ttl * 1000) : null;
await prisma.cache.upsert({
where: {
namespace_key: {
namespace: this.namespace,
key,
},
},
update: {
value,
expiresAt,
},
create: {
namespace: this.namespace,
key,
value,
expiresAt,
},
});
}
}
@@ -0,0 +1,27 @@
import { EndpointSpecMetadata } from "core/endpoint/types";
import { RequestData } from "core/request/types";
export async function getDisplayProperties(
data: RequestData,
displayProperties: EndpointSpecMetadata["displayProperties"]
) {
return {
title: interpolateString(displayProperties.title, {
parameters: data.parameters,
body: data.body,
}),
};
}
function interpolateString(
template: string,
data: Record<string | number, any>
) {
return template.replace(/\${([^}]+)}/g, (_, key) => {
return key
.split(".")
.reduce((obj: Record<string | number, any>, prop: string | number) => {
return obj[prop];
}, data);
});
}
@@ -0,0 +1,89 @@
import { CacheService } from "core/cache/types";
import { Endpoint } from "core/endpoint/types";
import { RequestData, RequestResponse } from "core/request/types";
import { getDisplayProperties } from "./getDisplayProperties";
import { Action, InputSpec, Metadata, OutputSpec } from "./types";
import { makeInputSpec, makeOutputSpec } from "./utilities";
/** Create an action where you specify the spec and action */
export const makeAdvancedAction = ({
endpoint,
spec,
action,
}: {
endpoint: Endpoint;
spec: Action["spec"];
action: (
data: RequestData,
cache?: CacheService,
metadata?: Metadata
) => Promise<RequestResponse>;
}) => {
const displayProperties = async (data: RequestData) => {
return getDisplayProperties(
data,
endpoint.spec.endpointSpec.metadata.displayProperties
);
};
return {
name: endpoint.spec.endpointSpec.metadata.name,
description: endpoint.spec.endpointSpec.metadata.description,
path: endpoint.spec.endpointSpec.path,
method: endpoint.spec.endpointSpec.method,
spec,
action,
displayProperties,
};
};
/** Creates an action where the spec and data is manipulated */
export const makeSimpleAction = (
endpoint: Endpoint,
processSpec?: (specs: Action["spec"]) => Action["spec"],
preRequest?: (data: RequestData) => RequestData
) => {
let specs = {
input: makeInputSpec(endpoint),
output: makeOutputSpec(endpoint),
};
if (processSpec) {
specs = processSpec(specs);
}
const action = async (
data: RequestData,
cache?: CacheService,
metadata?: Metadata
) => {
if (preRequest) {
data = preRequest(data);
}
//a simple request doesn't use the cache or metadata
return await endpoint.request(data);
};
return makeAdvancedAction({
endpoint,
spec: specs,
action,
});
};
export const makeSimpleActions = <
TEndpoints extends Record<string, Endpoint>,
K extends keyof TEndpoints
>(
endpoints: TEndpoints,
processSpec?: (specs: Action["spec"]) => Action["spec"],
preRequest?: (data: RequestData) => RequestData
): Record<K, Action> => {
const actions: any = {};
Object.entries(endpoints).forEach(([name, endpoint]) => {
actions[name as K] = makeSimpleAction(endpoint, processSpec, preRequest);
});
return actions;
};
@@ -0,0 +1,42 @@
import { CacheService } from "core/cache/types";
import { EndpointSpec, HTTPMethod } from "core/endpoint/types";
import { RequestData, RequestResponse } from "core/request/types";
export type InputSpec = {
security?: EndpointSpec["security"];
parameters?: EndpointSpec["parameters"];
body?: NonNullable<EndpointSpec["request"]["body"]>["schema"];
};
export type OutputSpec = {
responses: EndpointSpec["responses"];
};
export type Metadata = Record<string, any>;
export type DisplayProperties = {
title: string;
};
export type Action = {
name: string;
description: string;
path: string;
method: HTTPMethod;
spec: {
input: InputSpec;
output: OutputSpec;
};
action: (
/** The data to be sent to the endpoint */
data: RequestData,
/** The cache service to use for caching */
cache?: CacheService,
/** Additional metadata that can be used to modify the request */
metadata?: Metadata
) => Promise<RequestResponse>;
displayProperties: (
/** The data to be sent to the endpoint */
data: RequestData
) => Promise<DisplayProperties>;
};
@@ -0,0 +1,49 @@
import { Endpoint } from "core/endpoint/types";
import { InputSpec, OutputSpec } from "./types";
export function makeInputSpec(endpoint: Endpoint): InputSpec {
return {
security: endpoint.spec.endpointSpec.security,
parameters: endpoint.spec.endpointSpec.parameters,
body: endpoint.spec.endpointSpec.request.body?.schema,
};
}
export function makeOutputSpec(endpoint: Endpoint): OutputSpec {
return {
responses: endpoint.spec.endpointSpec.responses,
};
}
export function combineSecurityScopes(
securities: (Record<string, string[]> | undefined)[]
): Record<string, string[]> | undefined {
const securityA = securities[0];
const securityB = securities[1];
//where a key already exists, concatenate the scope arrays together
//where a key does not exist, add it to the object
let combined: Record<string, string[]> = {};
if (securityA) {
combined = {
...securityA,
};
}
if (securityB) {
for (const key in securityB) {
if (combined[key]) {
combined[key] = [...combined[key], ...securityB[key]];
} else {
combined[key] = securityB[key];
}
}
}
if (securities.length > 2) {
return combineSecurityScopes([combined, ...securities.slice(2)]);
}
return combined;
}
@@ -0,0 +1,82 @@
import { EndpointSpec } from "core/endpoint/types";
import { FetchConfig } from "core/request/types";
import { expect, test } from "vitest";
import { checkRequiredScopes, applyCredentials } from "./credentials";
import { AuthCredentials, IntegrationAuthentication } from "./types";
test("Required scopes present", async () => {
const credentials: AuthCredentials = {
type: "oauth2",
name: "authName",
accessToken: "token",
scopes: ["scope1", "scope2"],
};
const requiredScopes = ["scope1", "scope2"];
const result = checkRequiredScopes(requiredScopes, credentials);
expect(result.success).toEqual(true);
});
test("Required scopes missing", async () => {
const credentials: AuthCredentials = {
type: "oauth2",
name: "authName",
accessToken: "token",
scopes: ["scope1", "scope2"],
};
const requiredScopes = ["scope1", "scope2", "scope3"];
const result = checkRequiredScopes(requiredScopes, credentials);
expect(result.success).toEqual(false);
if (result.success) throw new Error("Should not be success");
expect(result.missingScopes).toEqual(["scope3"]);
});
test("Applied credentials", async () => {
const credentials: AuthCredentials = {
type: "oauth2",
name: "authName",
accessToken: "123456",
scopes: ["scope1", "scope2"],
};
const endpointSecurity: EndpointSpec["security"] = {
authName: ["scope1", "scope2"],
};
const integrationAuthentication: IntegrationAuthentication = {
authName: {
type: "oauth2",
placement: {
in: "header",
type: "bearer",
key: "Authorization",
},
authorizationUrl: "https://example.com",
tokenUrl: "https://example.com",
flow: "accessCode",
scopes: {
scope1: "scope1",
scope2: "scope2",
},
},
};
const existingFetch: FetchConfig = {
url: "https://example.com",
method: "GET",
headers: {
"Content-Type": "application/json",
},
};
const fetchConfig = applyCredentials(existingFetch, {
endpointSecurity,
authentication: integrationAuthentication,
credentials,
});
expect(fetchConfig.headers.Authorization).toEqual("Bearer 123456");
expect(fetchConfig.headers["Content-Type"]).toEqual("application/json");
});
@@ -0,0 +1,107 @@
import { EndpointSpec } from "core/endpoint/types";
import { InsufficientScopesError } from "core/request/errors";
import { FetchConfig } from "core/request/types";
import { IntegrationAuthentication, AuthCredentials } from "./types";
/** Apply the given credentials to the given fetch config */
export function applyCredentials(
fetch: FetchConfig,
{
endpointSecurity,
authentication,
credentials,
}: {
endpointSecurity: EndpointSpec["security"];
authentication: IntegrationAuthentication;
credentials: AuthCredentials;
}
): FetchConfig {
if (endpointSecurity === undefined) return fetch;
// check if the credentials have the required scopes
const requiredScopes = endpointSecurity[credentials.name] ?? [];
const scopesCheckResult = checkRequiredScopes(requiredScopes, credentials);
if (!scopesCheckResult.success) {
const error: InsufficientScopesError = {
type: "insufficient_scopes",
missingScopes: scopesCheckResult.missingScopes,
};
throw error;
}
return addCredentialsToConfig(fetch, { authentication, credentials });
}
export function addCredentialsToConfig(
fetch: FetchConfig,
{
authentication,
credentials,
}: {
authentication: IntegrationAuthentication;
credentials: AuthCredentials;
}
) {
// apply the credentials
switch (credentials.type) {
case "oauth2": {
const authConfig = authentication[credentials.name];
switch (authConfig.placement.in) {
case "header": {
fetch.headers[
authConfig.placement.key
] = `Bearer ${credentials.accessToken}`;
return fetch;
}
}
break;
}
case "api_key": {
const authConfig = authentication[credentials.name];
if (authConfig.placement.in === "header") {
let value = "";
switch (authConfig.placement.type) {
case "basic":
value = `Basic ${credentials.api_key}`;
break;
case "bearer":
value = `Bearer ${credentials.api_key}`;
break;
}
fetch.headers[authConfig.placement.key] = value;
}
return fetch;
}
}
throw new Error("Invalid credentials");
}
type ScopesCheckResult =
| {
success: true;
}
| {
success: false;
missingScopes: string[];
};
/** Check if the given credentials have the required scopes */
export function checkRequiredScopes(
requiredScopes: string[],
credentials: AuthCredentials
): ScopesCheckResult {
const missingScopes = requiredScopes.filter(
(scope) => !credentials.scopes.includes(scope)
);
if (missingScopes.length > 0) {
return {
success: false,
missingScopes,
};
}
return {
success: true,
};
}
@@ -0,0 +1,61 @@
import { z } from "zod";
export type IntegrationAuthentication = Record<
string,
AuthenticationDefinition
>;
type AuthenticationDefinition = OAuth2Authentication | APIKeyAuthentication;
type OAuth2Authentication = {
type: "oauth2";
placement: AuthenticationPlacement;
authorizationUrl: string;
tokenUrl: string;
flow: "accessCode" | "implicit" | "password" | "application";
scopes: Record<string, string>;
};
type APIKeyAuthentication = {
type: "api_key";
placement: AuthenticationPlacement;
documentation: string;
scopes: Record<string, string>;
additionalFields?: {
key: string;
fieldType: "text";
name: string;
placeholder?: string;
description: string;
}[];
};
type AuthenticationPlacement = HeaderAuthentication;
interface HeaderAuthentication {
in: "header";
type: "basic" | "bearer";
key: string;
}
const OAuth2CredentialsSchema = z.object({
type: z.literal("oauth2"),
name: z.string(),
accessToken: z.string(),
scopes: z.array(z.string()),
});
const APIKeyCredentialsSchema = z.object({
type: z.literal("api_key"),
name: z.string(),
api_key: z.string(),
additionalFields: z.record(z.string(), z.string()).optional(),
scopes: z.array(z.string()),
});
export const AuthCredentialsSchema = z.discriminatedUnion("type", [
OAuth2CredentialsSchema,
APIKeyCredentialsSchema,
]);
export type AuthCredentials = z.infer<typeof AuthCredentialsSchema>;
+4
View File
@@ -0,0 +1,4 @@
export interface CacheService {
get: (key: string) => Promise<string | null>;
set: (key: string, value: string, ttl?: number) => Promise<void>;
}
+5
View File
@@ -0,0 +1,5 @@
import { Service } from "./service/types";
export type Catalog = {
services: Record<string, Service>;
};
@@ -0,0 +1,36 @@
import { IntegrationAuthentication } from "core/authentication/types";
import { requestEndpoint } from "core/request/requestEndpoint";
import { RequestData, RequestResponse, RequestSpec } from "core/request/types";
import { Endpoint, EndpointSpec } from "./types";
export const makeEndpoint = (spec: RequestSpec) => {
const request = async (data: RequestData) => {
return await requestEndpoint(spec, data);
};
return {
spec,
request,
};
};
export const makeEndpoints = <
TSpecs extends Record<string, EndpointSpec>,
K extends keyof TSpecs
>(
baseUrl: string,
authentication: IntegrationAuthentication,
specs: TSpecs
): Record<K, Endpoint> => {
const endpoints: any = {};
Object.entries(specs).forEach(([name, spec]) => {
endpoints[name as K] = makeEndpoint({
baseUrl,
endpointSpec: spec,
authentication,
});
});
return endpoints;
};
@@ -0,0 +1,78 @@
import { RequestData, RequestResponse, RequestSpec } from "core/request/types";
import { JSONSchema } from "core/schemas/types";
import { z } from "zod";
export type Endpoint = {
spec: RequestSpec;
request: (data: RequestData) => Promise<RequestResponse>;
};
export const HTTPMethodSchema = z.union([
z.literal("GET"),
z.literal("POST"),
z.literal("PUT"),
z.literal("PATCH"),
z.literal("DELETE"),
z.literal("HEAD"),
z.literal("OPTIONS"),
z.literal("TRACE"),
]);
export type HTTPMethod = z.infer<typeof HTTPMethodSchema>;
export interface EndpointSpec {
path: string;
method: HTTPMethod;
metadata: EndpointSpecMetadata;
parameters?: EndpointSpecParameter[];
security?: Record<string, string[]>;
request: EndpointSpecRequest;
responses: EndpointSpecResponse[];
}
export interface EndpointSpecParameter {
name: string;
description: string;
in: "query" | "path" | "header";
required?: boolean;
schema: JSONSchema;
}
interface EndpointSpecRequest {
headers?: Record<string, string>;
body?: {
schema: JSONSchema;
};
}
export interface EndpointSpecResponse {
/** If you return true then this response is the relevant one */
matches: ({
statusCode,
headers,
body,
}: {
statusCode: number;
headers: Record<string, string>;
body: any;
}) => boolean;
success: boolean;
name: string;
description?: string;
schema?: JSONSchema;
}
export interface EndpointSpecMetadata {
name: string;
description: string;
displayProperties: {
title: string;
};
externalDocs?: ExternalDocs;
tags: string[];
}
interface ExternalDocs {
description: string;
url: string;
}
@@ -0,0 +1,43 @@
import { RequestResponse } from "core/request/types";
import { type Response } from "node-fetch";
export async function getFetch() {
return (await import("node-fetch")).default;
}
export async function safeGetJson(response: Response) {
try {
return await response.json();
} catch (error) {
return undefined;
}
}
export function normalizeHeaders(headers: Headers): Record<string, string> {
const normalizedHeaders: Record<string, string> = {};
headers.forEach((value, key) => {
normalizedHeaders[key.toLowerCase()] = value;
});
return normalizedHeaders;
}
export function responseFromCaughtError(error: any): RequestResponse {
if (error instanceof Error) {
return {
success: false,
status: 400,
headers: {},
body: { error: error.message },
};
}
//convert the error into JSON
return {
success: false,
status: 400,
headers: {},
body: { error },
};
}
@@ -0,0 +1,29 @@
import { authentication } from "integrations/airtable/authentication";
import { startNock, stopNock } from "testing/nock";
import { describe, expect, test } from "vitest";
import { serviceFetch } from "./serviceFetch";
const authToken = () => process.env.AIRTABLE_TOKEN ?? "";
describe("serviceFetch", async () => {
test("simple GET", async () => {
const accessToken = authToken();
const nockDone = await startNock("serviceFetch.simple.get");
const response = await serviceFetch({
url: "https://api.airtable.com/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m/recHcnB1MbBr9Rd2P",
method: "GET",
authentication: authentication,
credentials: {
type: "oauth2",
name: "oauth",
accessToken,
scopes: ["data.records:read"],
},
});
expect(response.status).toEqual(200);
expect(response.success).toEqual(true);
expect(response.body).not.toBeNull();
stopNock(nockDone);
});
});
@@ -0,0 +1,73 @@
import { addCredentialsToConfig } from "core/authentication/credentials";
import {
AuthCredentials,
IntegrationAuthentication,
} from "core/authentication/types";
import { HTTPMethod } from "core/endpoint/types";
import { FetchConfig, RequestResponse } from "core/request/types";
import {
getFetch,
normalizeHeaders,
responseFromCaughtError,
safeGetJson,
} from "./fetchUtilities";
export type ServiceFetchOptions = {
url: string;
method: HTTPMethod;
headers?: Record<string, string>;
body?: any;
authentication: IntegrationAuthentication;
credentials?: AuthCredentials;
};
export async function serviceFetch({
url,
method = "GET",
headers,
body,
credentials,
authentication,
}: ServiceFetchOptions): Promise<RequestResponse> {
let fetchConfig: FetchConfig = {
url,
method,
headers: {
...headers,
},
body: JSON.stringify(body),
};
if (credentials == null) {
throw {
type: "missing_credentials",
};
}
fetchConfig = addCredentialsToConfig(fetchConfig, {
authentication,
credentials,
});
const fetchObject = {
method: fetchConfig.method,
headers: fetchConfig.headers,
body: fetchConfig.body,
};
try {
const fetch = await getFetch();
const response = await fetch(url, fetchObject);
const json = await safeGetJson(response);
return {
success: response.ok,
status: response.status,
headers: normalizeHeaders(response.headers),
body: json,
};
} catch (error: any) {
return responseFromCaughtError(error);
}
}
@@ -0,0 +1,66 @@
import { JSONSchemaError } from "core/schemas/types";
export type RequestError =
| RequestBodyInvalid
| ParameterMissing
| ParametersInvalid
| ExtraParametersError
| InsufficientScopesError
| MissingResponseSpec
| ResponseBodyInvalid
| BodyMissing
| MissingCredentialsError;
export interface RequestBodyInvalid {
type: "request_body_invalid";
errors: any[];
}
export interface BodyMissing {
type: "missing_body";
}
export interface ParameterMissing {
type: "missing_parameter";
parameter: {
name: string;
};
}
export interface ParametersInvalid {
type: "parameter_invalid";
parameter: {
name: string;
value: any;
};
errors: JSONSchemaError[];
}
export interface ExtraParametersError {
type: "extra_parameters";
parameters: Array<{
name: string;
value: any;
}>;
}
export interface MissingCredentialsError {
type: "missing_credentials";
}
export interface InsufficientScopesError {
type: "insufficient_scopes";
missingScopes: string[];
}
export interface MissingResponseSpec {
type: "no_response_spec";
status: number;
}
export interface ResponseBodyInvalid {
type: "response_invalid";
errors: Array<{ name: string; errors: JSONSchemaError[] }>;
status: number;
body?: any;
}
@@ -0,0 +1,182 @@
import { applyCredentials } from "core/authentication/credentials";
import {
getFetch,
normalizeHeaders,
responseFromCaughtError,
safeGetJson,
} from "core/fetch/fetchUtilities";
import { JSONSchemaError } from "core/schemas/types";
import {
FetchConfig,
RequestData,
RequestResponse,
RequestSpec,
} from "./types";
import * as Sentry from "@sentry/node";
export async function requestEndpoint(
{ baseUrl, endpointSpec, authentication }: RequestSpec,
{ parameters, body, credentials }: RequestData
): Promise<RequestResponse> {
const { method, security, request, responses } = endpointSpec;
let path = endpointSpec.path;
// validate the request body
if (body == null && request.body?.schema != null) {
throw {
type: "missing_body",
};
}
let headers: Record<string, string> = {};
// validate and add the parameters
if (endpointSpec.parameters != null) {
for (const parameter of endpointSpec.parameters) {
const { name, in: location, required } = parameter;
// if the parameter is missing
if (parameters === undefined || parameters[name] == null) {
if (required) {
throw {
type: "missing_parameter",
parameter: {
name,
},
};
} else {
continue;
}
}
const element = parameters[name];
//add the parameter
switch (location) {
case "path":
path = path.replace(`{${name}}`, element as string);
break;
case "query": {
if (parameter.schema?.type === "array") {
const array = element as Array<string>;
for (const item of array) {
path = `${path}${path.includes("?") ? "&" : "?"}${name}=${item}`;
}
break;
}
path = `${path}${path.includes("?") ? "&" : "?"}${name}=${element}`;
break;
}
case "header":
headers = {
...headers,
[name]: `${element}`,
};
break;
}
}
}
// add headers from the config
for (const name in request.headers) {
if (Object.prototype.hasOwnProperty.call(request.headers, name)) {
const element = request.headers[name];
headers = {
...headers,
[name]: element,
};
}
}
// build the fetch config
const url = `${baseUrl}${path}`;
let fetchConfig: FetchConfig = {
url,
method,
headers: {
...headers,
},
body: JSON.stringify(body),
};
// apply credentials
if (security != null) {
if (credentials == null) {
throw {
type: "missing_credentials",
};
}
fetchConfig = applyCredentials(fetchConfig, {
endpointSecurity: security,
authentication,
credentials,
});
}
// do the fetch and try get the JSON
const fetchObject = {
method: fetchConfig.method,
headers: fetchConfig.headers,
body: fetchConfig.body,
};
try {
const fetch = await getFetch();
const response = await fetch(fetchConfig.url, fetchObject);
const json = await safeGetJson(response);
const normalizedHeaders = normalizeHeaders(response.headers);
// start with the first response spec and loop through them, if one succeeds then return that
const specErrors: Array<{ name: string; errors: JSONSchemaError[] }> = [];
for (const spec of responses) {
const isMatch = spec.matches({
statusCode: response.status,
headers: normalizedHeaders,
body: json,
});
if (!isMatch) {
continue;
}
return {
success: spec.success,
status: response.status,
headers: normalizedHeaders,
body: json,
};
}
if (process.env.NODE_ENV === "production") {
//if it's a 2xx response, even if it fails validation we'll return it as a success
if (response.status >= 200 && response.status < 300) {
//we want to report this to Sentry though so we can improve the schemas
Sentry.captureException({
type: "response_invalid",
baseUrl: baseUrl,
spec: endpointSpec,
status: response.status,
body: json,
errors: specErrors,
});
return {
success: true,
status: response.status,
headers: normalizeHeaders(response.headers),
body: json,
};
}
}
throw {
type: "no_response_spec",
status: response.status,
body: json,
};
} catch (error: any) {
return responseFromCaughtError(error);
}
}
@@ -0,0 +1,30 @@
import {
IntegrationAuthentication,
AuthCredentials,
} from "core/authentication/types";
import { HTTPMethod, EndpointSpec } from "core/endpoint/types";
export interface FetchConfig {
url: string;
method: HTTPMethod;
headers: Record<string, string>;
body?: any;
}
export interface RequestSpec {
baseUrl: string;
endpointSpec: EndpointSpec;
authentication: IntegrationAuthentication;
}
export interface RequestData {
parameters?: Record<string, any>;
body?: any;
credentials?: AuthCredentials;
}
export interface RequestResponse {
success: boolean;
status: number;
headers?: Record<string, string>;
body?: any;
}
@@ -0,0 +1,182 @@
import { describe, expect, test } from "vitest";
import { AutoReffer } from "./autoReffer";
import { JSONSchema } from "./types";
describe("autoReffer", async () => {
test("simple", async () => {
const schema: JSONSchema = {
type: "object",
properties: {
type: {
type: "string",
const: "person",
},
person: {
title: "Person",
type: "object",
properties: {
email: {
type: "string",
},
timezone: {
type: "string",
enum: [
"Africa/Abidjan",
"Africa/Accra",
"Africa/Addis_Ababa",
"Africa/Algiers",
"Africa/Asmara",
"Africa/Asmera",
],
},
props: {
anyOf: [
{
type: "object",
properties: {
first: {
type: "string",
},
last: {
type: "string",
},
},
},
],
},
},
additionalProperties: false,
},
parent: {
title: "Person",
type: "object",
properties: {
email: {
type: "string",
},
timezone: {
type: "string",
enum: [
"Africa/Abidjan",
"Africa/Accra",
"Africa/Addis_Ababa",
"Africa/Algiers",
"Africa/Asmara",
"Africa/Asmera",
],
},
props: {
anyOf: [
{
type: "object",
properties: {
first: {
type: "string",
},
last: {
type: "string",
},
},
},
],
},
},
additionalProperties: false,
},
id: {
type: "string",
},
tz: {
type: "string",
enum: [
"Africa/Abidjan",
"Africa/Accra",
"Africa/Addis_Ababa",
"Africa/Algiers",
"Africa/Asmara",
"Africa/Asmera",
],
},
},
required: ["type", "person", "id"],
additionalProperties: false,
};
const autoReffer = new AutoReffer(schema);
const optimizedSchema = autoReffer.optimize();
expect(optimizedSchema).toMatchInlineSnapshot(`
{
"additionalProperties": false,
"definitions": {
"Person": {
"additionalProperties": false,
"properties": {
"email": {
"type": "string",
},
"props": {
"anyOf": [
{
"$ref": "#/definitions/Props",
},
],
},
"timezone": {
"$ref": "#/definitions/Timezone",
},
},
"title": "Person",
"type": "object",
},
"Props": {
"properties": {
"first": {
"type": "string",
},
"last": {
"type": "string",
},
},
"type": "object",
},
"Timezone": {
"enum": [
"Africa/Abidjan",
"Africa/Accra",
"Africa/Addis_Ababa",
"Africa/Algiers",
"Africa/Asmara",
"Africa/Asmera",
],
"type": "string",
},
},
"properties": {
"id": {
"type": "string",
},
"parent": {
"$ref": "#/definitions/Person",
},
"person": {
"$ref": "#/definitions/Person",
},
"type": {
"const": "person",
"type": "string",
},
"tz": {
"$ref": "#/definitions/Timezone",
},
},
"required": [
"type",
"person",
"id",
],
"type": "object",
}
`);
});
});
@@ -0,0 +1,222 @@
import { JSONSchema } from "./types";
import nodeObjectHash from "node-object-hash";
import pointer from "json-pointer";
type JSONPointer = string[];
const hasher = nodeObjectHash({ sort: true });
type Options = {
refIfMoreThan: number;
};
export class AutoReffer {
#schemaPointers = new Map<string, JSONPointer[]>();
#schema: JSONSchema;
#options: Options;
constructor(schema: JSONSchema, options: Options = { refIfMoreThan: 2 }) {
this.#schema = schema;
this.#options = options;
}
optimize() {
this.#walk(this.#schema, []);
const optimizedSchema = this.#addRefs();
return optimizedSchema;
}
#walk(schema: JSONSchema, pointer: JSONPointer) {
if (schema.type === "object" || (schema.type === "string" && schema.enum)) {
const hash = hasher.hash(schema);
const existingPath = this.#schemaPointers.get(hash);
if (existingPath) {
existingPath.push(pointer);
} else {
this.#schemaPointers.set(hash, [pointer]);
}
}
if (schema.properties) {
for (const [key, value] of Object.entries(schema.properties)) {
if (typeof value === "boolean") continue;
this.#walk(value, [...pointer, "properties", key]);
}
}
if (schema.items) {
if (typeof schema.items === "boolean") return;
this.#walk(schema.items, [...pointer, "items"]);
}
if (schema.additionalProperties) {
if (typeof schema.additionalProperties === "boolean") return;
this.#walk(schema.additionalProperties, [
...pointer,
"additionalProperties",
]);
}
if (schema.allOf) {
schema.allOf.forEach((item, index) => {
this.#walk(item, [...pointer, "allOf", `${index}`]);
});
}
if (schema.anyOf) {
schema.anyOf.forEach((item, index) => {
this.#walk(item, [...pointer, "anyOf", `${index}`]);
});
}
if (schema.oneOf) {
schema.oneOf.forEach((item, index) => {
this.#walk(item, [...pointer, "oneOf", `${index}`]);
});
}
}
#addRefs(): JSONSchema {
const newSchema: JSONSchema = JSON.parse(JSON.stringify(this.#schema));
//create definitions structure if it doesn't exist
if (!newSchema.definitions) {
newSchema.definitions = {};
}
//turn the map into an array of [hash, pointers]
const schemaPaths = Array.from(this.#schemaPointers.entries());
//filter out the ones that are not used more than the threshold
const filteredSchemaPaths = schemaPaths.filter(
([hash, pointers]) => pointers.length >= this.#options.refIfMoreThan
);
//now flatten it to an array of pointers with name
const names = new Set<string>();
const pointers = filteredSchemaPaths.flatMap(([hash, pointers]) => {
//the name must be unique
const name = this.#inventName(pointers, newSchema, names);
return pointers.map((p) => ({
pointer: p,
name: name,
}));
});
//now we want to sort them by their path, so we start out with the deepest ones in the tree
const sortedPointers = pointers.sort((a, b) => {
return b.pointer.join("/").localeCompare(a.pointer.join("/"));
});
for (let index = 0; index < sortedPointers.length; index++) {
const element = sortedPointers[index];
try {
const originalObject = pointer.get(newSchema, element.pointer);
const ref = `#/definitions/${element.name}`;
newSchema.definitions[element.name] = originalObject;
//set the ref
pointer.set(newSchema, element.pointer, { $ref: ref });
} catch (e) {
//
}
}
return newSchema;
}
#inventName(
pointers: JSONPointer[],
schema: JSONSchema,
names: Set<string>
): string {
const candidates: string[] = [];
for (const ptr of pointers) {
try {
const object = pointer.get(schema, ptr);
if (object.title) {
candidates.push(object.title);
}
} catch (e) {
//
}
}
if (candidates.length > 0) {
const mostCommon = mode(candidates);
if (mostCommon) {
const name = toTitleCase(mostCommon);
if (!names.has(name)) {
names.add(name);
return name;
}
//if the name is already taken, we need to add a number to it
let i = 1;
while (names.has(`${name}${i}`)) {
i++;
}
names.add(`${name}${i}`);
return `${name}${i}`;
}
}
//failing finding a title we can look at the path and try create a name from that
const namesFromPointer = pointers.map((ptr) =>
findAppropriateNameFromPointer(ptr)
);
const mostCommon = mode(namesFromPointer);
const name = toTitleCase(mostCommon ?? namesFromPointer[0]);
if (!names.has(name)) {
names.add(name);
return name;
}
//if the name is already taken, we need to add a number to it
let i = 1;
while (names.has(`${name}${i}`)) {
i++;
}
names.add(`${name}${i}`);
return `${name}${i}`;
}
}
function mode(arr: string[]) {
return arr
.sort(
(a, b) =>
arr.filter((v) => v === a).length - arr.filter((v) => v === b).length
)
.pop();
}
//remove spaces and convert to TitleCase, deal with single words
function toTitleCase(str: string) {
return str
.split(" ")
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
.join("");
}
function nameIsJustNumbers(name: string | undefined) {
if (!name) return false;
return /^\d+$/.test(name);
}
function findAppropriateNameFromPointer(pointer: JSONPointer): string {
//start with the last segment and loop backwards
for (let i = pointer.length - 1; i >= 0; i--) {
const name = pointer[i];
if (name === "anyOf" || name === "oneOf" || name === "allOf") {
continue;
}
//check if the segment is a number, if so we need to look at the previous segment
if (!nameIsJustNumbers(name)) {
return name;
}
}
return "Item";
}
@@ -0,0 +1 @@
declare module "json-schema-deref-sync";
@@ -0,0 +1,235 @@
import { JSONSchema, JSONSchemaInstanceType } from "./types";
export function makeStringSchema(
title: string,
description?: string,
options?: {
defaultValue?: string;
const?: string;
enum?: string[];
}
): JSONSchema {
const schema: JSONSchema = {
type: "string",
title,
};
if (description) {
schema.description = description;
}
if (options?.defaultValue) {
schema.default = options.defaultValue;
}
if (options?.enum) {
schema.enum = options.enum;
}
if (options?.const) {
schema.const = options.const;
}
return schema;
}
export function makeNumberSchema(
title: string,
description?: string,
options?: {
defaultValue: number;
}
): JSONSchema {
const schema: JSONSchema = {
type: "number",
title,
};
if (description) {
schema.description = description;
}
if (options?.defaultValue) {
schema.default = options.defaultValue;
}
return schema;
}
export function makeBooleanSchema(
title: string,
description?: string,
options?: {
defaultValue?: boolean;
enum?: boolean;
const?: boolean;
}
): JSONSchema {
const schema: JSONSchema = {
title,
type: "boolean",
};
if (description) {
schema.description = description;
}
if (options?.defaultValue) {
schema.default = options.defaultValue;
}
if (options?.enum) {
schema.enum = [options.enum];
}
if (options?.const) {
schema.const = options.const;
}
return schema;
}
export function makeArraySchema(title: string, items: JSONSchema): JSONSchema {
return {
type: "array",
title,
items,
};
}
export function makeObjectSchema(
title: string,
options: {
optionalProperties?: Record<string, JSONSchema>;
requiredProperties?: Record<string, JSONSchema>;
additionalProperties?: boolean | JSONSchema;
}
): JSONSchema {
let properties: Record<string, JSONSchema> | undefined = undefined;
if (options.optionalProperties || options.requiredProperties) {
properties = {};
}
if (options.optionalProperties) {
properties = {
...properties,
...options.optionalProperties,
};
}
if (options.requiredProperties) {
properties = {
...properties,
...options.requiredProperties,
};
}
return {
type: "object",
title,
properties,
required: options.requiredProperties
? Object.keys(options.requiredProperties)
: undefined,
additionalProperties: options.additionalProperties,
};
}
export function makeRecordSchema(
title: string,
schema: JSONSchema
): JSONSchema {
return {
type: "object",
title,
additionalProperties: schema,
};
}
export function makeNull(): JSONSchema {
return {
type: "null",
};
}
export function makeOneOf(title: string, schemas: JSONSchema[]): JSONSchema {
return {
title,
oneOf: schemas,
};
}
export function makeAnyOf(title: string, schemas: JSONSchema[]): JSONSchema {
return {
title,
anyOf: schemas,
};
}
export function makeNullable(schema: JSONSchema): JSONSchema {
//if there's no existing type then we need to create an anyOf with null
if (!schema.type) {
return {
title: schema.title,
description: schema.description,
anyOf: [
{
type: "null",
},
schema,
],
};
}
//if there is a type then we can add the "null" type to it
let combinedTypes: JSONSchemaInstanceType[] = [];
switch (typeof schema.type) {
case "string":
combinedTypes = [schema.type, "null"];
break;
case "object":
combinedTypes = [...schema.type, "null"];
break;
default:
throw new Error(`Invalid schema type: ${typeof schema.type}`);
}
return {
...schema,
type: combinedTypes,
};
}
export function makeAllPropertiesOptional(schema: JSONSchema): JSONSchema {
if (schema.type !== "object") {
throw new Error("Schema must be an object");
}
if (!schema.properties) {
throw new Error("Schema must have properties");
}
return {
...schema,
required: [],
};
}
export function makePropertiesOptional(
schema: JSONSchema,
properties: string[]
): JSONSchema {
if (schema.type !== "object") {
throw new Error("Schema must be an object");
}
if (!schema.properties) {
throw new Error("Schema must have properties");
}
return {
...schema,
required: schema.required?.filter((p) => !properties.includes(p)),
};
}
@@ -0,0 +1,13 @@
import { expect, test } from "vitest";
import spec from "./test-openapi-spec-v2.json";
import { dereferenceSpec, schemaFromOpenApiSpecV2 } from "./openApi";
test("Returns the correct schema", async () => {
const dereferenced = dereferenceSpec(spec);
const schema = schemaFromOpenApiSpecV2(
dereferenced,
"/paths//conversations.list/get/responses/200/schema"
);
expect(schema.type).toEqual("object");
expect(schema.additionalProperties).toEqual(false);
});
@@ -0,0 +1,15 @@
import deref from "json-schema-deref-sync";
import pointer from "json-pointer";
import { type JSONSchema } from "./types";
export function dereferenceSpec(spec: any): any {
return deref(spec);
}
// todo validate that it's a valid json schema
export function schemaFromOpenApiSpecV2(spec: any, path: string): JSONSchema {
// we need to escape the path because it contains ~ and / characters
path = path.replace(/~/g, "~0").replace(/\/\//g, "/~1");
const schema = pointer.get(spec as pointer.JsonObject, path);
return schema;
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,6 @@
import { Schema, InstanceType } from "@cfworker/json-schema";
import { ErrorObject } from "ajv";
export type JSONSchema = Schema;
export type JSONSchemaInstanceType = InstanceType;
export type JSONSchemaError = ErrorObject;
@@ -0,0 +1,122 @@
import { JSONSchema, JSONSchemaError } from "./types";
import nodeObjectHash from "node-object-hash";
import Ajv from "ajv";
import { performance, PerformanceObserver } from "perf_hooks";
//setup performance tracking
const perfObserver = new PerformanceObserver((items) => {
return;
});
perfObserver.observe({ entryTypes: ["measure"], buffered: true });
const ajv = new Ajv({
strict: false,
logger: false,
});
type SuccessResult = {
success: true;
};
type FailureResult = {
success: false;
errors: JSONSchemaError[];
};
export async function validate(
data: any,
schema?: JSONSchema
): Promise<SuccessResult | FailureResult> {
try {
if (schema === undefined) {
return {
success: true as const,
};
}
if (data === undefined) {
return {
success: false as const,
errors: [
{
keyword: "undefined",
instancePath: "undefined",
schemaPath: "undefined",
params: {},
},
],
};
}
performance.mark("get-validator-start");
const validator = getValidator(schema);
performance.mark("get-validator-end");
performance.mark("validate-start");
const result = validator(data);
performance.mark("validate-end");
const getValidatorPerformance = performance.measure(
"get-validator",
"get-validator-start",
"get-validator-end"
);
const validatePerformance = performance.measure(
"validate",
"validate-start",
"validate-end"
);
if (process.env.SHOW_PERFORMANCE_TESTS === "true") {
console.log("validate benchmarks:", {
getValidator: getValidatorPerformance.duration,
validate: validatePerformance.duration,
});
}
if (!result) {
return {
success: false as const,
errors: validator.errors ?? [],
};
}
return {
success: true as const,
};
} catch (e: any) {
console.error(e);
return {
success: false as const,
errors: [
{
keyword: "undefined",
instancePath: "undefined",
schemaPath: "undefined",
params: {},
message: e.toString(),
},
],
};
}
}
//we are going to has the schemas and use that as the key to find the cached validator
const hasher = nodeObjectHash({ sort: false });
function getValidator(schema: JSONSchema) {
const hash = hasher.hash(schema);
// get the validator from the cache, if it doesn't exist, add it to the cache
let validator = ajv.getSchema(hash);
if (validator === undefined) {
ajv.addSchema(schema, hash);
validator = ajv.getSchema(hash);
}
if (validator === undefined) {
throw new Error("Could not get validator");
}
return validator;
}
@@ -0,0 +1,13 @@
import { Action } from "core/action/types";
import { IntegrationAuthentication } from "core/authentication/types";
export type Service = {
name: string;
service: string;
version: string;
baseUrl: string;
live: boolean;
authentication: IntegrationAuthentication;
actions: Record<string, Action>;
retryableStatusCodes: number[];
};
@@ -0,0 +1,97 @@
import { InputSpec } from "core/action/types";
import { checkRequiredScopes } from "core/authentication/credentials";
import { RequestError } from "core/request/errors";
import { RequestData, RequestSpec } from "core/request/types";
import { validate } from "core/schemas/validate";
type ValidationResult =
| {
success: true;
}
| {
success: false;
error: RequestError;
};
export async function validateInputs(
inputSpec: InputSpec,
{ parameters, body, credentials }: RequestData
): Promise<ValidationResult> {
if (inputSpec.security) {
if (credentials === undefined) {
return {
success: false,
error: {
type: "missing_credentials",
},
};
}
const requiredScopes = inputSpec.security[credentials.name] ?? [];
const result = checkRequiredScopes(requiredScopes, credentials);
if (!result.success) {
return {
success: false,
error: {
type: "insufficient_scopes",
missingScopes: result.missingScopes,
},
};
}
}
// validate the request body exists if it should
if (body == null && inputSpec.body != null) {
return {
success: false,
error: {
type: "missing_body",
},
};
}
//validate the parameters
if (inputSpec.parameters != null) {
for (const parameter of inputSpec.parameters) {
const { name, required } = parameter;
// if the parameter is missing
if (parameters === undefined || parameters[name] == null) {
if (required) {
return {
success: false,
error: {
type: "missing_parameter",
parameter: {
name,
},
},
};
} else {
continue;
}
}
const element = parameters[name];
//validate the parameter against the schema
const valid = await validate(element, parameter.schema);
if (!valid.success) {
return {
success: false,
error: {
type: "parameter_invalid",
parameter: {
name,
value: element,
},
errors: valid.errors,
},
};
}
}
}
return {
success: true,
};
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,75 @@
[
{
"scope": "https://slack.com:443",
"method": "GET",
"path": "/api/conversations.list?limit=3",
"body": "",
"status": 200,
"response": [
"13a10900e45a2e5f5f662b462e26151762c481e859dbffffde6956a4097eb37f02aa77df7d8db575e3fea335752c0a039e145027e3d40b2d00eba4129d035425d78756f60ba204af170b1f86483c07dee72fe4317870e818d6cdc59b7d081878c0287860ab6e19cd3bf225f61be1bc2382ac0003f2e24cce767358bdc5ff27e6efe91e15d4cecfa8a6aaeaa6eeeaf667d1c49ef8fb383a0c655532f02ae7e5e72c8ac21662b52b9fbf2ed41ddc25fcc145a24ddfb1d411d84be8b4ff04dbb1b7b63ebf31fc3bfed0b427f133131f2a9ed4f65f9d87833bea7962df1dcbb40c575534c5b0150ce8e822c38f0726b8c1a31775894ab417e0d9318cb3c3335335424a29fa12934fe2d87ceefa561a8129f271cb7784f29485b4fd55e0491abc5f00ce6df0e046706922da1285233d68fe538d002f132a1be061b31db24c20e0de211ded031dfdc7403381cc3efb633986e2d0cae55b25863e82922a674915308c922049729e62948938a552fde834122d2af230a4ad5404eb6368268695184d5a6b371a5b02166f21265a49a688495cc46831de9149e52d1de762e84a357473940f6c7da403cff8c744e37194d39b870b86ef4f71a40ab47210eafedec73fa66bb99aa36aaa6acc30179aa4d4548102cec5c0a3e46de9484720aa1fd1458a057d8fa70eb30d722b62ad1bfdaf51732b0c120ad5261e0936adc6e03e980bf5b38efe852022fc10052d45ff3cb4e9a73bcca22c88540219b11b9ff60572714c9e4bede4f2e2fa97ef83a8cfa3a06aeb94601a99baa6d96693b436663171fddf9a64af46731d453115ddd0d4d9b7d5af35e352b56742300a313884c29056bed452699f53febf3154c19949cfb0d0f7301142aadafa91c1303d001ec4a72f59f8541fdd1e3d3cbc3c7f0437caf536fcff03"
],
"rawHeaders": [
"date",
"Sat, 18 Feb 2023 16:06:41 GMT",
"server",
"Apache",
"x-powered-by",
"HHVM/4.153.1",
"access-control-allow-origin",
"*",
"referrer-policy",
"no-referrer",
"x-slack-backend",
"r",
"x-slack-unique-id",
"Y_D3kQScXBLeo8CcHpwldgAAECY",
"strict-transport-security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-headers",
"slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled, x-b3-flags",
"access-control-expose-headers",
"x-slack-req-id, retry-after",
"x-oauth-scopes",
"channels:read,channels:join,channels:manage,chat:write,groups:write,im:write,mpim:write,chat:write.customize,reactions:write",
"x-accepted-oauth-scopes",
"channels:read,groups:read,mpim:read,im:read,read",
"expires",
"Mon, 26 Jul 1997 05:00:00 GMT",
"cache-control",
"private, no-cache, no-store, must-revalidate",
"pragma",
"no-cache",
"x-xss-protection",
"0",
"x-content-type-options",
"nosniff",
"x-slack-req-id",
"10d2571cfa8e50b57c91d537221aff81",
"vary",
"Accept-Encoding",
"content-encoding",
"br",
"content-length",
"654",
"content-type",
"application/json; charset=utf-8",
"x-envoy-upstream-service-time",
"118",
"x-backend",
"main_normal main_canary_with_overflow main_control_with_overflow",
"x-server",
"slack-www-hhvm-main-iad-cxtr",
"x-slack-shared-secret-outcome",
"no-match",
"via",
"envoy-www-iad-scsk, envoy-edge-lhr-csok",
"x-edge-backend",
"envoy-www",
"x-slack-edge-shared-secret-outcome",
"no-match",
"connection",
"close"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,53 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "POST",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m",
"body": {
"fields": {
"Employee": "Employee single create"
}
},
"status": 200,
"response": {
"id": "recY9ZLK96wNBblmo",
"createdTime": "2023-02-18T17:05:53.000Z",
"fields": {
"Employee": "Employee single create"
}
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 17:05:53 GMT",
"Content-Type",
"120",
"Connection",
"close",
"Set-Cookie",
"AWSALB=uxQV2kzjELpFGUscnluykIVz7XOSrD1HxCYqoKdrnnPDt2Djy+EBfTKTDx4p0fAh1qD5c3/jRM2bCy9rhptozXyMsWOCDL7v2H3E6VRso6pGZm+kmcdzFjjoIO36; Expires=Sat, 25 Feb 2023 17:05:53 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=uxQV2kzjELpFGUscnluykIVz7XOSrD1HxCYqoKdrnnPDt2Djy+EBfTKTDx4p0fAh1qD5c3/jRM2bCy9rhptozXyMsWOCDL7v2H3E6VRso6pGZm+kmcdzFjjoIO36; Expires=Sat, 25 Feb 2023 17:05:53 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwL5hqTq5iBqCg9Q; path=/; expires=Sun, 18 Feb 2024 17:05:53 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"114"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,73 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "POST",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m",
"body": {
"records": [
{
"fields": {
"Employee": "Employee #1"
}
},
{
"fields": {
"Employee": "Employee #2"
}
}
]
},
"status": 200,
"response": {
"records": [
{
"id": "recGy1FsSzQnQ1Q5G",
"createdTime": "2023-02-18T17:05:09.000Z",
"fields": {
"Employee": "Employee #1"
}
},
{
"id": "recfrk4NonMC37k3q",
"createdTime": "2023-02-18T17:05:09.000Z",
"fields": {
"Employee": "Employee #2"
}
}
]
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 17:05:09 GMT",
"Content-Type",
"145",
"Connection",
"close",
"Set-Cookie",
"AWSALB=S3w+xLzGuJ4YZa7uQpSGEZYmk2IXTVlsJ9yVl+E2aUbEW5BtGoPl4lNa9pwXEpNvI29HEMTQgpuOXAnvfTFKzm+ot6y2DAQJwqa1nDNgQVRZ2z6lNn602nx0ebhI; Expires=Sat, 25 Feb 2023 17:05:08 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=S3w+xLzGuJ4YZa7uQpSGEZYmk2IXTVlsJ9yVl+E2aUbEW5BtGoPl4lNa9pwXEpNvI29HEMTQgpuOXAnvfTFKzm+ot6y2DAQJwqa1nDNgQVRZ2z6lNn602nx0ebhI; Expires=Sat, 25 Feb 2023 17:05:08 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brw7GK0C3hS9Fnih9; path=/; expires=Sun, 18 Feb 2024 17:05:08 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"221"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,97 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "POST",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m",
"body": {
"fields": {
"Employee": "Delete now #3"
}
},
"status": 200,
"response": {
"id": "recyubpGhZWle9GOS",
"createdTime": "2023-02-18T17:25:39.000Z",
"fields": {
"Employee": "Delete now #3"
}
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 17:25:38 GMT",
"Content-Type",
"121",
"Connection",
"close",
"Set-Cookie",
"AWSALB=jt7yHA1t0HaG6Wp2xE4aJWZdQ59coYaZrRwqp8gwZmizt1A1N1H+xEqqycwyHEJtuK/6Rvc5FGcWdsJZQD2kbg5MSS0aropskjuOcOWICRp4+IHNWdYH5Osmcfre; Expires=Sat, 25 Feb 2023 17:25:38 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=jt7yHA1t0HaG6Wp2xE4aJWZdQ59coYaZrRwqp8gwZmizt1A1N1H+xEqqycwyHEJtuK/6Rvc5FGcWdsJZQD2kbg5MSS0aropskjuOcOWICRp4+IHNWdYH5Osmcfre; Expires=Sat, 25 Feb 2023 17:25:38 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwoFcsjVo3nFDHPT; path=/; expires=Sun, 18 Feb 2024 17:25:38 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"105"
],
"responseIsBinary": false
},
{
"scope": "https://api.airtable.com:443",
"method": "DELETE",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m/recyubpGhZWle9GOS",
"body": "",
"status": 200,
"response": {
"deleted": true,
"id": "recyubpGhZWle9GOS"
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 17:25:39 GMT",
"Content-Type",
"59",
"Connection",
"close",
"Set-Cookie",
"AWSALB=SjG+vAIOeCRwgx9Zhi7bVWiFG0acnh1G6+u2nL+ZUfo+4ON1RPjGdhX41SiaekKoYBmW2oCbSynCYAXKGnQjJYaOmPFAeIkml0VZuXSCv1Jm8P2PsXR+DoKIvZTk; Expires=Sat, 25 Feb 2023 17:25:39 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=SjG+vAIOeCRwgx9Zhi7bVWiFG0acnh1G6+u2nL+ZUfo+4ON1RPjGdhX41SiaekKoYBmW2oCbSynCYAXKGnQjJYaOmPFAeIkml0VZuXSCv1Jm8P2PsXR+DoKIvZTk; Expires=Sat, 25 Feb 2023 17:25:39 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwUynCRjs24wfp6Z; path=/; expires=Sun, 18 Feb 2024 17:25:39 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"41"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,125 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "POST",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m",
"body": {
"records": [
{
"fields": {
"Employee": "Delete now #1"
}
},
{
"fields": {
"Employee": "Delete now #2"
}
}
]
},
"status": 200,
"response": {
"records": [
{
"id": "recTR6YLOshwwyi1O",
"createdTime": "2023-02-18T17:22:12.000Z",
"fields": {
"Employee": "Delete now #1"
}
},
{
"id": "recuQVL2gpUjN64py",
"createdTime": "2023-02-18T17:22:12.000Z",
"fields": {
"Employee": "Delete now #2"
}
}
]
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 17:22:12 GMT",
"Content-Type",
"154",
"Connection",
"close",
"Set-Cookie",
"AWSALB=IAMzoMptPLC7k7rWXTocxJiu8ciJvbHqD17c0EPaM38k1FkzA/zW7S+tRKK6LOzrVFyLL8GUgFtdfDGFELrQ8uO1bADYnEiB4vfOAXjRwSBA2Dc61N3O+MIWMdnM; Expires=Sat, 25 Feb 2023 17:22:12 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=IAMzoMptPLC7k7rWXTocxJiu8ciJvbHqD17c0EPaM38k1FkzA/zW7S+tRKK6LOzrVFyLL8GUgFtdfDGFELrQ8uO1bADYnEiB4vfOAXjRwSBA2Dc61N3O+MIWMdnM; Expires=Sat, 25 Feb 2023 17:22:12 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwFID6JiyKkz2OUb; path=/; expires=Sun, 18 Feb 2024 17:22:12 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"225"
],
"responseIsBinary": false
},
{
"scope": "https://api.airtable.com:443",
"method": "DELETE",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m?records=recTR6YLOshwwyi1O&records=recuQVL2gpUjN64py",
"body": "",
"status": 200,
"response": {
"records": [
{
"deleted": true,
"id": "recTR6YLOshwwyi1O"
},
{
"deleted": true,
"id": "recuQVL2gpUjN64py"
}
]
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 17:22:13 GMT",
"Content-Type",
"91",
"Connection",
"close",
"Set-Cookie",
"AWSALB=psOMBihmNThSHe+ZEkpP1CKmbhnepN53OlaE2Eyi0zBUDOzM7dHGR7ptEm8ebKfpyqDolVl93quNNO44wwIfZqZHuSPVGyZsJWJoM2FsHY4G4HaFCJZoPEkqRFFs; Expires=Sat, 25 Feb 2023 17:22:12 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=psOMBihmNThSHe+ZEkpP1CKmbhnepN53OlaE2Eyi0zBUDOzM7dHGR7ptEm8ebKfpyqDolVl93quNNO44wwIfZqZHuSPVGyZsJWJoM2FsHY4G4HaFCJZoPEkqRFFs; Expires=Sat, 25 Feb 2023 17:22:12 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwq5X9BQFhfFj5lr; path=/; expires=Sun, 18 Feb 2024 17:22:12 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"97"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,79 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "GET",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m/recHcnB1MbBr9Rd2P",
"body": "",
"status": 200,
"response": {
"id": "recHcnB1MbBr9Rd2P",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "Faith Butterworth",
"Phone": "(123) 456-7890",
"Headshot": [
{
"id": "att3ibwyOXULYL15O",
"width": 950,
"height": 700,
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/0Hy62Ommo3C1BR3r_TsIMw/xGdMUGBUycsvzqjCPHlIuKyvUCM_Y6InDa7Bz15pCaGtWXyue5BlHYak_kFJYmgVXbgvWAXkaigRk7xdcUHiZU66F33CrAUP36ihAFT3-eU/-_khPf6Rh8P9uLt3Oc55HupkyS000nORrpvZpY1bKwI",
"filename": "headshot-purple-2 (1).png",
"size": 191272,
"type": "image/png",
"thumbnails": {
"small": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/MlmaPKrIg1yOj_qipSwKhg/fVQ5W7QtoxoAszvbIHT2dksddzWQi2ETkCewMXRSY2NIiX6wD1LWuC6d4VICHwRCz_6sKW4vhwZ1vkScFYpcgQ/Iy8lz5HcTKpTrG8gBq4fQJRyPAdnfYrwn3u05_lovmc",
"width": 49,
"height": 36
},
"large": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/BBIfL5Oqc8BAHkugmNUkXA/JygSzSF9lLJi1U1dP1xCpH1QTSJwxb2FRvJssEdxZubfzVIa9iofsOn5HKsIFLuPl2K3yYCvaxAD3ZsHa7WCig/Rpbg9vWTPa6-oxoPUO4gqkOBFHzadVBHEZhjJoIu6Y8",
"width": 695,
"height": 512
},
"full": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/xlrKts_ACw09qLqsAW16EQ/qrDMlQpI1cVdPCe0uw6ZJw9FeZCcwenmFzZ317qbsO0q8ZY2DY5k-bpPFYBaS4KkqztczIOqdnCBIYiuJ3_wqA/4LU_0QW7hp8Rw828Z_ov3GNcZa86pywziLdQy364XXE",
"width": 3000,
"height": 3000
}
}
}
],
"Employee type": "Contractor"
}
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 16:02:10 GMT",
"Content-Type",
"872",
"Connection",
"close",
"Set-Cookie",
"AWSALB=PhNLtNqLT//gbRBjRTywLiyg0lY3ZGo9Q2LLwOqLnAwsXcrRIaaELYV7A+s2lJlrAsid5UKIKld15Jq1nLyroXxAcFPd3vcbq6ku7tK7LE8HnOQiaMOV9gOoxqoa; Expires=Sat, 25 Feb 2023 16:02:10 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=PhNLtNqLT//gbRBjRTywLiyg0lY3ZGo9Q2LLwOqLnAwsXcrRIaaELYV7A+s2lJlrAsid5UKIKld15Jq1nLyroXxAcFPd3vcbq6ku7tK7LE8HnOQiaMOV9gOoxqoa; Expires=Sat, 25 Feb 2023 16:02:10 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwuEVkvPW1vATlmC; path=/; expires=Sun, 18 Feb 2024 16:02:10 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"1320"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,112 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "POST",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m/listRecords",
"body": {
"timeZone": "America/Los_Angeles",
"userLocale": "en",
"sort": [
{
"field": "Employee",
"direction": "asc"
}
],
"fields": [
"Employee"
]
},
"status": 200,
"response": {
"records": [
{
"id": "recWhRejYoDn5CNsB",
"createdTime": "2023-01-23T07:46:46.000Z",
"fields": {}
},
{
"id": "recFeH8y7qLNR6CxB",
"createdTime": "2023-01-22T23:15:09.000Z",
"fields": {
"Employee": "Employee 7"
}
},
{
"id": "recRo4MuSqRcb33pp",
"createdTime": "2023-01-23T00:48:36.000Z",
"fields": {
"Employee": "Employee 9"
}
},
{
"id": "recHcnB1MbBr9Rd2P",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "Faith Butterworth"
}
},
{
"id": "recbKWDa9URtGWIGG",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "Harley Holbrook"
}
},
{
"id": "rec3cPi3z4s6oe9SD",
"createdTime": "2023-01-22T23:51:21.000Z",
"fields": {
"Employee": "Jimmy dean"
}
},
{
"id": "recGPicQa5yIo9dBY",
"createdTime": "2023-01-22T19:22:05.000Z",
"fields": {
"Employee": "Matt Aitken"
}
},
{
"id": "recElL0yiCgIEVcyc",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "Quinn Nguyen"
}
}
]
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 16:24:53 GMT",
"Content-Type",
"338",
"Connection",
"close",
"Set-Cookie",
"AWSALB=4+PtBWlCPjGrIo2V0YEi8J0ogkebmIOEMfx8TOaOhZvHsaXUZ1TQV+5DlPbCxYxrXoXbbP/F0iRXc3qLGC8LVtm5VIkxt0NDhBENoLsdbBAWF1bbmlOs2DM3N+k3; Expires=Sat, 25 Feb 2023 16:24:53 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=4+PtBWlCPjGrIo2V0YEi8J0ogkebmIOEMfx8TOaOhZvHsaXUZ1TQV+5DlPbCxYxrXoXbbP/F0iRXc3qLGC8LVtm5VIkxt0NDhBENoLsdbBAWF1bbmlOs2DM3N+k3; Expires=Sat, 25 Feb 2023 16:24:53 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brw4B3gkaAL97bpKd; path=/; expires=Sun, 18 Feb 2024 16:24:53 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"829"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,218 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "POST",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m/listRecords",
"body": {},
"status": 200,
"response": {
"records": [
{
"id": "rec3cPi3z4s6oe9SD",
"createdTime": "2023-01-22T23:51:21.000Z",
"fields": {
"Employee": "Jimmy dean",
"Phone": "7778",
"Employee type": "Employee",
"Manager": {
"id": "usrpWV6yqSVvzVO0j",
"email": "matt@trigger.dev",
"name": "Matt Aitken"
}
}
},
{
"id": "recElL0yiCgIEVcyc",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "Quinn Nguyen",
"Phone": "(123) 456-7890",
"Headshot": [
{
"id": "attx14Pa1lP0DMgRw",
"width": 950,
"height": 700,
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/5gbGs-cRWoOC46FxBWQZKw/ph_QI1srGvvZArxOz207bnKOs-xlIXF8ZqMlk5ssMr-jbiMuFfXOjmjadjOACGFRyQ9nE59Dpy7540UU_6bpgsQ_tMKtCFaaf2a4ieIPEEU/ptI5mq4oczxmmrz-RRWb3MSegywNfAwWf--9mL5IT34",
"filename": "headshot-pink-1.png",
"size": 215411,
"type": "image/png",
"thumbnails": {
"small": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/3bEGb1n_oJxadHpHMcDg_w/1Mga_f3JNzLtWq_an_E7I98CxejzOpiALmDJHRdI0XcBbVwIv-vzj96mY-XeAL0W32Q_WCQPu4TqWzisnlqLYg/7pJLZzaspSp1339lIgp1o1Nb1durOAoIx-IflDRI8gY",
"width": 49,
"height": 36
},
"large": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/7Xr67It2dJ296uYyumST1g/HH8QTjlaP0frLwscoJy3vJLvOdKwz1zHL_ll8zMtfFkm1uFB9-nRkA09YeSojhemScYjpvIB7OoxJTh3lqU-jQ/8jtF2js5F47hndbxts2_ZIFZaxkuq3G0BxbomG1wRDA",
"width": 695,
"height": 512
},
"full": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/O1xGv0NoeaGTVYYDxpZnuQ/IBXER_7M4O9QqAmv_9pF2evdf5_9YzeVmdzk3Rsi2gFaK6ueREni-Kaw6Xg8VORqFpHNtUQ7JrV_5Ya4zhSuXg/VAGl2IqW98-D0E1RgBretLYJCmNCDqledVmdTrUOEIU",
"width": 3000,
"height": 3000
}
}
}
],
"Employee type": "Employee"
}
},
{
"id": "recFeH8y7qLNR6CxB",
"createdTime": "2023-01-22T23:15:09.000Z",
"fields": {
"Employee": "Employee 7",
"Phone": "342567",
"Employee type": "Contractor",
"Manager": {
"id": "usrpWV6yqSVvzVO0j",
"email": "matt@trigger.dev",
"name": "Matt Aitken"
}
}
},
{
"id": "recGPicQa5yIo9dBY",
"createdTime": "2023-01-22T19:22:05.000Z",
"fields": {
"Employee": "Matt Aitken",
"Phone": "12345678",
"Employee type": "Employee",
"Manager": {
"id": "usrpWV6yqSVvzVO0j",
"email": "matt@trigger.dev",
"name": "Matt Aitken"
}
}
},
{
"id": "recHcnB1MbBr9Rd2P",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "Faith Butterworth",
"Phone": "(123) 456-7890",
"Headshot": [
{
"id": "att3ibwyOXULYL15O",
"width": 950,
"height": 700,
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/xV5UysTMWXnI9p8E8KMTlA/Ov21BA--8-n8JC_sH7-sx_Iub_aXA1PGiVAohUAhE5SuEtqSMGhN39pRHI3tmu3LqEh8iDz8pTZ_TdWHVV8riCTBPEm8NvvD3o6BtJTRXcE/LJjYfS0Wh_KMcmkgL-82HOLXyhhDHnMsFvrqL1OCtXQ",
"filename": "headshot-purple-2 (1).png",
"size": 191272,
"type": "image/png",
"thumbnails": {
"small": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/L9WFjSk92HlOH9RDdrP7MA/7AgbUc3M9KuDz5plvUFL5dsRwt55PiqcnPvoDIawWfk0w_N4GDZPTPDiiqxFOsUMNOk4CB1RuBZFFLNEfu0bRA/RYcp3x_oGgLtvOi7CtUplGM_rmU-EdbBQ5zdcr7L-Yo",
"width": 49,
"height": 36
},
"large": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/Zl-Thn_JCnnb_-j9CpJ0lg/9hIAzhles7CH7n0EgRzrg-_qVCz1G6oHXX8M7A70KVUBy3Ttnc1NwoSKLMj7JxmYkqc8hYCRU4qRA_S22sS1cw/BhQLDmDmMAUd4sUaxVfTbHnxPGJD9q0_NPB3l7rYz4o",
"width": 695,
"height": 512
},
"full": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/4E18KjffN_36eSJ65hCEFg/1_ts6X0NwupOAEyHnehE_hy5ROdSOt1jODcXv5Cny3Wn4O5r3Ewl3vgsg3Lebkwv40iJo7tbtblZEdtZMecpJA/GBgtTGmld0ZH7_4FygTqipHkEpQVn4dt3CmGBnOo6Wc",
"width": 3000,
"height": 3000
}
}
}
],
"Employee type": "Contractor"
}
},
{
"id": "recRo4MuSqRcb33pp",
"createdTime": "2023-01-23T00:48:36.000Z",
"fields": {
"Employee": "Employee 9",
"Phone": "12345678",
"Employee type": "Employee",
"Manager": {
"id": "usrpWV6yqSVvzVO0j",
"email": "matt@trigger.dev",
"name": "Matt Aitken"
}
}
},
{
"id": "recWhRejYoDn5CNsB",
"createdTime": "2023-01-23T07:46:46.000Z",
"fields": {}
},
{
"id": "recbKWDa9URtGWIGG",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "Harley Holbrook",
"Phone": "(123) 456-7890",
"Headshot": [
{
"id": "attIMHgGEnN0YutyM",
"width": 950,
"height": 700,
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/Fz00EH3JBLCN7V_swur5cg/p3tx8jWcy5175n6bvK9aCabwdIfMur6wDrly_X6A8cL6YnO5JBKK0YJW1EjrEzjCtkj0uJ0PAS4lbwD2hMsKlKUZjopUmDegHLnms_ucOxE/6HP7Qw3GHTGiAmHUM21jHC5fhLcyfTrlD9qrs35a9-I",
"filename": "headshot-yellow-2.png",
"size": 349926,
"type": "image/png",
"thumbnails": {
"small": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/Cyg5kaW38cKzs03TbM-X3g/8omtIQVimV1MrD9PPtj2SaAlOA3CxuCdqHWoVPxi6UELMV2w7EhFv9Ko3WexIF5bcQyd9-N4RLFGvd5__VgP6A/suCIwJkTLliZrHLwioXIUqnrkJ7gIOxtNrdQtkDrBjk",
"width": 49,
"height": 36
},
"large": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/g3EV5PxrbBETRQ9Qzn5WYg/rloz8wROtoNA6Ab9HEykJEmHtnmqUzxnnksoNJU7Y1NjeoV6dQQQZxLTjQBYJukBQfil4EXI8b_ejtARnkANhw/RwNwembhBCNpNJPThTWE_Fae3KtNvBQf-nDboeTP06c",
"width": 695,
"height": 512
},
"full": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676743200000/hFdCcDELa9Y1qNU8ynA-gA/rY9pKGsa3U-i95eAYUT9qPkXhakhXNpWaWBOKsKSSvmc0MFERzMvBTQ9X6hfBBOWdJNPm2ewSI5qaMk1OqdDYg/IVswNEnsz2QWGQtpfHLGHHaAZEWVam08gd7vSXPVMOI",
"width": 3000,
"height": 3000
}
}
}
],
"Employee type": "On leave"
}
}
]
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 15:58:57 GMT",
"Content-Type",
"2247",
"Connection",
"close",
"Set-Cookie",
"AWSALB=eKX9sqNvujzmAJZfcbDUrm7NlI8Xe9niXH7mrVhWbrGQZxHi9a8M9cKLI067MCp0mv5UfHVCEeUvkQbnHW8lB/LQwpch1qdox/a0c+J5kcVIGXWLH8zOB6pv2t42; Expires=Sat, 25 Feb 2023 15:58:57 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=eKX9sqNvujzmAJZfcbDUrm7NlI8Xe9niXH7mrVhWbrGQZxHi9a8M9cKLI067MCp0mv5UfHVCEeUvkQbnHW8lB/LQwpch1qdox/a0c+J5kcVIGXWLH8zOB6pv2t42; Expires=Sat, 25 Feb 2023 15:58:57 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwJiIPgBOUtNPjri; path=/; expires=Sun, 18 Feb 2024 15:58:57 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"4968"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,83 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "PATCH",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m/recHcnB1MbBr9Rd2P",
"body": {
"fields": {
"Employee": "John Doe II"
}
},
"status": 200,
"response": {
"id": "recHcnB1MbBr9Rd2P",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "John Doe II",
"Phone": "(123) 456-7890",
"Headshot": [
{
"id": "att3ibwyOXULYL15O",
"width": 950,
"height": 700,
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/0Hy62Ommo3C1BR3r_TsIMw/xGdMUGBUycsvzqjCPHlIuKyvUCM_Y6InDa7Bz15pCaGtWXyue5BlHYak_kFJYmgVXbgvWAXkaigRk7xdcUHiZU66F33CrAUP36ihAFT3-eU/-_khPf6Rh8P9uLt3Oc55HupkyS000nORrpvZpY1bKwI",
"filename": "headshot-purple-2 (1).png",
"size": 191272,
"type": "image/png",
"thumbnails": {
"small": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/MlmaPKrIg1yOj_qipSwKhg/fVQ5W7QtoxoAszvbIHT2dksddzWQi2ETkCewMXRSY2NIiX6wD1LWuC6d4VICHwRCz_6sKW4vhwZ1vkScFYpcgQ/Iy8lz5HcTKpTrG8gBq4fQJRyPAdnfYrwn3u05_lovmc",
"width": 49,
"height": 36
},
"large": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/BBIfL5Oqc8BAHkugmNUkXA/JygSzSF9lLJi1U1dP1xCpH1QTSJwxb2FRvJssEdxZubfzVIa9iofsOn5HKsIFLuPl2K3yYCvaxAD3ZsHa7WCig/Rpbg9vWTPa6-oxoPUO4gqkOBFHzadVBHEZhjJoIu6Y8",
"width": 695,
"height": 512
},
"full": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/xlrKts_ACw09qLqsAW16EQ/qrDMlQpI1cVdPCe0uw6ZJw9FeZCcwenmFzZ317qbsO0q8ZY2DY5k-bpPFYBaS4KkqztczIOqdnCBIYiuJ3_wqA/4LU_0QW7hp8Rw828Z_ov3GNcZa86pywziLdQy364XXE",
"width": 3000,
"height": 3000
}
}
}
],
"Employee type": "Contractor"
}
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 16:56:09 GMT",
"Content-Type",
"868",
"Connection",
"close",
"Set-Cookie",
"AWSALB=2CpHsb1CL3MMw3hBwb9rVw+mR1QJ7rNbVnCS1fkDNEEi3FM0b4jSEGQ0FhjkIkdkQfLhOMrCXK95XbgEImuhWJuv4FKNdOIk6hNaJawWjFq6kh/mOMlFi7HU8r8h; Expires=Sat, 25 Feb 2023 16:56:09 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=2CpHsb1CL3MMw3hBwb9rVw+mR1QJ7rNbVnCS1fkDNEEi3FM0b4jSEGQ0FhjkIkdkQfLhOMrCXK95XbgEImuhWJuv4FKNdOIk6hNaJawWjFq6kh/mOMlFi7HU8r8h; Expires=Sat, 25 Feb 2023 16:56:09 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwP6XoEdwHyGdxxZ; path=/; expires=Sun, 18 Feb 2024 16:56:09 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"1314"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,92 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "PATCH",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m",
"body": {
"records": [
{
"id": "recHcnB1MbBr9Rd2P",
"fields": {
"Employee": "John Doe"
}
}
]
},
"status": 200,
"response": {
"records": [
{
"id": "recHcnB1MbBr9Rd2P",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "John Doe",
"Phone": "(123) 456-7890",
"Headshot": [
{
"id": "att3ibwyOXULYL15O",
"width": 950,
"height": 700,
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/0Hy62Ommo3C1BR3r_TsIMw/xGdMUGBUycsvzqjCPHlIuKyvUCM_Y6InDa7Bz15pCaGtWXyue5BlHYak_kFJYmgVXbgvWAXkaigRk7xdcUHiZU66F33CrAUP36ihAFT3-eU/-_khPf6Rh8P9uLt3Oc55HupkyS000nORrpvZpY1bKwI",
"filename": "headshot-purple-2 (1).png",
"size": 191272,
"type": "image/png",
"thumbnails": {
"small": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/MlmaPKrIg1yOj_qipSwKhg/fVQ5W7QtoxoAszvbIHT2dksddzWQi2ETkCewMXRSY2NIiX6wD1LWuC6d4VICHwRCz_6sKW4vhwZ1vkScFYpcgQ/Iy8lz5HcTKpTrG8gBq4fQJRyPAdnfYrwn3u05_lovmc",
"width": 49,
"height": 36
},
"large": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/BBIfL5Oqc8BAHkugmNUkXA/JygSzSF9lLJi1U1dP1xCpH1QTSJwxb2FRvJssEdxZubfzVIa9iofsOn5HKsIFLuPl2K3yYCvaxAD3ZsHa7WCig/Rpbg9vWTPa6-oxoPUO4gqkOBFHzadVBHEZhjJoIu6Y8",
"width": 695,
"height": 512
},
"full": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/xlrKts_ACw09qLqsAW16EQ/qrDMlQpI1cVdPCe0uw6ZJw9FeZCcwenmFzZ317qbsO0q8ZY2DY5k-bpPFYBaS4KkqztczIOqdnCBIYiuJ3_wqA/4LU_0QW7hp8Rw828Z_ov3GNcZa86pywziLdQy364XXE",
"width": 3000,
"height": 3000
}
}
}
],
"Employee type": "Contractor"
}
}
]
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 16:46:03 GMT",
"Content-Type",
"870",
"Connection",
"close",
"Set-Cookie",
"AWSALB=aRijGYsG1c7HW7/3PfA+iqX9yfDtsVgoPBVm4dkHcigHjt0gpNbzI/GN4nVRaRPorF1fOAE0jRrIREfxlnx9YcqQP097XI6IpF109sT5W5dRnY6rzb2gyGS93Vhn; Expires=Sat, 25 Feb 2023 16:46:03 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=aRijGYsG1c7HW7/3PfA+iqX9yfDtsVgoPBVm4dkHcigHjt0gpNbzI/GN4nVRaRPorF1fOAE0jRrIREfxlnx9YcqQP097XI6IpF109sT5W5dRnY6rzb2gyGS93Vhn; Expires=Sat, 25 Feb 2023 16:46:03 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwkAO755Iu5BkpXR; path=/; expires=Sun, 18 Feb 2024 16:46:03 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"1325"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,114 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "PATCH",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m",
"body": {
"performUpsert": {
"fieldsToMergeOn": [
"Employee"
]
},
"records": [
{
"fields": {
"Employee": "John Doe"
}
},
{
"fields": {
"Employee": "Jane Doe"
}
}
]
},
"status": 200,
"response": {
"records": [
{
"id": "recHcnB1MbBr9Rd2P",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "John Doe",
"Phone": "(123) 456-7890",
"Headshot": [
{
"id": "att3ibwyOXULYL15O",
"width": 950,
"height": 700,
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/0Hy62Ommo3C1BR3r_TsIMw/xGdMUGBUycsvzqjCPHlIuKyvUCM_Y6InDa7Bz15pCaGtWXyue5BlHYak_kFJYmgVXbgvWAXkaigRk7xdcUHiZU66F33CrAUP36ihAFT3-eU/-_khPf6Rh8P9uLt3Oc55HupkyS000nORrpvZpY1bKwI",
"filename": "headshot-purple-2 (1).png",
"size": 191272,
"type": "image/png",
"thumbnails": {
"small": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/MlmaPKrIg1yOj_qipSwKhg/fVQ5W7QtoxoAszvbIHT2dksddzWQi2ETkCewMXRSY2NIiX6wD1LWuC6d4VICHwRCz_6sKW4vhwZ1vkScFYpcgQ/Iy8lz5HcTKpTrG8gBq4fQJRyPAdnfYrwn3u05_lovmc",
"width": 49,
"height": 36
},
"large": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/BBIfL5Oqc8BAHkugmNUkXA/JygSzSF9lLJi1U1dP1xCpH1QTSJwxb2FRvJssEdxZubfzVIa9iofsOn5HKsIFLuPl2K3yYCvaxAD3ZsHa7WCig/Rpbg9vWTPa6-oxoPUO4gqkOBFHzadVBHEZhjJoIu6Y8",
"width": 695,
"height": 512
},
"full": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676750400000/xlrKts_ACw09qLqsAW16EQ/qrDMlQpI1cVdPCe0uw6ZJw9FeZCcwenmFzZ317qbsO0q8ZY2DY5k-bpPFYBaS4KkqztczIOqdnCBIYiuJ3_wqA/4LU_0QW7hp8Rw828Z_ov3GNcZa86pywziLdQy364XXE",
"width": 3000,
"height": 3000
}
}
}
],
"Employee type": "Contractor"
}
},
{
"id": "recpyQHEcTiiwzAAe",
"createdTime": "2023-02-18T16:49:12.000Z",
"fields": {
"Employee": "Jane Doe"
}
}
],
"updatedRecords": [
"recHcnB1MbBr9Rd2P"
],
"createdRecords": [
"recpyQHEcTiiwzAAe"
]
},
"rawHeaders": [
"Date",
"Sat, 18 Feb 2023 16:49:12 GMT",
"Content-Type",
"931",
"Connection",
"close",
"Set-Cookie",
"AWSALB=/B2FI/4JzHLz69XGh0fnXEzIHT58xav2z9CRaJPk/mxxK+IPKjzX/Kd13DU/uJsnD5QcWRgFZjepxA7s8HoojMSUw3+Vkav3Db4mPcly8wQXp88r5BEUjDvFso9o; Expires=Sat, 25 Feb 2023 16:49:12 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=/B2FI/4JzHLz69XGh0fnXEzIHT58xav2z9CRaJPk/mxxK+IPKjzX/Kd13DU/uJsnD5QcWRgFZjepxA7s8HoojMSUw3+Vkav3Db4mPcly8wQXp88r5BEUjDvFso9o; Expires=Sat, 25 Feb 2023 16:49:12 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwsqrG8CnBxgniFg; path=/; expires=Sun, 18 Feb 2024 16:49:12 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"1504"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,78 @@
[
{
"scope": "https://slack.com:443",
"method": "POST",
"path": "/api/chat.postMessage",
"body": {
"channel": "C00AAAAAAAA",
"text": "This channel doesn't exist, so message won't send"
},
"status": 200,
"response": [
"13270000045439f20ace64f1259fdc9ec3444e00b2e6817cef2beb4e3f1ab2011262c998a76bb93c"
],
"rawHeaders": [
"date",
"Sat, 18 Feb 2023 16:06:42 GMT",
"server",
"Apache",
"x-powered-by",
"HHVM/4.153.1",
"access-control-allow-origin",
"*",
"referrer-policy",
"no-referrer",
"x-slack-backend",
"r",
"x-slack-unique-id",
"Y_D3kqn7oMaK4u0tyzhR0AAAEDY",
"strict-transport-security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-headers",
"slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled, x-b3-flags",
"access-control-expose-headers",
"x-slack-req-id, retry-after",
"x-oauth-scopes",
"channels:read,channels:join,channels:manage,chat:write,groups:write,im:write,mpim:write,chat:write.customize,reactions:write",
"x-accepted-oauth-scopes",
"chat:write",
"expires",
"Mon, 26 Jul 1997 05:00:00 GMT",
"cache-control",
"private, no-cache, no-store, must-revalidate",
"pragma",
"no-cache",
"x-xss-protection",
"0",
"x-content-type-options",
"nosniff",
"x-slack-req-id",
"ebbefac5397dbab5385db0aae08cf6b3",
"vary",
"Accept-Encoding",
"content-encoding",
"br",
"content-length",
"40",
"content-type",
"application/json; charset=utf-8",
"x-envoy-upstream-service-time",
"93",
"x-backend",
"main_normal main_canary_with_overflow main_control_with_overflow",
"x-server",
"slack-www-hhvm-main-iad-dihx",
"x-slack-shared-secret-outcome",
"no-match",
"via",
"envoy-www-iad-uqca, envoy-edge-lhr-ozbu",
"x-edge-backend",
"envoy-www",
"x-slack-edge-shared-secret-outcome",
"no-match",
"connection",
"close"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,78 @@
[
{
"scope": "https://slack.com:443",
"method": "POST",
"path": "/api/chat.postMessage",
"body": {
"channel": "C04GWUTDC3W",
"text": "This the Trigger.dev integrations test"
},
"status": 200,
"response": [
"132a0300c4f7dfcd9f56ce9d9f9342c8d6f68b484575e2661a76992518653ed6029993da6eeb1ffccd5ee7345e3bb70b6a2dc047cc6a474c8790110b4b6112e38710141d5d7f7f7e5c14e36f28ac9610f8244dd23821e74d1688288302d2d790231ad355b5df82a0e0e8fa972e9eeeae73eef97ed686181b0ad73ce882605eae7aede863d1ef76db0bd36a6fa27fe9e317b9002e2360a92b8c47fc31049f8e6edce7e7ebcbcd1ba9a03e9b3101f2b01b4fd93d33e1da644bc8ff7161faf2553ea405e1dab9e6672888b8ed2456c3b4c796c43df1a8dab9fcc53ca1fa78c294ffe6b7c20bc170baaa060a937a4be63de7f627f531276273af355d3dd88e517b0185cce397a058db09ab71d2bca74b29d992ad9b657572babef0e99649c9b2cb3197da8159b25dbd5ab2f5d9ac64496a7192be18348e881e3192189d34d057f0f9d534a00667852a365b685402cac16b4132aa117b171387829075f67ae7f319"
],
"rawHeaders": [
"date",
"Sat, 18 Feb 2023 16:06:41 GMT",
"server",
"Apache",
"x-powered-by",
"HHVM/4.153.1",
"access-control-allow-origin",
"*",
"referrer-policy",
"no-referrer",
"x-slack-backend",
"r",
"x-slack-unique-id",
"Y_D3kaZTOTsosPP4CQqdxwAAAD8",
"strict-transport-security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-headers",
"slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled, x-b3-flags",
"access-control-expose-headers",
"x-slack-req-id, retry-after",
"x-oauth-scopes",
"channels:read,channels:join,channels:manage,chat:write,groups:write,im:write,mpim:write,chat:write.customize,reactions:write",
"x-accepted-oauth-scopes",
"chat:write",
"expires",
"Mon, 26 Jul 1997 05:00:00 GMT",
"cache-control",
"private, no-cache, no-store, must-revalidate",
"pragma",
"no-cache",
"x-xss-protection",
"0",
"x-content-type-options",
"nosniff",
"x-slack-req-id",
"bd4f8b61920e9df75d67e4cfeb504ab9",
"vary",
"Accept-Encoding",
"content-encoding",
"br",
"content-length",
"351",
"content-type",
"application/json; charset=utf-8",
"x-envoy-upstream-service-time",
"141",
"x-backend",
"main_normal main_canary_with_overflow main_control_with_overflow",
"x-server",
"slack-www-hhvm-main-iad-mhht",
"x-slack-shared-secret-outcome",
"no-match",
"via",
"envoy-www-iad-qbeb, envoy-edge-lhr-vvct",
"x-edge-backend",
"envoy-www",
"x-slack-edge-shared-secret-outcome",
"no-match",
"connection",
"close"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,75 @@
[
{
"scope": "https://slack.com:443",
"method": "GET",
"path": "/api/conversations.list?limit=1",
"body": "",
"status": 200,
"response": [
"13b70300c4c8b67c7d337bad87225e710b16c4026732712e9d6da4139c5a54d3ce1324f223350ae881931e68f7fe6f2e24241b5ae4fce77333b3308328b0bdc4c2a6b0c47fd8fe99218bb08d13c7b0eeaf3fed1350d47ec5b10d59b12bca7aac133d4690f51821096e8017ee6455da533537753e31a7cf1f8a4134bc504d55d54dddd5edb6948833517f6a3b0cb0cc0dea32ab8b76a2c2b0c8a4d6b369799577425dd5010f896e52233616b8cbf8b8df824e74d5d5cf1fc5e9f8fd719fd94f603a045e61471fcef3f123a9795cbe1f966919aeaa688a612b14de3162df8f279060601b5ea44a20d17d8337c7302e4f2e4d558826a6c8229a3e6ec7f23bfa639a72cc9ae6e29f85125e05bc3b2a819318db3338ce776ce35ed4d248740b126c7a503e5423e15e3c991b886c598e5622e0ce7dc37abc6fe8684101b30acd3947bb1c13d3a154d39724844e2171995571e95794c47e1c677542492aa2844b4dee39115d926741c0bb52eec747642206ab11f9b5d631d92d819adefc4a7429f12192908486c57ab7442a76f9301383deac46a939aa07554cf5b06d2cfe028d6b812d9122d694e12ac0b13c8f7d9c6302b6115dbca7c16b73fa70fa64dc9d450f6f85d8c36201"
],
"rawHeaders": [
"date",
"Sat, 18 Feb 2023 16:06:42 GMT",
"server",
"Apache",
"x-powered-by",
"HHVM/4.153.1",
"access-control-allow-origin",
"*",
"referrer-policy",
"no-referrer",
"x-slack-backend",
"r",
"x-slack-unique-id",
"Y_D3khlLQ9vqek922QY0uQAAECM",
"strict-transport-security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-headers",
"slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled, x-b3-flags",
"access-control-expose-headers",
"x-slack-req-id, retry-after",
"x-oauth-scopes",
"channels:read,channels:join,channels:manage,chat:write,groups:write,im:write,mpim:write,chat:write.customize,reactions:write",
"x-accepted-oauth-scopes",
"channels:read,groups:read,mpim:read,im:read,read",
"expires",
"Mon, 26 Jul 1997 05:00:00 GMT",
"cache-control",
"private, no-cache, no-store, must-revalidate",
"pragma",
"no-cache",
"x-xss-protection",
"0",
"x-content-type-options",
"nosniff",
"x-slack-req-id",
"c9ac7f0c1a73910e91a87a6cd3925462",
"vary",
"Accept-Encoding",
"content-encoding",
"br",
"content-length",
"452",
"content-type",
"application/json; charset=utf-8",
"x-envoy-upstream-service-time",
"115",
"x-backend",
"main_normal main_canary_with_overflow main_control_with_overflow",
"x-server",
"slack-www-hhvm-main-iad-bmkm",
"x-slack-shared-secret-outcome",
"no-match",
"via",
"envoy-www-iad-vpph, envoy-edge-lhr-tspo",
"x-edge-backend",
"envoy-www",
"x-slack-edge-shared-secret-outcome",
"no-match",
"connection",
"close"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,120 @@
[
{
"scope": "https://api.notion.com:443",
"method": "PATCH",
"path": "/v1/blocks/b4609033-b45a-4fc6-8d15-f06920495ab1/children",
"body": {
"children": [
{
"heading_1": {
"rich_text": [
{
"type": "text",
"text": {
"content": "This new title is appended using appendBlockChildren()"
}
}
]
}
}
]
},
"status": 200,
"response": {
"object": "list",
"results": [
{
"object": "block",
"id": "4c946f30-ebc2-4eed-bfbc-094226ae9659",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-27T11:22:00.000Z",
"last_edited_time": "2023-02-27T11:22:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"has_children": false,
"archived": false,
"type": "heading_1",
"heading_1": {
"rich_text": [
{
"type": "text",
"text": {
"content": "This new title is appended using appendBlockChildren()",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "This new title is appended using appendBlockChildren()",
"href": null
}
],
"is_toggleable": false,
"color": "default"
}
}
],
"next_cursor": null,
"has_more": false,
"type": "block",
"block": {}
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 11:22:57 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=53f6ccf8-1698-4ece-ab61-a73987903c80; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 11:22:56 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"383-2rLMttu6Pq17KGfS6h8OoM7fsF0\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 11:22:56 GMT; Secure",
"Set-Cookie",
"__cf_bm=VXShyz_MBH77_gf3gFuj9pOYT7KvZ0tAI1g76xSEsck-1677496977-0-AUaWjGjnwWhILvSEGODB1JprJBjZrmavjD0fIoD8o74Vdpn24iAC1GFwI+oEzZMuV8/3uv4uYpo9ZB8PP0HV/c4=; path=/; expires=Mon, 27-Feb-23 11:52:57 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,98 @@
[
{
"scope": "https://api.notion.com:443",
"method": "POST",
"path": "/v1/comments",
"body": {
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"rich_text": [
{
"text": {
"content": "Hello world"
}
}
]
},
"status": 200,
"response": {
"object": "comment",
"id": "6ff7c4ea-2666-4fe7-a256-56b43a73ea10",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"discussion_id": "81530ca2-4afa-44c0-b298-7fab0a72b563",
"created_time": "2023-02-27T13:00:00.000Z",
"last_edited_time": "2023-02-27T13:00:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"rich_text": [
{
"type": "text",
"text": {
"content": "Hello world",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Hello world",
"href": null
}
]
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 13:00:37 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=7bc1c0a7-d91d-4689-91b6-c883d992ffec; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 13:00:37 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"24c-39U+DEocpupSzxBZH1jvsL+yyfE\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 13:00:37 GMT; Secure",
"Set-Cookie",
"__cf_bm=JdgeEvg_PUn_06.lvhPATrAM_WVGfxBXIcOghAm6Yr0-1677502837-0-AbYTmwFA+LHk4LeVThTqVragQppCTfC0TAHONeLrHzQP4RvMSSL92kGXM1mtAufkMHDcaHDftwzDCzLiKkGNOtg=; path=/; expires=Mon, 27-Feb-23 13:30:37 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,165 @@
[
{
"scope": "https://api.notion.com:443",
"method": "POST",
"path": "/v1/databases",
"body": {
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"icon": {
"type": "emoji",
"emoji": "📝"
},
"title": [
{
"type": "text",
"text": {
"content": "Trigger.dev created db",
"link": null
}
}
],
"properties": {
"Name": {
"title": {}
},
"Description": {
"rich_text": {}
},
"In stock": {
"checkbox": {}
},
"+1": {
"people": {}
},
"Photo": {
"files": {}
}
}
},
"status": 200,
"response": {
"object": "database",
"id": "8db50793-ac53-496b-bbff-a74be0fb78b4",
"cover": null,
"icon": {
"type": "emoji",
"emoji": "📝"
},
"created_time": "2023-02-27T12:03:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_time": "2023-02-27T12:03:00.000Z",
"title": [
{
"type": "text",
"text": {
"content": "Trigger.dev created db",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Trigger.dev created db",
"href": null
}
],
"description": [],
"is_inline": false,
"properties": {
"Photo": {
"id": "JvIM",
"name": "Photo",
"type": "files",
"files": {}
},
"Description": {
"id": "al%3E%3F",
"name": "Description",
"type": "rich_text",
"rich_text": {}
},
"+1": {
"id": "b%7DNi",
"name": "+1",
"type": "people",
"people": {}
},
"In stock": {
"id": "q%60gF",
"name": "In stock",
"type": "checkbox",
"checkbox": {}
},
"Name": {
"id": "title",
"name": "Name",
"type": "title",
"title": {}
}
},
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"url": "https://www.notion.so/8db50793ac53496bbbffa74be0fb78b4",
"archived": false
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 12:03:23 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=45d29e4b-e829-4c24-b6a4-6220d6103576; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 12:03:22 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"48b-o15ev/xDPCB+PMklXFEv7yjRNjg\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 12:03:22 GMT; Secure",
"Set-Cookie",
"__cf_bm=oTxAMd2fa8cXyXzIAradg5hbvrWNohWvKiBn_nAAT.Q-1677499403-0-AcoKZ8MVXztc+eW5DoC2TGRVKUWQIgFsB8w8UHKbORoTp8Qw7uTk/efMwoQoW2BTGY6Qy4GJEn1P8iZ/DRsSLIA=; path=/; expires=Mon, 27-Feb-23 12:33:23 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,116 @@
[
{
"scope": "https://api.notion.com:443",
"method": "POST",
"path": "/v1/pages",
"body": {
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"properties": {
"title": {
"title": [
{
"type": "text",
"text": {
"content": "Test page"
}
}
]
}
}
},
"status": 200,
"response": {
"object": "page",
"id": "8bd3c664-d6ef-46af-9910-e22686eb997e",
"created_time": "2023-02-26T17:38:00.000Z",
"last_edited_time": "2023-02-26T17:38:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"cover": null,
"icon": null,
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"archived": false,
"properties": {
"title": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Test page",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Test page",
"href": null
}
]
}
},
"url": "https://www.notion.so/Test-page-8bd3c664d6ef46af9910e22686eb997e"
},
"rawHeaders": [
"Date",
"Sun, 26 Feb 2023 17:38:03 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=0584f959-2ff5-46b1-9d5d-832c26040396; Domain=www.notion.so; Path=/; Expires=Mon, 26 Feb 2024 17:38:02 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"301-5q45Nq2W9keK4up4HOm5qUpzNKo\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Mon, 27 Feb 2023 17:38:02 GMT; Secure",
"Set-Cookie",
"__cf_bm=MeS4vVeV5Sms1RFoqYUoJ.onoMrGFyS6M_b0rfN7aho-1677433083-0-AQTR+b9TQ5LWf2yEhTnFj4QFuWs/C0ySl36mDO9bwhQ2rnsR1I8wrFgFls6yg4BJuorZQBnYtmIw00LnCvDHTfA=; path=/; expires=Sun, 26-Feb-23 18:08:03 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,96 @@
[
{
"scope": "https://api.notion.com:443",
"method": "DELETE",
"path": "/v1/blocks/4c946f30-ebc2-4eed-bfbc-094226ae9659",
"body": "",
"status": 200,
"response": {
"object": "block",
"id": "4c946f30-ebc2-4eed-bfbc-094226ae9659",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-27T11:22:00.000Z",
"last_edited_time": "2023-02-27T11:26:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"has_children": false,
"archived": true,
"type": "heading_1",
"heading_1": {
"rich_text": [
{
"type": "text",
"text": {
"content": "This new title is appended using appendBlockChildren()",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "This new title is appended using appendBlockChildren()",
"href": null
}
],
"is_toggleable": false,
"color": "default"
}
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 11:26:10 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=d7b221d7-718e-45a2-a11e-1406aa98975d; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 11:26:09 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"326-D6+1VY70vo6bSnfGivDXLQlR9sA\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 11:26:09 GMT; Secure",
"Set-Cookie",
"__cf_bm=LargbK1gg7PjzvuUZu9DAsNpgc2zb3YdVGwgePQccYg-1677497170-0-Af8+5TWVeIgr9kq8MfM0cIPW6rO2QT0AA7cuyIFfJYni14Qvd5M0V+CkIF/Vrto9qbmPTD6L40sKr4fkr12MIkA=; path=/; expires=Mon, 27-Feb-23 11:56:10 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,76 @@
[
{
"scope": "https://api.notion.com:443",
"method": "GET",
"path": "/v1/blocks/b4609033-b45a-4fc6-8d15-f06920495ab1",
"body": "",
"status": 200,
"response": {
"object": "block",
"id": "b4609033-b45a-4fc6-8d15-f06920495ab1",
"parent": {
"type": "workspace",
"workspace": true
},
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-27T09:19:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"has_children": true,
"archived": false,
"type": "child_page",
"child_page": {
"title": "Personal Home"
}
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 09:26:00 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=5d40d8ce-14ac-4534-a52e-1fc1b79f6242; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 09:26:00 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"1bf-Xn6bRYmy8GO/bp7WIQLZCOHSxRw\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 09:26:00 GMT; Secure",
"Set-Cookie",
"__cf_bm=xDv5oNogRgQN.m5YOrYBRu7vQPpAprpUNpqRES8Zbp8-1677489960-0-AS3KjttcIVVXJO5WedstOC9vc78EcmHw2kyHHdUTBVk3Uufe8/r5VygzgdKwS8XiDkYFQFYaMzvUMIcZwcXBNeE=; path=/; expires=Mon, 27-Feb-23 09:56:00 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,223 @@
[
{
"scope": "https://api.notion.com:443",
"method": "GET",
"path": "/v1/blocks/b4609033-b45a-4fc6-8d15-f06920495ab1/children",
"body": "",
"status": 200,
"response": {
"object": "list",
"results": [
{
"object": "block",
"id": "2675c67d-392a-4b86-86f6-93de22c797bd",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"has_children": false,
"archived": false,
"type": "paragraph",
"paragraph": {
"rich_text": [
{
"type": "text",
"text": {
"content": "Organize everything in your life in one place.",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Organize everything in your life in one place.",
"href": null
}
],
"color": "gray"
}
},
{
"object": "block",
"id": "f3df1513-efda-4caf-af5b-f08a0ebe3dfa",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"has_children": true,
"archived": false,
"type": "column_list",
"column_list": {}
},
{
"object": "block",
"id": "d843f4ae-6cc2-44df-a294-3d9405c950bb",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-26T17:36:00.000Z",
"last_edited_time": "2023-02-26T17:36:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"has_children": false,
"archived": false,
"type": "child_page",
"child_page": {
"title": "Test page"
}
},
{
"object": "block",
"id": "026566db-b2a0-4d0a-96f1-1007fccc28df",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-26T17:37:00.000Z",
"last_edited_time": "2023-02-26T17:37:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"has_children": false,
"archived": false,
"type": "child_page",
"child_page": {
"title": "Test page"
}
},
{
"object": "block",
"id": "8bd3c664-d6ef-46af-9910-e22686eb997e",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-26T17:38:00.000Z",
"last_edited_time": "2023-02-26T17:38:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"has_children": false,
"archived": false,
"type": "child_page",
"child_page": {
"title": "Test page"
}
},
{
"object": "block",
"id": "fe7ade22-66de-45fb-b3b5-4a467ff67d2b",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-26T17:38:00.000Z",
"last_edited_time": "2023-02-26T17:38:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"has_children": false,
"archived": false,
"type": "paragraph",
"paragraph": {
"rich_text": [],
"color": "default"
}
}
],
"next_cursor": null,
"has_more": false,
"type": "block",
"block": {}
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 11:09:36 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=86f94a88-a9d2-4e88-abf9-3d364583ad08; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 11:09:36 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"c9a-7ksTq1q+y6dBHZKFnoF7Xfgs/Fw\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 11:09:36 GMT; Secure",
"Set-Cookie",
"__cf_bm=ipVUIrHFEqeTilNjmbfPoJKioZkTOB97pJd9mYe9zIk-1677496176-0-AZfFsUjfINaIHmGd5kPe0tqoBC2UgOqo1kL89YPsBd4fTQWgiJ5PdZFotvJdsHaXlUTyGswSb6HQO3kF6D7POjw=; path=/; expires=Mon, 27-Feb-23 11:39:36 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,75 @@
[
{
"scope": "https://api.notion.com:443",
"method": "GET",
"path": "/v1/users/me",
"body": "",
"status": 200,
"response": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644",
"name": "Trigger.dev (localhost)",
"avatar_url": "https://s3-us-west-2.amazonaws.com/public.notion-static.com/b374368f-9f41-460a-bf8e-5e19f8fb0e07/td-square-logo_512.png",
"type": "bot",
"bot": {
"owner": {
"type": "user",
"user": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4",
"name": "Matt Aitken",
"avatar_url": "https://s3-us-west-2.amazonaws.com/public.notion-static.com/0ccadce7-a4aa-4a69-92e6-2ac708593613/matt-wedding.jpg",
"type": "person",
"person": {
"email": "matt@apihero.run"
}
}
},
"workspace_name": "Notion integration test workspace"
}
},
"rawHeaders": [
"Date",
"Sun, 26 Feb 2023 17:03:48 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=9231cce8-e2ce-411c-b0e1-2597eb62b367; Domain=www.notion.so; Path=/; Expires=Mon, 26 Feb 2024 17:03:48 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"258-Y7OR6G0p0SWytfeYN6CvqKvsRr4\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Mon, 27 Feb 2023 17:03:48 GMT; Secure",
"Set-Cookie",
"__cf_bm=bFtxnRN2taXobaLZvnlr6T3gU61eVngXy2I7_UV5sQs-1677431028-0-AVKDesaUNQBhdDqVjtHeh1Up5jm+pHl7pOcmzOpVMuUGHrrNulojcu6nNhI8Qp0hIs2e5m2DF/7wTh8dzT4KPOc=; path=/; expires=Sun, 26-Feb-23 17:33:48 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,95 @@
[
{
"scope": "https://api.notion.com:443",
"method": "GET",
"path": "/v1/comments?block_id=b4609033-b45a-4fc6-8d15-f06920495ab1",
"body": "",
"status": 200,
"response": {
"object": "list",
"results": [
{
"object": "comment",
"id": "6ff7c4ea-2666-4fe7-a256-56b43a73ea10",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"discussion_id": "81530ca2-4afa-44c0-b298-7fab0a72b563",
"created_time": "2023-02-27T13:00:00.000Z",
"last_edited_time": "2023-02-27T13:00:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"rich_text": [
{
"type": "text",
"text": {
"content": "Hello world",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Hello world",
"href": null
}
]
}
],
"next_cursor": null,
"has_more": false,
"type": "comment",
"comment": {}
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 13:00:58 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=c81c8597-3ce1-47c0-8534-3d082e8bad6c; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 13:00:58 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"2ac-O+0+EDR87lnud1uk0Nv98XVEwRE\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 13:00:58 GMT; Secure",
"Set-Cookie",
"__cf_bm=SZWrmwDFWsjiBWbj0XSJiw.u3NWFS5JHraec1hFlXTU-1677502858-0-AceoZDX4TcA2W/fyWOdl8ZvCnFibpJWx8CF8vLabqtJQK1ZqHHYc5yitwJd6ylJC1pCsnGxwqDtKKPSThXMs5Hc=; path=/; expires=Mon, 27-Feb-23 13:30:58 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,164 @@
[
{
"scope": "https://api.notion.com:443",
"method": "GET",
"path": "/v1/databases/0fadc732-4472-418c-83dc-04454332cb52",
"body": "",
"status": 200,
"response": {
"object": "database",
"id": "0fadc732-4472-418c-83dc-04454332cb52",
"cover": null,
"icon": {
"type": "emoji",
"emoji": "📓"
},
"created_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_time": "2023-02-24T19:09:00.000Z",
"title": [
{
"type": "text",
"text": {
"content": "Journal",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Journal",
"href": null
}
],
"description": [
{
"type": "text",
"text": {
"content": "Document your life - daily happenings, special occasions, and reflections on your goals.\nCategorize entries with tags and automatically capture the date.\n\n↓ Click through the different database tabs to filter entries by a specific category such as daily or personal.",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Document your life - daily happenings, special occasions, and reflections on your goals.\nCategorize entries with tags and automatically capture the date.\n\n↓ Click through the different database tabs to filter entries by a specific category such as daily or personal.",
"href": null
}
],
"is_inline": false,
"properties": {
"Tags": {
"id": "!'(w",
"name": "Tags",
"type": "multi_select",
"multi_select": {
"options": [
{
"id": "4322f3ac-635f-4d2f-808f-22d639bc393b",
"name": "Daily",
"color": "purple"
},
{
"id": "00a58cba-c800-40cd-a8f1-6e42527b0a29",
"name": "Special Event",
"color": "yellow"
},
{
"id": "f4cf83a1-4b72-494e-bbc7-4a3c5cbaca4e",
"name": "Work",
"color": "blue"
},
{
"id": "b28c7f82-f6e4-4a72-a790-78585e7ead7e",
"name": "Personal",
"color": "red"
},
{
"id": "7973659c-e670-44c5-95bd-ee8bea4410fe",
"name": "Planning",
"color": "orange"
}
]
}
},
"Created": {
"id": "%7D%25j%7B",
"name": "Created",
"type": "created_time",
"created_time": {}
},
"Name": {
"id": "title",
"name": "Name",
"type": "title",
"title": {}
}
},
"parent": {
"type": "workspace",
"workspace": true
},
"url": "https://www.notion.so/0fadc7324472418c83dc04454332cb52",
"archived": false
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 11:31:56 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=b02dceea-7410-4b8b-9953-39e385a6602f; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 11:31:56 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"848-0VcVJU20PQNFJSOeYVumjc5lRqY\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 11:31:56 GMT; Secure",
"Set-Cookie",
"__cf_bm=uuQBm38FV5ll_bzRt2ubDw9OzPXYBeijloNaM81LTJU-1677497516-0-AfW2IE7SMS9u4DCuJo99WPCqCycUNmDB75jASkaVcuA5lfUjhFko1coulGCEfqctYOnwFGsTRXkTUmhyigS0rIc=; path=/; expires=Mon, 27-Feb-23 12:01:56 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,107 @@
[
{
"scope": "https://api.notion.com:443",
"method": "GET",
"path": "/v1/pages/b4609033-b45a-4fc6-8d15-f06920495ab1",
"body": "",
"status": 200,
"response": {
"object": "page",
"id": "b4609033-b45a-4fc6-8d15-f06920495ab1",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:09:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"cover": {
"type": "external",
"external": {
"url": "https://www.notion.so/images/page-cover/met_horace_pippin.jpg"
}
},
"icon": {
"type": "emoji",
"emoji": "🏡"
},
"parent": {
"type": "workspace",
"workspace": true
},
"archived": false,
"properties": {
"title": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Personal Home",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Personal Home",
"href": null
}
]
}
},
"url": "https://www.notion.so/Personal-Home-b4609033b45a4fc68d15f06920495ab1"
},
"rawHeaders": [
"Date",
"Sun, 26 Feb 2023 17:03:49 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=837961ad-d90a-4d47-a6f1-ef58202dc051; Domain=www.notion.so; Path=/; Expires=Mon, 26 Feb 2024 17:03:49 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"36c-te9LAYsMgFb2lhvFvIZkYRlpBwU\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Mon, 27 Feb 2023 17:03:49 GMT; Secure",
"Set-Cookie",
"__cf_bm=c4loqDfzCMnR_nUxqp_cUN9b64H5.AYvYzoiD2k3Dys-1677431029-0-AdU9UH0qjksRe8fwh1fJEjKmMC1iLs8At3ExpapYqTIt2++8Ygcgg/6mhzD8rEvFPpWIDSDdfXLmwEWtH2uWfPI=; path=/; expires=Sun, 26-Feb-23 17:33:49 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,62 @@
[
{
"scope": "https://api.notion.com:443",
"method": "GET",
"path": "/v1/users/cc18a80a-973f-42c4-8fed-a055f8ae31f4",
"body": "",
"status": 200,
"response": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4",
"name": "Matt Aitken",
"avatar_url": "https://s3-us-west-2.amazonaws.com/public.notion-static.com/0ccadce7-a4aa-4a69-92e6-2ac708593613/matt-wedding.jpg",
"type": "person",
"person": {
"email": "matt@apihero.run"
}
},
"rawHeaders": [
"Date",
"Sun, 26 Feb 2023 17:03:48 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=7a2dbb41-36d9-4105-a02e-5d48c2b39738; Domain=www.notion.so; Path=/; Expires=Mon, 26 Feb 2024 17:03:48 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"109-LARZeHVPyOZD6oYu0o3lE/OaSIY\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Mon, 27 Feb 2023 17:03:48 GMT; Secure",
"Set-Cookie",
"__cf_bm=.LPcUVtRskZYeQnmoXm3JleuCDBhDy5xttc1bB0ZAhU-1677431028-0-AZgnltB964z4cce5vJuH+ZKp7AA28R96OldVDfor3Gmp8BNHTuPud15UN9TMND7J18fL9Jeu1QBOsPuTBwuINGc=; path=/; expires=Sun, 26-Feb-23 17:33:48 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,94 @@
[
{
"scope": "https://api.notion.com:443",
"method": "GET",
"path": "/v1/users",
"body": "",
"status": 200,
"response": {
"object": "list",
"results": [
{
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4",
"name": "Matt Aitken",
"avatar_url": "https://s3-us-west-2.amazonaws.com/public.notion-static.com/0ccadce7-a4aa-4a69-92e6-2ac708593613/matt-wedding.jpg",
"type": "person",
"person": {
"email": "matt@apihero.run"
}
},
{
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644",
"name": "Trigger.dev (localhost)",
"avatar_url": "https://s3-us-west-2.amazonaws.com/public.notion-static.com/b374368f-9f41-460a-bf8e-5e19f8fb0e07/td-square-logo_512.png",
"type": "bot",
"bot": {
"owner": {
"type": "user",
"user": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4",
"name": "Matt Aitken",
"avatar_url": "https://s3-us-west-2.amazonaws.com/public.notion-static.com/0ccadce7-a4aa-4a69-92e6-2ac708593613/matt-wedding.jpg",
"type": "person",
"person": {
"email": "matt@apihero.run"
}
}
},
"workspace_name": "Notion integration test workspace"
}
}
],
"next_cursor": null,
"has_more": false,
"type": "user",
"user": {}
},
"rawHeaders": [
"Date",
"Sun, 26 Feb 2023 17:03:48 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=3f1b8498-f598-48f5-ae0e-909958b2d1a3; Domain=www.notion.so; Path=/; Expires=Mon, 26 Feb 2024 17:03:48 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"3bc-ykFfGm633jdplPzsTxjZ4jd6FvI\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Mon, 27 Feb 2023 17:03:48 GMT; Secure",
"Set-Cookie",
"__cf_bm=JUbz0XQ9i6zPhxS0oIlWs64OPfsdvZRqasIXF2JnDbQ-1677431028-0-AVLucbFsDItX1PIHDRVIsLNIprkWZAJwGX7lOZsK48xoMeUPs3gFdaJEh1CXf5WYt4q62YwDMhlsHcPlW0kc7iA=; path=/; expires=Sun, 26-Feb-23 17:33:48 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,523 @@
[
{
"scope": "https://api.notion.com:443",
"method": "POST",
"path": "/v1/databases/0fadc732-4472-418c-83dc-04454332cb52/query",
"body": {},
"status": 200,
"response": {
"object": "list",
"results": [
{
"object": "page",
"id": "09b0be23-f79f-48e4-a24e-be483decd15b",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"cover": null,
"icon": {
"type": "emoji",
"emoji": "🎂"
},
"parent": {
"type": "database_id",
"database_id": "0fadc732-4472-418c-83dc-04454332cb52"
},
"archived": false,
"properties": {
"Tags": {
"id": "!'(w",
"type": "multi_select",
"multi_select": [
{
"id": "7973659c-e670-44c5-95bd-ee8bea4410fe",
"name": "Planning",
"color": "orange"
}
]
},
"Created": {
"id": "%7D%25j%7B",
"type": "created_time",
"created_time": "2023-02-24T19:07:00.000Z"
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "28th Birthday",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "28th Birthday",
"href": null
}
]
}
},
"url": "https://www.notion.so/28th-Birthday-09b0be23f79f48e4a24ebe483decd15b"
},
{
"object": "page",
"id": "1e26b51f-de7a-4f4f-a491-4217636b232e",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"cover": null,
"icon": {
"type": "emoji",
"emoji": "🥥"
},
"parent": {
"type": "database_id",
"database_id": "0fadc732-4472-418c-83dc-04454332cb52"
},
"archived": false,
"properties": {
"Tags": {
"id": "!'(w",
"type": "multi_select",
"multi_select": [
{
"id": "00a58cba-c800-40cd-a8f1-6e42527b0a29",
"name": "Special Event",
"color": "yellow"
}
]
},
"Created": {
"id": "%7D%25j%7B",
"type": "created_time",
"created_time": "2023-02-24T19:07:00.000Z"
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Hawaii Vacation",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Hawaii Vacation",
"href": null
}
]
}
},
"url": "https://www.notion.so/Hawaii-Vacation-1e26b51fde7a4f4fa4914217636b232e"
},
{
"object": "page",
"id": "2726fedf-6d01-461a-990e-5238be7b7741",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"cover": null,
"icon": {
"type": "emoji",
"emoji": "📋"
},
"parent": {
"type": "database_id",
"database_id": "0fadc732-4472-418c-83dc-04454332cb52"
},
"archived": false,
"properties": {
"Tags": {
"id": "!'(w",
"type": "multi_select",
"multi_select": [
{
"id": "f4cf83a1-4b72-494e-bbc7-4a3c5cbaca4e",
"name": "Work",
"color": "blue"
}
]
},
"Created": {
"id": "%7D%25j%7B",
"type": "created_time",
"created_time": "2023-02-24T19:07:00.000Z"
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Job Search - September",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Job Search - September",
"href": null
}
]
}
},
"url": "https://www.notion.so/Job-Search-September-2726fedf6d01461a990e5238be7b7741"
},
{
"object": "page",
"id": "527fa387-5b64-4eb9-a60e-5382a2fc483b",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"cover": null,
"icon": {
"type": "emoji",
"emoji": "✨"
},
"parent": {
"type": "database_id",
"database_id": "0fadc732-4472-418c-83dc-04454332cb52"
},
"archived": false,
"properties": {
"Tags": {
"id": "!'(w",
"type": "multi_select",
"multi_select": [
{
"id": "4322f3ac-635f-4d2f-808f-22d639bc393b",
"name": "Daily",
"color": "purple"
}
]
},
"Created": {
"id": "%7D%25j%7B",
"type": "created_time",
"created_time": "2023-02-24T19:07:00.000Z"
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "So much to be grateful for",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "So much to be grateful for",
"href": null
}
]
}
},
"url": "https://www.notion.so/So-much-to-be-grateful-for-527fa3875b644eb9a60e5382a2fc483b"
},
{
"object": "page",
"id": "5c2a75da-1b9c-4cbb-9f2d-fc258c2ee77e",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"cover": null,
"icon": {
"type": "emoji",
"emoji": "🌻"
},
"parent": {
"type": "database_id",
"database_id": "0fadc732-4472-418c-83dc-04454332cb52"
},
"archived": false,
"properties": {
"Tags": {
"id": "!'(w",
"type": "multi_select",
"multi_select": [
{
"id": "4322f3ac-635f-4d2f-808f-22d639bc393b",
"name": "Daily",
"color": "purple"
}
]
},
"Created": {
"id": "%7D%25j%7B",
"type": "created_time",
"created_time": "2023-02-24T19:07:00.000Z"
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Just another day",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Just another day",
"href": null
}
]
}
},
"url": "https://www.notion.so/Just-another-day-5c2a75da1b9c4cbb9f2dfc258c2ee77e"
},
{
"object": "page",
"id": "a6d6cce8-97f2-42b1-9ca9-13496014741a",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"cover": null,
"icon": {
"type": "emoji",
"emoji": "🍸"
},
"parent": {
"type": "database_id",
"database_id": "0fadc732-4472-418c-83dc-04454332cb52"
},
"archived": false,
"properties": {
"Tags": {
"id": "!'(w",
"type": "multi_select",
"multi_select": [
{
"id": "b28c7f82-f6e4-4a72-a790-78585e7ead7e",
"name": "Personal",
"color": "red"
}
]
},
"Created": {
"id": "%7D%25j%7B",
"type": "created_time",
"created_time": "2023-02-24T19:07:00.000Z"
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Date with Stewart",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Date with Stewart",
"href": null
}
]
}
},
"url": "https://www.notion.so/Date-with-Stewart-a6d6cce897f242b19ca913496014741a"
},
{
"object": "page",
"id": "b02c0fe9-758e-4d4b-925e-4b5463459b8b",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-24T19:07:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"cover": null,
"icon": {
"type": "emoji",
"emoji": "💭"
},
"parent": {
"type": "database_id",
"database_id": "0fadc732-4472-418c-83dc-04454332cb52"
},
"archived": false,
"properties": {
"Tags": {
"id": "!'(w",
"type": "multi_select",
"multi_select": [
{
"id": "4322f3ac-635f-4d2f-808f-22d639bc393b",
"name": "Daily",
"color": "purple"
}
]
},
"Created": {
"id": "%7D%25j%7B",
"type": "created_time",
"created_time": "2023-02-24T19:07:00.000Z"
},
"Name": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Daily reflection",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Daily reflection",
"href": null
}
]
}
},
"url": "https://www.notion.so/Daily-reflection-b02c0fe9758e4d4b925e4b5463459b8b"
}
],
"next_cursor": null,
"has_more": false,
"type": "page",
"page": {}
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 11:58:47 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=b073f780-6c12-425e-964c-a024261062b8; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 11:58:47 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"1d6c-SpQFVKKxcgW+bv9mDjNi7A5pUcY\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 11:58:47 GMT; Secure",
"Set-Cookie",
"__cf_bm=cwWAubzSJCT1wYgrzxM1q.SqOSvuofy9GfmFsOA2gLc-1677499127-0-AegyUwVahKvgc2gyTcp71mVVrVZqv6QGBz1sjO8pGkrWTDiNjVfBddTR0woRBH4Xew/jAiiYdlZhArh/NJuiBvA=; path=/; expires=Mon, 27-Feb-23 12:28:47 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,106 @@
[
{
"scope": "https://api.notion.com:443",
"method": "PATCH",
"path": "/v1/blocks/2675c67d-392a-4b86-86f6-93de22c797bd",
"body": {
"paragraph": {
"rich_text": [
{
"type": "text",
"text": {
"content": "This update comes from the Trigger.dev Notion integration test suite. 🎉"
}
}
]
}
},
"status": 200,
"response": {
"object": "block",
"id": "2675c67d-392a-4b86-86f6-93de22c797bd",
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-27T11:16:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"has_children": false,
"archived": false,
"type": "paragraph",
"paragraph": {
"rich_text": [
{
"type": "text",
"text": {
"content": "This update comes from the Trigger.dev Notion integration test suite. 🎉",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "This update comes from the Trigger.dev Notion integration test suite. 🎉",
"href": null
}
],
"color": "gray"
}
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 11:16:26 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=486e8f8b-ef53-45a3-ae00-f4ae81089073; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 11:16:25 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"336-hVhtPA/lqL1IENJDtmp9GXLmBEA\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 11:16:25 GMT; Secure",
"Set-Cookie",
"__cf_bm=OidhXOa8sHJ.9YAgTZh9Fw6Pv75DlQPlYX981oAiGFg-1677496586-0-AXc/acKhhqM1u1P4GSnmVUMPJ4lTqM/PcKOXZQLO7zjLeMyLSBjk7JP6w+ytOJ9ZWLYd+7xcZNEzp7jKCZDFtxk=; path=/; expires=Mon, 27-Feb-23 11:46:26 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,211 @@
[
{
"scope": "https://api.notion.com:443",
"method": "PATCH",
"path": "/v1/databases/8db50793-ac53-496b-bbff-a74be0fb78b4",
"body": {
"title": [
{
"text": {
"content": "Trigger.dev updated db title"
}
}
],
"description": [
{
"text": {
"content": "This is an updated description"
}
}
],
"properties": {
"+1": null,
"Photo": {
"url": {}
},
"Store availability": {
"multi_select": {
"options": [
{
"name": "Duc Loi Market"
},
{
"name": "Rainbow Grocery"
},
{
"name": "Gus'''s Community Market"
},
{
"name": "The Good Life Grocery",
"color": "orange"
}
]
}
}
}
},
"status": 200,
"response": {
"object": "database",
"id": "8db50793-ac53-496b-bbff-a74be0fb78b4",
"cover": null,
"icon": {
"type": "emoji",
"emoji": "📝"
},
"created_time": "2023-02-27T12:03:00.000Z",
"created_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"last_edited_time": "2023-02-27T12:48:00.000Z",
"title": [
{
"type": "text",
"text": {
"content": "Trigger.dev updated db title",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Trigger.dev updated db title",
"href": null
}
],
"description": [
{
"type": "text",
"text": {
"content": "This is an updated description",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "This is an updated description",
"href": null
}
],
"is_inline": false,
"properties": {
"Photo": {
"id": "JvIM",
"name": "Photo",
"type": "url",
"url": {}
},
"Store availability": {
"id": "_TEG",
"name": "Store availability",
"type": "multi_select",
"multi_select": {
"options": [
{
"id": "b38859ad-7eb8-445a-8445-00344ea4c0b3",
"name": "Duc Loi Market",
"color": "default"
},
{
"id": "fa7f8bd8-a8be-4804-9f53-868369e861ea",
"name": "Rainbow Grocery",
"color": "default"
},
{
"id": "4b1eec41-5a4a-41e2-9a76-6d7482de838b",
"name": "Gus'''s Community Market",
"color": "default"
},
{
"id": "029b153e-bce3-4e95-9788-80968a605248",
"name": "The Good Life Grocery",
"color": "orange"
}
]
}
},
"Description": {
"id": "al%3E%3F",
"name": "Description",
"type": "rich_text",
"rich_text": {}
},
"In stock": {
"id": "q%60gF",
"name": "In stock",
"type": "checkbox",
"checkbox": {}
},
"Name": {
"id": "title",
"name": "Name",
"type": "title",
"title": {}
}
},
"parent": {
"type": "page_id",
"page_id": "b4609033-b45a-4fc6-8d15-f06920495ab1"
},
"url": "https://www.notion.so/8db50793ac53496bbbffa74be0fb78b4",
"archived": false
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 12:48:06 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=f5110365-ef1e-4adc-9d18-2c2ab2334011; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 12:48:05 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"735-KLx0Xyzef9XBSHzwld9artJGnuE\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 12:48:05 GMT; Secure",
"Set-Cookie",
"__cf_bm=5Tc3lAQfIEVKIRFQmBPDpdDZg3Kb2Mc_nvEy5Bldkgk-1677502086-0-AXzYbrme7DAsjAZ8yjzmsEbiebZCkG9g/bYh4S81cKtKgkmsi2/btarTp3YkgikTIxy0ULUxVUWdQoY2uanFusk=; path=/; expires=Mon, 27-Feb-23 13:18:06 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,111 @@
[
{
"scope": "https://api.notion.com:443",
"method": "PATCH",
"path": "/v1/pages/b4609033-b45a-4fc6-8d15-f06920495ab1",
"body": {
"icon": {
"emoji": "🦸‍♀️"
}
},
"status": 200,
"response": {
"object": "page",
"id": "b4609033-b45a-4fc6-8d15-f06920495ab1",
"created_time": "2023-02-24T19:07:00.000Z",
"last_edited_time": "2023-02-27T09:19:00.000Z",
"created_by": {
"object": "user",
"id": "cc18a80a-973f-42c4-8fed-a055f8ae31f4"
},
"last_edited_by": {
"object": "user",
"id": "bcd4bb6e-7cb4-4e04-8609-10744a579644"
},
"cover": {
"type": "external",
"external": {
"url": "https://www.notion.so/images/page-cover/met_horace_pippin.jpg"
}
},
"icon": {
"type": "emoji",
"emoji": "🦸‍♀️"
},
"parent": {
"type": "workspace",
"workspace": true
},
"archived": false,
"properties": {
"title": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Personal Home",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Personal Home",
"href": null
}
]
}
},
"url": "https://www.notion.so/Personal-Home-b4609033b45a4fc68d15f06920495ab1"
},
"rawHeaders": [
"Date",
"Mon, 27 Feb 2023 09:19:09 GMT",
"Content-Type",
"application/json; charset=utf-8",
"Transfer-Encoding",
"chunked",
"Connection",
"close",
"Set-Cookie",
"notion_browser_id=4df0d92c-a26b-46ef-b272-8f5ab412147d; Domain=www.notion.so; Path=/; Expires=Tue, 27 Feb 2024 09:19:09 GMT; Secure",
"Content-Security-Policy",
"script-src 'self' 'unsafe-inline' 'unsafe-eval' https://gist.github.com https://apis.google.com https://www.google.com https://www.gstatic.com https://cdn.amplitude.com https://api.amplitude.com http://dev-embed.notion.co http://embed.notion.co https://widget.intercom.io https://js.intercomcdn.com https://static.zdassets.com https://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://analytics.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://embed.typeform.com https://admin.typeform.com https://public.profitwell.com https://static.profitwell.com js.sentry-cdn.com https://js.chilipiper.com https://platform.twitter.com https://cdn.syndication.twimg.com https://accounts.google.com https://www.googletagmanager.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://cdn01.boxcdn.net https://cdn.sprig.com assets.customer.io code.gist.build;connect-src 'self' data: blob: https://msgstore.www.notion.so wss://msgstore.www.notion.so ws://localhost:* ws://127.0.0.1:* https://notion-emojis.s3-us-west-2.amazonaws.com https://s3-us-west-2.amazonaws.com https://s3.us-west-2.amazonaws.com https://notion-production-snapshots-2.s3.us-west-2.amazonaws.com https://cdn.amplitude.com https://api.amplitude.com https://www.notion.so https://api.embed.ly http://dev-embed.notion.co http://embed.notion.co https://js.intercomcdn.com https://api-iam.intercom.io https://uploads.intercomcdn.com wss://nexus-websocket-a.intercom.io https://ekr.zdassets.com https://ekr.zendesk.com\t https://makenotion.zendesk.com\t https://api.smooch.io\t wss://api.smooch.io\t https://logs-01.loggly.com https://http-inputs-notion.splunkcloud.com https://cdn.segment.com https://api.segment.io https://analytics.pgncs.notion.so https://api.pgncs.notion.so https://o324374.ingest.sentry.io https://checkout.stripe.com https://js.stripe.com https://cdn.contentful.com https://preview.contentful.com https://images.ctfassets.net https://www2.profitwell.com https://tracking.chilipiper.com https://api.chilipiper.com https://api.unsplash.com https://boards-api.greenhouse.io https://accounts.google.com https://oauth2.googleapis.com https://www.googletagmanager.com https://analytics.google.com https://www.googleadservices.com https://googleads.g.doubleclick.net https://region1.google-analytics.com https://region1.analytics.google.com https://www.google-analytics.com https://api-v2.mutinyhq.io https://client-registry.mutinycdn.com https://client.mutinycdn.com https://user-data.mutinycdn.com https://cdn.metadata.io https://platformapi.metadata.io https://d2hrivdxn8ekm8.cloudfront.net https://d1lu3pmaz2ilpx.cloudfront.net https://dvqigh9b7wa32.cloudfront.net https://d330aiyvva2oww.cloudfront.net https://cdn.transcend.io https://telemetry.transcend.io https://api.statuspage.io https://pgncd.notion.so https://api.statsig.com https://statsigapi.net https://exp.notion.so https://file.notion.so notion://file.notion.so https://api.box.com https://*.mux.com https://api.sprig.com https://storage.googleapis.com https://cdn.sprig.com https://cdn.userleap.com track.customer.io *.api.gist.build *.cloud.gist.build;font-src 'self' data: https://cdnjs.cloudflare.com https://js.intercomcdn.com https://cdn01.boxcdn.net;img-src 'self' data: blob: https: https://platform.twitter.com https://syndication.twitter.com https://pbs.twimg.com https://ton.twimg.com https://region1.google-analytics.com https://region1.analytics.google.com https://file.notion.so notion://file.notion.so https://*.mux.com track.customer.io;style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://github.githubassets.com https://js.chilipiper.com https://platform.twitter.com https://ton.twimg.com https://accounts.google.com https://cdn.transcend.io https://cdn01.boxcdn.net code.gist.build;media-src blob: https: http: https://file.notion.so notion://file.notion.so https://*.mux.com;worker-src blob:;frame-src https: http: https://accounts.google.com renderer.gist.build code.gist.build",
"X-DNS-Prefetch-Control",
"off",
"X-Frame-Options",
"SAMEORIGIN",
"Strict-Transport-Security",
"max-age=5184000; includeSubDomains",
"X-Download-Options",
"noopen",
"X-Content-Type-Options",
"nosniff",
"X-Permitted-Cross-Domain-Policies",
"none",
"Referrer-Policy",
"strict-origin-when-cross-origin",
"X-XSS-Protection",
"0",
"ETag",
"W/\"375-pnfsUIOn2SpGzML61kePXEPuNag\"",
"Vary",
"Accept-Encoding",
"CF-Cache-Status",
"DYNAMIC",
"Set-Cookie",
"notion_check_cookie_consent=true; Domain=www.notion.so; Path=/; Expires=Tue, 28 Feb 2023 09:19:09 GMT; Secure",
"Set-Cookie",
"__cf_bm=1BLTVHBW95WeTHRxGxJKr04euPqe7BD2TOQ8IfSBjI4-1677489549-0-AfqV/cu4hBSMEmapCSw220yP2VouKUsmSJ9VYAfjPjidTTEjq6nhTLrgAbbp3vcdzhzmrHmdJI0dzqmofxlvKq0=; path=/; expires=Mon, 27-Feb-23 09:49:09 GMT; domain=.notion.com; HttpOnly; Secure; SameSite=None",
"Server",
"cloudflare"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,56 @@
[
{
"scope": "https://api.sendgrid.com:443",
"method": "POST",
"path": "/v3/mail/send",
"body": {
"from": {
"email": "matt@email.trigger.dev"
},
"subject": "Hello, World!",
"content": [
{
"type": "text/plain",
"value": "Email body here"
}
],
"personalizations": [
{
"to": [
{
"email": "matt@trigger.dev"
}
],
"subject": "Hello, World!"
}
]
},
"status": 202,
"response": "",
"rawHeaders": [
"Server",
"nginx",
"Date",
"Sun, 19 Feb 2023 19:16:30 GMT",
"Content-Length",
"0",
"Connection",
"close",
"X-Message-Id",
"D9FX-x6ETvKlMlzEi0Qlpg",
"Access-Control-Allow-Origin",
"https://sendgrid.api-docs.io",
"Access-Control-Allow-Methods",
"POST",
"Access-Control-Allow-Headers",
"Authorization, Content-Type, On-behalf-of, x-sg-elas-acl",
"Access-Control-Max-Age",
"600",
"X-No-CORS-Reason",
"https://sendgrid.com/docs/Classroom/Basics/API/cors.html",
"Strict-Transport-Security",
"max-age=600; includeSubDomains"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,59 @@
[
{
"scope": "https://api.sendgrid.com:443",
"method": "PUT",
"path": "/v3/marketing/contacts",
"body": {
"contacts": [
{
"email": "matt+1@mattaitken.com",
"first_name": "Matt",
"last_name": "Aitken"
}
]
},
"status": 202,
"response": {
"job_id": "1befbf98-bfdc-4565-ba5a-c7e8b91f2678"
},
"rawHeaders": [
"Server",
"nginx",
"Date",
"Mon, 20 Feb 2023 15:21:43 GMT",
"Content-Type",
"application/json",
"Content-Length",
"50",
"Connection",
"close",
"x-amzn-requestid",
"6fcf9591-e37d-4fb9-b175-59d434ba45c6",
"access-control-allow-origin",
"*",
"access-control-allow-headers",
"AUTHORIZATION, Content-Type, On-behalf-of, x-sg-elas-acl, X-Recaptcha, X-Request-Source",
"x-amz-apigw-id",
"ApNxLHMAvHcFjkA=",
"access-control-allow-methods",
"PUT,OPTIONS,DELETE,OPTIONS",
"access-control-expose-headers",
"Link, Location",
"x-amzn-trace-id",
"Root=1-63f39007-0392a34047f268f366e7d4ce;Sampled=0",
"x-envoy-upstream-service-time",
"231",
"referrer-policy",
"strict-origin-when-cross-origin",
"x-content-type-options",
"nosniff",
"x-ratelimit-limit",
"200",
"x-ratelimit-remaining",
"197",
"x-ratelimit-reset",
"17"
],
"responseIsBinary": false
}
]
@@ -0,0 +1,79 @@
[
{
"scope": "https://api.airtable.com:443",
"method": "GET",
"path": "/v0/appBlf3KsalIQeMUo/tblvXn2TOeVPC9c6m/recHcnB1MbBr9Rd2P",
"body": "",
"status": 200,
"response": {
"id": "recHcnB1MbBr9Rd2P",
"createdTime": "2023-01-03T12:05:53.000Z",
"fields": {
"Employee": "John Doe II",
"Phone": "(123) 456-7890",
"Headshot": [
{
"id": "att3ibwyOXULYL15O",
"width": 950,
"height": 700,
"url": "https://v5.airtableusercontent.com/v1/15/15/1676995200000/D_htRl39BrNhGxsiGlNpcQ/tYWJWmeq3WBDaQCZIeDn-IAKEczimZduMBB30Xq48IYOla6DEq2h59YjRRAQZr4xH-YCc7n3cf4GAXlxPXYAYGfo2e0K230BdUzQXk43vrc/Y61oM8Pgbyu_5-jhuGhea9r2mpjjm5lxIGOJPP5BaO4",
"filename": "headshot-purple-2 (1).png",
"size": 191272,
"type": "image/png",
"thumbnails": {
"small": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676995200000/1Ev7NzTXpXw2FnaLtcYrzg/NZwW2F5QNr7qa_SXXlDx9vhjD_oxlwvSCboJj2T_S1WC0J0WWYYOWr6pfn_s_Z3aOU34l-v7ScjvQdL9vDtczQ/U0GygRlbr35RvoD2S-yyeJ3IWrbOqEjFe1D_-8KKpNY",
"width": 49,
"height": 36
},
"large": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676995200000/lgoKQYxOC2eUe51PTO-_yg/dKv1Cx9ws40PNDnn2Y8bKlv4fbCfyGDshlFno1NOrEkceHJW-cCWG5E97cBs4B389t0Rf8SK3dMt8RkUOyueCg/3WxWv9_VvEua1zls82Z4Dca3yjWD9Cp2e6ldqrhzTKg",
"width": 695,
"height": 512
},
"full": {
"url": "https://v5.airtableusercontent.com/v1/15/15/1676995200000/Rihc4R_4ndQBrAHA49_j7Q/3V3Js1Xsx4AxXmxVkurk09ZpYY0kmOJHJlhDqybO5Zws1tP1oZZC4mCaRRnMLpx3XLu41c5aALWuo7Jl7UC2yQ/1Kej1MQjyAGYqcSVqo4_1GHLMOoF9puGps0NxQCCHpQ",
"width": 3000,
"height": 3000
}
}
}
],
"Employee type": "Contractor"
}
},
"rawHeaders": [
"Date",
"Tue, 21 Feb 2023 12:47:49 GMT",
"Content-Type",
"867",
"Connection",
"close",
"Set-Cookie",
"AWSALB=P04kqBtI/0ytyUg9Fjvlqdj/79QEnNQZOJrk8expPLgAkwq3exJsTzPeYwbkOAkiuGDomuXqutUq6flBHmrEFz1du9r03QrsztyUe1mYaFVAoAPR4BacSk6CNE/8; Expires=Tue, 28 Feb 2023 12:47:49 GMT; Path=/",
"Set-Cookie",
"AWSALBCORS=P04kqBtI/0ytyUg9Fjvlqdj/79QEnNQZOJrk8expPLgAkwq3exJsTzPeYwbkOAkiuGDomuXqutUq6flBHmrEFz1du9r03QrsztyUe1mYaFVAoAPR4BacSk6CNE/8; Expires=Tue, 28 Feb 2023 12:47:49 GMT; Path=/; SameSite=None; Secure",
"Server",
"Tengine",
"Set-Cookie",
"brw=brwJ69m62Pda820BR; path=/; expires=Wed, 21 Feb 2024 12:47:49 GMT; domain=.airtable.com; samesite=none; secure",
"Strict-Transport-Security",
"max-age=31536000; includeSubDomains; preload",
"access-control-allow-origin",
"*",
"access-control-allow-methods",
"DELETE,GET,OPTIONS,PATCH,POST,PUT",
"access-control-allow-headers",
"authorization,content-length,content-type,user-agent,x-airtable-application-id,x-airtable-user-agent,x-api-version,x-requested-with",
"X-Frame-Options",
"DENY",
"X-Content-Type-Options",
"nosniff",
"Vary",
"Accept-Encoding",
"airtable-uncompressed-content-length",
"1314"
],
"responseIsBinary": false
}
]

Some files were not shown because too many files have changed in this diff Show More