{"info":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","description":"<html><head></head><body><p>Every aspect of <strong>Engine Awesome</strong> is accessible via our REST API, allowing you to programmatically interact with and manipulate the data in your application. Whether you're managing objects, or customizing your app’s features, the API provides a comprehensive set of endpoints to suit your needs.</p>\n<p>All of our endpoints begin with your unique Engine Awesome domain, which is assigned to your team when you sign up: <code>https://[team_slug].engineawesome.app</code></p>\n<p>By using your custom domain, you can securely and efficiently make API calls to access and modify your data, integrate with third-party tools, and enhance your workflows. The API is designed to be flexible and user-friendly, empowering you to build and customize your application to meet the specific needs of your business.</p>\n<h3 id=\"query-params\">QUERY PARAMS</h3>\n<h4 id=\"available-on-all-get-requests\">Available on all GET requests.</h4>\n<p><strong><code>page</code></strong>: The page number to fetch (default: 1).</p>\n<p><strong><code>per_page</code></strong>: The number of items to include per page (default: 10).</p>\n<p>Example: <code>https://dundermifflin.engineawesome.app/api/v1/object-types?page=2&amp;per_page=15</code></p>\n<h3 id=\"fields\">FIELDS</h3>\n<p><strong>Date</strong>: When POST or PUT with a Date field in the body, the format should be UTC, without microseconds (e.g. \"2025-03-10T07:59:54Z\")</p>\n</body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"1491352","collectionId":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","publishedId":"2sBYHRTft2","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-10-11T16:17:50.000Z"},"item":[{"name":"Object Types","item":[{"name":"Object Types","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"6d917e97-7cb4-4852-adff-5292d1e7b5c4"}}],"id":"5f483f1d-e6ef-420c-a298-98f23470d6df","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/object-types","description":"<h3 id=\"get-all-object-types\">Get All Object Types</h3>\n<p>Returns every object type on your team, such as <strong>Contacts</strong>, <strong>Projects</strong>, <strong>Tasks</strong> or <strong>Donations</strong>. Use the <code>id</code> of an object type with the Object endpoints to read and write its records.</p>\n<p>Any member of the team can call this endpoint.</p>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>search</code> (optional): only return object types whose <code>name</code> contains this text. The match is case-sensitive.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>This is a GET request and does not require a request body.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array (not wrapped in a <code>data</code> key). Each object type has:</p>\n<ul>\n<li><code>id</code>: the object type's UUID.</li>\n<li><code>name</code>: the plural name, for example <code>Contacts</code>.</li>\n<li><code>labels</code>: an object that always includes <code>singular</code>, for example <code>Contact</code>. If no singular label was set, it is derived from <code>name</code>.</li>\n<li><code>content</code>: the block markup of the object type's form.</li>\n<li><code>relationships</code>: every relationship this object type takes part in, in both directions. Each has:<ul>\n<li><code>id</code>: <code>{objectTypeId}/{fieldSlug}/{kind}</code></li>\n<li><code>slug</code>: the slug of the relationship field.</li>\n<li><code>label</code>: a readable description, for example <code>A Company has many Contacts</code>.</li>\n<li><code>inverse</code>: <code>false</code> when the relationship field is on this object type, <code>true</code> when it is on the other one.</li>\n<li><code>object_type</code>: the ID of the other object type.</li>\n<li><code>kind</code>: <code>hasOne</code> or <code>hasMany</code>.</li>\n</ul>\n</li>\n<li><code>fields</code>: every field, each with <code>name</code> (the block type, for example <code>awesome/text-field</code>), <code>attributes</code> (including <code>slug</code>, <code>label</code>, <code>searchable</code>, <code>show_in_list</code>, <code>required</code> and <code>locking</code>), <code>children</code> and <code>isValid</code>. When field-level permissions are configured, a field also has <code>fga.view.hasPermission</code> and <code>fga.update.hasPermission</code>.</li>\n<li><code>groups</code>: field groups, each with <code>attributes.slug</code>, <code>attributes.label</code> and <code>fields</code> (a list of field slugs).</li>\n<li><code>object_label_fields</code>: the slugs of the fields used to build each record's display label.</li>\n<li><code>notes</code>: internal notes for app builders. Only included if you are allowed to update the object type.</li>\n<li><code>created_at</code>, <code>updated_at</code>: ISO 8601 timestamps.</li>\n<li><code>_links.self[0].href</code>: the object type's API path. <code>_links.self[0].targetHints.allow</code> lists the methods you are allowed to use on it (<code>GET</code>, <code>PUT</code>, <code>DELETE</code>).</li>\n</ul>\n<h4 id=\"response-headers\">Response Headers</h4>\n<ul>\n<li><code>Allow</code>: always includes <code>GET</code>. Includes <code>POST</code> when you are allowed to create object types and your plan has room for another one.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: 200</li>\n<li>Content-Type: application/json</li>\n<li>Example:</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"id\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n    \"name\": \"Companies\",\n    \"labels\": { \"singular\": \"Company\" },\n    \"content\": \"&lt;!-- wp:awesome/text-field ... /--&gt;\",\n    \"relationships\": [\n      {\n        \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/company/hasMany\",\n        \"slug\": \"company\",\n        \"label\": \"A Company has many Contacts\",\n        \"inverse\": true,\n        \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n        \"kind\": \"hasMany\"\n      }\n    ],\n    \"fields\": [\n      {\n        \"name\": \"awesome/text-field\",\n        \"attributes\": {\n          \"slug\": \"name\",\n          \"label\": \"Name\",\n          \"searchable\": true,\n          \"show_in_list\": false,\n          \"locking\": { \"always\": false, \"fields\": [] },\n          \"required\": { \"always\": false, \"fields\": [] }\n        },\n        \"children\": [],\n        \"isValid\": true\n      }\n    ],\n    \"groups\": [],\n    \"object_label_fields\": [\"name\"],\n    \"created_at\": \"2023-04-02T00:16:14.000000Z\",\n    \"updated_at\": \"2025-01-28T16:54:24.000000Z\",\n    \"_links\": {\n      \"self\": [\n        {\n          \"href\": \"/api/v1/object-types/00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n          \"targetHints\": { \"allow\": [\"GET\", \"PUT\", \"DELETE\"] }\n        }\n      ]\n    }\n  }\n]\n</code></pre>\n","urlObject":{"protocol":"https","path":["api","v1","object-types"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"disabled":true,"description":{"content":"<p>Optional. Only return object types whose name contains this text. The match is case-sensitive.</p>\n","type":"text/plain"},"key":"search","value":"Contact"}],"variable":[]}},"response":[{"id":"8e55511a-bdd1-4fc7-916d-40c0d611a4b5","name":"Object Types","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/object-types"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Fri, 07 Feb 2025 19:12:21 GMT"},{"key":"allow","value":"GET"},{"key":"allow","value":"POST"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"598"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=15.964984893799, database;desc=\"Database\";dur=57.67, app;desc=\"App\";dur=98, total;desc=\"Total\";dur=114.63904380798,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n        \"name\": \"Companies\",\n        \"labels\": {\n            \"singular\": \"Company\"\n        },\n        \"content\": \"<!-- wp:awesome/text-field {\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"name\\\" value=\\\"\\\"><label slot=\\\"label\\\">Name</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"url\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"url\\\" name=\\\"website\\\" value=\\\"\\\"><label slot=\\\"label\\\">Website</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/composite-field {\\\"slug\\\":\\\"address\\\",\\\"semantic\\\":\\\"address\\\"} -->\\n<div class=\\\"wp-block-awesome-composite-field\\\"><h3>Address</h3><div><!-- wp:awesome/text-field {\\\"semantic\\\":\\\"address.address_1\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"address_1\\\" value=\\\"\\\"><label slot=\\\"label\\\">Address 1</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"address.city\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"city\\\" value=\\\"\\\"><label slot=\\\"label\\\">City</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"address.state\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"state\\\" value=\\\"\\\"><label slot=\\\"label\\\">State</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"address.postcode\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"postcode\\\" value=\\\"\\\"><label slot=\\\"label\\\">Zip Code</label></text-field>\\n<!-- /wp:awesome/text-field --></div></div>\\n<!-- /wp:awesome/composite-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"date:created_no_time\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"date-time\\\" name=\\\"date_created\\\" value=\\\"\\\"><label slot=\\\"label\\\">Date Created</label></text-field>\\n<!-- /wp:awesome/text-field -->\",\n        \"relationships\": [\n            {\n                \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/company/hasMany\",\n                \"slug\": \"company\",\n                \"label\": \"A Company has many Contacts\",\n                \"inverse\": true,\n                \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n                \"kind\": \"hasMany\"\n            }\n        ],\n        \"fields\": [\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"name\",\n                    \"semantic\": null,\n                    \"inputType\": \"text\",\n                    \"label\": \"Name\",\n                    \"searchable\": true,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"website\",\n                    \"semantic\": \"url\",\n                    \"inputType\": \"url\",\n                    \"label\": \"Website\",\n                    \"searchable\": false,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/composite-field\",\n                \"attributes\": {\n                    \"slug\": \"address\",\n                    \"semantic\": \"address\",\n                    \"label\": \"Address\"\n                },\n                \"children\": [\n                    {\n                        \"name\": \"awesome/text-field\",\n                        \"attributes\": {\n                            \"slug\": \"address_1\",\n                            \"semantic\": \"address.address_1\",\n                            \"inputType\": \"text\",\n                            \"label\": \"Address 1\",\n                            \"searchable\": false,\n                            \"defaultValue\": null,\n                            \"show_in_list\": false,\n                            \"locking\": {\n                                \"always\": false,\n                                \"fields\": []\n                            },\n                            \"required\": {\n                                \"always\": false,\n                                \"fields\": []\n                            }\n                        },\n                        \"children\": []\n                    },\n                    {\n                        \"name\": \"awesome/text-field\",\n                        \"attributes\": {\n                            \"slug\": \"city\",\n                            \"semantic\": \"address.city\",\n                            \"inputType\": \"text\",\n                            \"label\": \"City\",\n                            \"searchable\": false,\n                            \"defaultValue\": null,\n                            \"show_in_list\": false,\n                            \"locking\": {\n                                \"always\": false,\n                                \"fields\": []\n                            },\n                            \"required\": {\n                                \"always\": false,\n                                \"fields\": []\n                            }\n                        },\n                        \"children\": []\n                    },\n                    {\n                        \"name\": \"awesome/text-field\",\n                        \"attributes\": {\n                            \"slug\": \"state\",\n                            \"semantic\": \"address.state\",\n                            \"inputType\": \"text\",\n                            \"label\": \"State\",\n                            \"searchable\": false,\n                            \"defaultValue\": null,\n                            \"show_in_list\": false,\n                            \"locking\": {\n                                \"always\": false,\n                                \"fields\": []\n                            },\n                            \"required\": {\n                                \"always\": false,\n                                \"fields\": []\n                            }\n                        },\n                        \"children\": []\n                    },\n                    {\n                        \"name\": \"awesome/text-field\",\n                        \"attributes\": {\n                            \"slug\": \"postcode\",\n                            \"semantic\": \"address.postcode\",\n                            \"inputType\": \"text\",\n                            \"label\": \"Zip Code\",\n                            \"searchable\": false,\n                            \"defaultValue\": null,\n                            \"show_in_list\": false,\n                            \"locking\": {\n                                \"always\": false,\n                                \"fields\": []\n                            },\n                            \"required\": {\n                                \"always\": false,\n                                \"fields\": []\n                            }\n                        },\n                        \"children\": []\n                    }\n                ],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"date_created\",\n                    \"semantic\": \"date:created_no_time\",\n                    \"inputType\": \"date-time\",\n                    \"label\": \"Date Created\",\n                    \"searchable\": true,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            }\n        ],\n        \"groups\": [],\n        \"object_label_fields\": [\n            \"name\"\n        ],\n        \"created_at\": \"2023-04-02T00:16:14.000000Z\",\n        \"updated_at\": \"2025-01-28T16:54:24.000000Z\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/object-types/00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ]\n        }\n    },\n    {\n        \"id\": \"e92da571-5475-45e8-8758-e96261984537\",\n        \"name\": \"Activities\",\n        \"labels\": {\n            \"singular\": \"Activity\"\n        },\n        \"content\": \"<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"date:created\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"date-time\\\" name=\\\"date\\\" value=\\\"\\\"><label slot=\\\"label\\\">Date</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"Email\\\",\\\"Text\\\",\\\"Phone\\\",\\\"Zoom\\\",\\\"In-Person\\\",\\\"Other\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"type\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Type</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/textarea-field {\\\"searchable\\\":true} -->\\n<textarea-field class=\\\"wp-block-awesome-textarea-field\\\" name=\\\"notes\\\" value=\\\"\\\"><label slot=\\\"label\\\">Notes</label></textarea-field>\\n<!-- /wp:awesome/textarea-field -->\\n\\n<!-- wp:awesome/has-one-relationship-field {\\\"objectType\\\":\\\"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\\\"} -->\\n<text-field class=\\\"wp-block-awesome-has-one-relationship-field\\\" name=\\\"contact\\\"><label slot=\\\"label\\\">Contact</label></text-field>\\n<!-- /wp:awesome/has-one-relationship-field -->\\n\\n<!-- wp:awesome/user-field {\\\"semantic\\\":\\\"user:created\\\",\\\"locking\\\":{\\\"always\\\":true,\\\"fields\\\":{}}} -->\\n<text-field class=\\\"wp-block-awesome-user-field\\\" name=\\\"user\\\"><label slot=\\\"label\\\">User</label></text-field>\\n<!-- /wp:awesome/user-field -->\",\n        \"relationships\": [\n            {\n                \"id\": \"e92da571-5475-45e8-8758-e96261984537/contact/hasOne\",\n                \"slug\": \"contact\",\n                \"label\": \"Activities have one Contact\",\n                \"inverse\": false,\n                \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n                \"kind\": \"hasOne\"\n            }\n        ],\n        \"fields\": [\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"date\",\n                    \"semantic\": \"date:created\",\n                    \"inputType\": \"date-time\",\n                    \"label\": \"Date\",\n                    \"searchable\": true,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/single-choice-field\",\n                \"attributes\": {\n                    \"slug\": \"type\",\n                    \"label\": \"Type\",\n                    \"searchable\": true,\n                    \"show_in_list\": false,\n                    \"variation\": \"dropdown\",\n                    \"choices\": [\n                        \"Email\",\n                        \"Text\",\n                        \"Phone\",\n                        \"Zoom\",\n                        \"In-Person\",\n                        \"Other\"\n                    ],\n                    \"defaultValue\": null,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/textarea-field\",\n                \"attributes\": {\n                    \"slug\": \"notes\",\n                    \"semantic\": null,\n                    \"label\": \"Notes\",\n                    \"searchable\": true,\n                    \"show_in_list\": false,\n                    \"defaultValue\": null,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/has-one-relationship-field\",\n                \"attributes\": {\n                    \"slug\": \"contact\",\n                    \"label\": \"Contact\",\n                    \"show_in_list\": false,\n                    \"objectType\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n                    \"hasZanzibar\": false,\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/user-field\",\n                \"attributes\": {\n                    \"slug\": \"user\",\n                    \"label\": \"User\",\n                    \"semantic\": \"user:created\",\n                    \"locking\": {\n                        \"always\": true,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            }\n        ],\n        \"groups\": [],\n        \"object_label_fields\": [],\n        \"created_at\": \"2023-04-02T00:16:21.000000Z\",\n        \"updated_at\": \"2024-09-26T00:19:22.000000Z\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/object-types/e92da571-5475-45e8-8758-e96261984537\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ]\n        }\n    },\n    {\n        \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n        \"name\": \"Contacts\",\n        \"labels\": {\n            \"singular\": \"Contact\"\n        },\n        \"content\": \"<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"name\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"first_name\\\" value=\\\"\\\"><label slot=\\\"label\\\">First Name</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"name\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"last_name\\\" value=\\\"\\\"><label slot=\\\"label\\\">Last Name</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"date\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"date-time\\\" name=\\\"followup_date\\\" value=\\\"\\\"><label slot=\\\"label\\\">Followup Date</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"followup_note\\\" value=\\\"\\\"><label slot=\\\"label\\\">Followup Note</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"phone-number\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"tel\\\" name=\\\"mobile_phone\\\" value=\\\"\\\"><label slot=\\\"label\\\">Mobile Phone</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"phone-number\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"tel\\\" name=\\\"office_phone\\\" value=\\\"\\\"><label slot=\\\"label\\\">Office Phone</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"email\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"email\\\" name=\\\"email\\\" value=\\\"\\\"><label slot=\\\"label\\\">Email</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/has-one-relationship-field {\\\"objectType\\\":\\\"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\\\"} -->\\n<text-field class=\\\"wp-block-awesome-has-one-relationship-field\\\" name=\\\"company\\\"><label slot=\\\"label\\\">Company</label></text-field>\\n<!-- /wp:awesome/has-one-relationship-field -->\\n\\n<!-- wp:awesome/textarea-field -->\\n<textarea-field class=\\\"wp-block-awesome-textarea-field\\\" name=\\\"notes\\\" value=\\\"\\\"><label slot=\\\"label\\\">Notes</label></textarea-field>\\n<!-- /wp:awesome/textarea-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"Lead\\\",\\\"Customer\\\",\\\"Partner\\\",\\\"Inactive\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"type\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Type</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"New\\\",\\\"Followup\\\",\\\"Meeting Scheduled\\\",\\\"Dead\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"status\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Status</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"Website\\\",\\\"Personal\\\",\\\"Linkedin\\\",\\\"Twitter\\\",\\\"Other\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"acquired\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Acquired</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"date:created_no_time\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"date-time\\\" name=\\\"date_created\\\" value=\\\"\\\"><label slot=\\\"label\\\">Date Created</label></text-field>\\n<!-- /wp:awesome/text-field -->\",\n        \"relationships\": [\n            {\n                \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/company/hasOne\",\n                \"slug\": \"company\",\n                \"label\": \"Contacts have one Company\",\n                \"inverse\": false,\n                \"object_type\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n                \"kind\": \"hasOne\"\n            },\n            {\n                \"id\": \"e92da571-5475-45e8-8758-e96261984537/contact/hasMany\",\n                \"slug\": \"contact\",\n                \"label\": \"A Contact has many Activities\",\n                \"inverse\": true,\n                \"object_type\": \"e92da571-5475-45e8-8758-e96261984537\",\n                \"kind\": \"hasMany\"\n            }\n        ],\n        \"fields\": [\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"first_name\",\n                    \"semantic\": \"name\",\n                    \"inputType\": \"text\",\n                    \"label\": \"First Name\",\n                    \"searchable\": true,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"last_name\",\n                    \"semantic\": \"name\",\n                    \"inputType\": \"text\",\n                    \"label\": \"Last Name\",\n                    \"searchable\": true,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"followup_date\",\n                    \"semantic\": \"date\",\n                    \"inputType\": \"date-time\",\n                    \"label\": \"Followup Date\",\n                    \"searchable\": true,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"followup_note\",\n                    \"semantic\": null,\n                    \"inputType\": \"text\",\n                    \"label\": \"Followup Note\",\n                    \"searchable\": false,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"mobile_phone\",\n                    \"semantic\": \"phone-number\",\n                    \"inputType\": \"tel\",\n                    \"label\": \"Mobile Phone\",\n                    \"searchable\": false,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"office_phone\",\n                    \"semantic\": \"phone-number\",\n                    \"inputType\": \"tel\",\n                    \"label\": \"Office Phone\",\n                    \"searchable\": false,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"email\",\n                    \"semantic\": \"email\",\n                    \"inputType\": \"email\",\n                    \"label\": \"Email\",\n                    \"searchable\": false,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/has-one-relationship-field\",\n                \"attributes\": {\n                    \"slug\": \"company\",\n                    \"label\": \"Company\",\n                    \"show_in_list\": false,\n                    \"objectType\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n                    \"hasZanzibar\": false,\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/textarea-field\",\n                \"attributes\": {\n                    \"slug\": \"notes\",\n                    \"semantic\": null,\n                    \"label\": \"Notes\",\n                    \"searchable\": false,\n                    \"show_in_list\": false,\n                    \"defaultValue\": null,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/single-choice-field\",\n                \"attributes\": {\n                    \"slug\": \"type\",\n                    \"label\": \"Type\",\n                    \"searchable\": true,\n                    \"show_in_list\": false,\n                    \"variation\": \"dropdown\",\n                    \"choices\": [\n                        \"Lead\",\n                        \"Customer\",\n                        \"Partner\",\n                        \"Inactive\"\n                    ],\n                    \"defaultValue\": null,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/single-choice-field\",\n                \"attributes\": {\n                    \"slug\": \"status\",\n                    \"label\": \"Status\",\n                    \"searchable\": true,\n                    \"show_in_list\": false,\n                    \"variation\": \"dropdown\",\n                    \"choices\": [\n                        \"New\",\n                        \"Followup\",\n                        \"Meeting Scheduled\",\n                        \"Dead\"\n                    ],\n                    \"defaultValue\": null,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/single-choice-field\",\n                \"attributes\": {\n                    \"slug\": \"acquired\",\n                    \"label\": \"Acquired\",\n                    \"searchable\": true,\n                    \"show_in_list\": false,\n                    \"variation\": \"dropdown\",\n                    \"choices\": [\n                        \"Website\",\n                        \"Personal\",\n                        \"Linkedin\",\n                        \"Twitter\",\n                        \"Other\"\n                    ],\n                    \"defaultValue\": null,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            },\n            {\n                \"name\": \"awesome/text-field\",\n                \"attributes\": {\n                    \"slug\": \"date_created\",\n                    \"semantic\": \"date:created_no_time\",\n                    \"inputType\": \"date-time\",\n                    \"label\": \"Date Created\",\n                    \"searchable\": true,\n                    \"defaultValue\": null,\n                    \"show_in_list\": false,\n                    \"locking\": {\n                        \"always\": false,\n                        \"fields\": []\n                    },\n                    \"required\": {\n                        \"always\": false,\n                        \"fields\": []\n                    }\n                },\n                \"children\": [],\n                \"isValid\": true\n            }\n        ],\n        \"groups\": [],\n        \"object_label_fields\": [\n            \"first_name\",\n            \"last_name\"\n        ],\n        \"created_at\": \"2023-04-02T00:16:18.000000Z\",\n        \"updated_at\": \"2025-01-25T19:20:32.000000Z\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/object-types/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ]\n        }\n    }\n]"}],"_postman_id":"5f483f1d-e6ef-420c-a298-98f23470d6df"},{"name":"Object Type by ID","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"d8fc3ffd-09d5-4b56-a0c1-91951e92bf6e"}}],"id":"10b74d41-15ba-48cf-852b-1124db342360","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/object-types/{{objectType}}","description":"<h3 id=\"get-a-single-object-type\">Get A Single Object Type</h3>\n<p>Returns one object type, such as <strong>Contacts</strong> or <strong>Projects</strong>, by its ID. Use it to look up the fields, relationships and labels of an object type before reading or writing its objects.</p>\n<p>You need permission to read object types on the team.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID, from <strong>Get All Object Types</strong>.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>This is a GET request and does not require a request body.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A single object type, with the same properties as each item returned by <strong>Get All Object Types</strong>: <code>id</code>, <code>name</code>, <code>labels</code>, <code>content</code>, <code>relationships</code>, <code>fields</code>, <code>groups</code>, <code>object_label_fields</code>, <code>notes</code> (only if you are allowed to update the object type), <code>created_at</code>, <code>updated_at</code> and <code>_links</code>.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to read object types on this team.</li>\n<li><code>404</code>: the ID is not a valid UUID, or no object type with that ID exists on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","object-types","{{objectType}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"d9054a61-bf2e-45e5-9538-63f8802edb8a","name":"Object Types by ID","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/object-types/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 02:42:58 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=15.861988067627, database;desc=\"Database\";dur=38.4, app;desc=\"App\";dur=60, total;desc=\"Total\";dur=76.754093170166,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"name\": \"Contacts\",\n    \"labels\": {\n        \"singular\": \"Contact\"\n    },\n    \"content\": \"<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"name\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"first_name\\\" value=\\\"\\\"><label slot=\\\"label\\\">First Name</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"name\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"last_name\\\" value=\\\"\\\"><label slot=\\\"label\\\">Last Name</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"date\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"date-time\\\" name=\\\"followup_date\\\" value=\\\"\\\"><label slot=\\\"label\\\">Followup Date</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"followup_note\\\" value=\\\"\\\"><label slot=\\\"label\\\">Followup Note</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"phone-number\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"tel\\\" name=\\\"mobile_phone\\\" value=\\\"\\\"><label slot=\\\"label\\\">Mobile Phone</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"phone-number\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"tel\\\" name=\\\"office_phone\\\" value=\\\"\\\"><label slot=\\\"label\\\">Office Phone</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"email\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"email\\\" name=\\\"email\\\" value=\\\"\\\"><label slot=\\\"label\\\">Email</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/has-one-relationship-field {\\\"objectType\\\":\\\"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\\\"} -->\\n<text-field class=\\\"wp-block-awesome-has-one-relationship-field\\\" name=\\\"company\\\"><label slot=\\\"label\\\">Company</label></text-field>\\n<!-- /wp:awesome/has-one-relationship-field -->\\n\\n<!-- wp:awesome/textarea-field -->\\n<textarea-field class=\\\"wp-block-awesome-textarea-field\\\" name=\\\"notes\\\" value=\\\"\\\"><label slot=\\\"label\\\">Notes</label></textarea-field>\\n<!-- /wp:awesome/textarea-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"Lead\\\",\\\"Customer\\\",\\\"Partner\\\",\\\"Inactive\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"type\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Type</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"New\\\",\\\"Followup\\\",\\\"Meeting Scheduled\\\",\\\"Dead\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"status\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Status</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"Website\\\",\\\"Personal\\\",\\\"Linkedin\\\",\\\"Twitter\\\",\\\"Other\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"acquired\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Acquired</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"date:created_no_time\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"date-time\\\" name=\\\"date_created\\\" value=\\\"\\\"><label slot=\\\"label\\\">Date Created</label></text-field>\\n<!-- /wp:awesome/text-field -->\",\n    \"relationships\": [\n        {\n            \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/company/hasOne\",\n            \"slug\": \"company\",\n            \"label\": \"Contacts have one Company\",\n            \"inverse\": false,\n            \"object_type\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n            \"kind\": \"hasOne\"\n        },\n        {\n            \"id\": \"e92da571-5475-45e8-8758-e96261984537/contact/hasMany\",\n            \"slug\": \"contact\",\n            \"label\": \"A Contact has many Activities\",\n            \"inverse\": true,\n            \"object_type\": \"e92da571-5475-45e8-8758-e96261984537\",\n            \"kind\": \"hasMany\"\n        }\n    ],\n    \"fields\": [\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"first_name\",\n                \"semantic\": \"name\",\n                \"inputType\": \"text\",\n                \"label\": \"First Name\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"last_name\",\n                \"semantic\": \"name\",\n                \"inputType\": \"text\",\n                \"label\": \"Last Name\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"followup_date\",\n                \"semantic\": \"date\",\n                \"inputType\": \"date-time\",\n                \"label\": \"Followup Date\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"followup_note\",\n                \"semantic\": null,\n                \"inputType\": \"text\",\n                \"label\": \"Followup Note\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"mobile_phone\",\n                \"semantic\": \"phone-number\",\n                \"inputType\": \"tel\",\n                \"label\": \"Mobile Phone\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"office_phone\",\n                \"semantic\": \"phone-number\",\n                \"inputType\": \"tel\",\n                \"label\": \"Office Phone\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"email\",\n                \"semantic\": \"email\",\n                \"inputType\": \"email\",\n                \"label\": \"Email\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/has-one-relationship-field\",\n            \"attributes\": {\n                \"slug\": \"company\",\n                \"label\": \"Company\",\n                \"show_in_list\": false,\n                \"objectType\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n                \"hasZanzibar\": false,\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/textarea-field\",\n            \"attributes\": {\n                \"slug\": \"notes\",\n                \"semantic\": null,\n                \"label\": \"Notes\",\n                \"searchable\": false,\n                \"show_in_list\": false,\n                \"defaultValue\": null,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/single-choice-field\",\n            \"attributes\": {\n                \"slug\": \"type\",\n                \"label\": \"Type\",\n                \"searchable\": true,\n                \"show_in_list\": false,\n                \"variation\": \"dropdown\",\n                \"choices\": [\n                    \"Lead\",\n                    \"Customer\",\n                    \"Partner\",\n                    \"Inactive\"\n                ],\n                \"defaultValue\": null,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/single-choice-field\",\n            \"attributes\": {\n                \"slug\": \"status\",\n                \"label\": \"Status\",\n                \"searchable\": true,\n                \"show_in_list\": false,\n                \"variation\": \"dropdown\",\n                \"choices\": [\n                    \"New\",\n                    \"Followup\",\n                    \"Meeting Scheduled\",\n                    \"Dead\"\n                ],\n                \"defaultValue\": null,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/single-choice-field\",\n            \"attributes\": {\n                \"slug\": \"acquired\",\n                \"label\": \"Acquired\",\n                \"searchable\": true,\n                \"show_in_list\": false,\n                \"variation\": \"dropdown\",\n                \"choices\": [\n                    \"Website\",\n                    \"Personal\",\n                    \"Linkedin\",\n                    \"Twitter\",\n                    \"Other\"\n                ],\n                \"defaultValue\": null,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"date_created\",\n                \"semantic\": \"date:created_no_time\",\n                \"inputType\": \"date-time\",\n                \"label\": \"Date Created\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        }\n    ],\n    \"groups\": [],\n    \"object_label_fields\": [\n        \"first_name\",\n        \"last_name\"\n    ],\n    \"created_at\": \"2023-04-02T00:16:18.000000Z\",\n    \"updated_at\": \"2025-01-25T19:20:32.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/object-types/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"10b74d41-15ba-48cf-852b-1124db342360"},{"name":"Searchable Fields for Object Type","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"dddfe561-7ab5-4f33-8051-d0fd5ced9a2c"}}],"id":"2fd2d984-3008-4010-8a2b-53af20527f06","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/zapier/fields/{{objectType}}?searchable=1","description":"<h3 id=\"get-fields-for-an-object-type\">Get Fields for an Object Type</h3>\n<p>Returns a simple description of each field on an object type.</p>\n<p>This endpoint was originally created for our Zapier integration, but you can use it to list an object type's fields anywhere you need them: to let someone choose which field to search by, to build a field-mapping screen for an import or sync, or to check which fields are required or read-only before you create an object.</p>\n<p>By default it returns <strong>every</strong> field. Add <code>searchable=1</code> to only return fields marked \"<a href=\"https://docs.engineawesome.com/object-types/field-settings/is-searchable/\">Is Searchable</a>\". Those are the fields you can filter by with the <strong>Object: search by field</strong> endpoint.</p>\n<p>File fields are never included.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n</ul>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>searchable</code> (optional): <code>1</code> or <code>true</code> to only return searchable fields.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array. Each field has:</p>\n<ul>\n<li><code>key</code>: the field slug. Use it as the property name when reading, writing or searching objects.</li>\n<li><code>label</code>: the field's label.</li>\n<li><code>placeholder</code>: an example value, when the field's semantic type has one (for example <code>2022-01-31T12:30:00</code> for dates). Otherwise an empty string.</li>\n<li><code>type</code>: <code>string</code>, <code>text</code> (multi-line text), <code>boolean</code> or <code>datetime</code> (text fields with the date semantic type).</li>\n<li><code>required</code>: <code>true</code> if the field is always required.</li>\n<li><code>computed</code>: <code>true</code> if the field is read-only.</li>\n<li><code>choices</code>: for single- and multiple-choice fields, the allowed values.</li>\n<li><code>list</code>: <code>true</code> for multiple-choice fields, whose value is an array.</li>\n</ul>\n<p>Relationship fields have a different shape: just <code>key</code>, <code>label</code>, <code>dynamic</code> and <code>search</code>. The last two are Zapier settings for looking up the related object; their value is the related object's <code>_id</code>.</p>\n<p>The saved example below was captured without <code>searchable</code>, so it lists every field.</p>\n","urlObject":{"protocol":"https","path":["api","v1","zapier","fields","{{objectType}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"description":{"content":"<p>Only return fields marked \"Is Searchable\". Leave it out to return every field.</p>\n","type":"text/plain"},"key":"searchable","value":"1"}],"variable":[]}},"response":[{"id":"beccaf63-f6b2-459d-a778-3d4998199b67","name":"Searchable Fields for Object Type","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/zapier/fields/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 02:48:56 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"593"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=23.261070251465, database;desc=\"Database\";dur=68.78, app;desc=\"App\";dur=92, total;desc=\"Total\";dur=115.79298973083,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"key\": \"first_name\",\n        \"label\": \"First Name\",\n        \"placeholder\": \"Name\",\n        \"type\": \"string\",\n        \"required\": true,\n        \"computed\": false\n    },\n    {\n        \"key\": \"last_name\",\n        \"label\": \"Last Name\",\n        \"placeholder\": \"Name\",\n        \"type\": \"string\",\n        \"required\": true,\n        \"computed\": false\n    },\n    {\n        \"key\": \"followup_date\",\n        \"label\": \"Followup Date\",\n        \"placeholder\": \"2022-01-31T12:30:00\",\n        \"type\": \"datetime\",\n        \"required\": false,\n        \"computed\": false\n    },\n    {\n        \"key\": \"followup_note\",\n        \"label\": \"Followup Note\",\n        \"placeholder\": \"\",\n        \"type\": \"string\",\n        \"required\": false,\n        \"computed\": false\n    },\n    {\n        \"key\": \"mobile_phone\",\n        \"label\": \"Mobile Phone\",\n        \"placeholder\": \"+1 (123) 123-1234\",\n        \"type\": \"string\",\n        \"required\": false,\n        \"computed\": false\n    },\n    {\n        \"key\": \"office_phone\",\n        \"label\": \"Office Phone\",\n        \"placeholder\": \"+1 (123) 123-1234\",\n        \"type\": \"string\",\n        \"required\": false,\n        \"computed\": false\n    },\n    {\n        \"key\": \"email\",\n        \"label\": \"Email\",\n        \"placeholder\": \"name@example.org\",\n        \"type\": \"string\",\n        \"required\": false,\n        \"computed\": false\n    },\n    {\n        \"key\": \"company\",\n        \"label\": \"Company\",\n        \"dynamic\": \"objectList.id._label\",\n        \"search\": \"objectSearch.id\"\n    },\n    {\n        \"key\": \"notes\",\n        \"label\": \"Notes\",\n        \"placeholder\": \"\",\n        \"type\": \"text\",\n        \"required\": false,\n        \"computed\": false\n    },\n    {\n        \"key\": \"type\",\n        \"label\": \"Type\",\n        \"placeholder\": \"\",\n        \"type\": \"string\",\n        \"required\": false,\n        \"computed\": false,\n        \"choices\": [\n            \"Lead\",\n            \"Customer\",\n            \"Partner\",\n            \"Inactive\"\n        ]\n    },\n    {\n        \"key\": \"status\",\n        \"label\": \"Status\",\n        \"placeholder\": \"\",\n        \"type\": \"string\",\n        \"required\": false,\n        \"computed\": false,\n        \"choices\": [\n            \"New\",\n            \"Followup\",\n            \"Meeting Scheduled\",\n            \"Dead\"\n        ]\n    },\n    {\n        \"key\": \"acquired\",\n        \"label\": \"Acquired\",\n        \"placeholder\": \"\",\n        \"type\": \"string\",\n        \"required\": false,\n        \"computed\": false,\n        \"choices\": [\n            \"Website\",\n            \"Personal\",\n            \"Linkedin\",\n            \"Twitter\",\n            \"Other\"\n        ]\n    },\n    {\n        \"key\": \"date_created\",\n        \"label\": \"Date Created\",\n        \"placeholder\": \"2022-01-31T12:30:00\",\n        \"type\": \"datetime\",\n        \"required\": false,\n        \"computed\": false\n    }\n]"}],"_postman_id":"2fd2d984-3008-4010-8a2b-53af20527f06"},{"name":"Create Object Type","id":"c49dbae2-e91a-4651-8b79-5453858b5835","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Projects\",\n  \"fields\": [\n    {\n      \"name\": \"awesome/text-field\",\n      \"attributes\": { \"slug\": \"name\", \"label\": \"Name\" },\n      \"children\": []\n    }\n  ],\n  \"object_label_fields\": [\"name\"]\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/object-types","description":"<h3 id=\"create-an-object-type\">Create an Object Type</h3>\n<p>Creates an object type. Administrators and Owners can create object types, and your plan may limit how many you can have.</p>\n<p>A default list layout is created for it automatically.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>name</code>: the plural name, such as <code>Contacts</code>. Up to 255 characters.</li>\n<li><code>content</code>: the block markup of the object type's form, as returned by <strong>Object Type by ID</strong>.</li>\n<li><code>fields</code>: every field, each <code>{\"name\": \"&lt;block type&gt;\", \"attributes\": {...}, \"children\": []}</code>. <code>attributes.slug</code> (letters, numbers, <code>-</code> and <code>_</code>, up to 40 characters, unique) and <code>attributes.label</code> (up to 40 characters) are required. Each field's other attributes are validated by its type.</li>\n<li><code>groups</code>: field groups, each <code>{\"attributes\": {\"slug\": \"...\", \"label\": \"...\"}, \"fields\": [\"&lt;field slug&gt;\", ...]}</code>.</li>\n<li><code>object_label_fields</code>: the field slugs that make up each object's label.</li>\n<li><code>notes</code>: internal notes for app builders.</li>\n</ul>\n<p><code>content</code> and <code>fields</code> describe the same form and should be sent together. The easiest way to get them right is to build the object type in the app and read it with <strong>Object Type by ID</strong>.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>201 Created</code></li>\n<li>Body: the new object type, as in <strong>Object Type by ID</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>400</code>: a field's <code>name</code> isn't a known field type.</li>\n<li><code>403</code>: you aren't allowed to create object types, or your plan's limit is reached.</li>\n<li><code>422</code>: a value is invalid, for example a duplicate field slug or an <code>object_label_fields</code> slug that isn't a field.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","object-types"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"70405159-cd08-4f9c-89a4-c8795a32f90e","name":"Create Object Type","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Projects\",\n  \"fields\": [\n    {\n      \"name\": \"awesome/text-field\",\n      \"attributes\": { \"slug\": \"name\", \"label\": \"Name\" },\n      \"children\": []\n    }\n  ],\n  \"object_label_fields\": [\"name\"]\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/object-types"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"4c1e8f2a-7b3d-4e5f-9a6b-1d2c3e4f5a6b\",\n    \"name\": \"Projects\",\n    \"labels\": {\n        \"singular\": \"Project\"\n    },\n    \"content\": \"<!-- wp:awesome/text-field {\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"name\\\" value=\\\"\\\"><label slot=\\\"label\\\">Name</label></text-field>\\n<!-- /wp:awesome/text-field -->\",\n    \"relationships\": [],\n    \"fields\": [\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"name\",\n                \"label\": \"Name\",\n                \"searchable\": true,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        }\n    ],\n    \"groups\": [],\n    \"object_label_fields\": [\n        \"name\"\n    ],\n    \"notes\": null,\n    \"created_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"updated_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/object-types/4c1e8f2a-7b3d-4e5f-9a6b-1d2c3e4f5a6b\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"c49dbae2-e91a-4651-8b79-5453858b5835"},{"name":"Update Object Type","id":"14726e35-5735-4a82-8f3b-99ff231e5b93","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Projects\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/object-types/{{objectType}}","description":"<h3 id=\"update-an-object-type\">Update an Object Type</h3>\n<p>Changes an object type. Send only the properties you want to change. Administrators and Owners can update object types.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Accepts the same properties as <strong>Create Object Type</strong>.</p>\n<blockquote>\n<p>⚠️ <code>fields</code> replaces the whole list. A field you leave out is removed from the object type. Always read the object type first and send back every field, changed or not.</p>\n</blockquote>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the updated object type, as in <strong>Object Type by ID</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>400</code>: a field's <code>name</code> isn't a known field type.</li>\n<li><code>403</code>: you aren't allowed to update object types.</li>\n<li><code>404</code>: no object type with that ID exists on this team.</li>\n<li><code>422</code>: a value is invalid.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","object-types","{{objectType}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"8e4cb7fa-9b0a-4795-939f-0d67ca7e7ef9","name":"Update Object Type","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Projects\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/object-types/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"name\": \"Contacts\",\n    \"labels\": {\n        \"singular\": \"Contact\"\n    },\n    \"content\": \"<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"name\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"first_name\\\" value=\\\"\\\"><label slot=\\\"label\\\">First Name</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"name\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"last_name\\\" value=\\\"\\\"><label slot=\\\"label\\\">Last Name</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"date\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"date-time\\\" name=\\\"followup_date\\\" value=\\\"\\\"><label slot=\\\"label\\\">Followup Date</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"text\\\" name=\\\"followup_note\\\" value=\\\"\\\"><label slot=\\\"label\\\">Followup Note</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"phone-number\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"tel\\\" name=\\\"mobile_phone\\\" value=\\\"\\\"><label slot=\\\"label\\\">Mobile Phone</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"phone-number\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"tel\\\" name=\\\"office_phone\\\" value=\\\"\\\"><label slot=\\\"label\\\">Office Phone</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"email\\\"} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"email\\\" name=\\\"email\\\" value=\\\"\\\"><label slot=\\\"label\\\">Email</label></text-field>\\n<!-- /wp:awesome/text-field -->\\n\\n<!-- wp:awesome/has-one-relationship-field {\\\"objectType\\\":\\\"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\\\"} -->\\n<text-field class=\\\"wp-block-awesome-has-one-relationship-field\\\" name=\\\"company\\\"><label slot=\\\"label\\\">Company</label></text-field>\\n<!-- /wp:awesome/has-one-relationship-field -->\\n\\n<!-- wp:awesome/textarea-field -->\\n<textarea-field class=\\\"wp-block-awesome-textarea-field\\\" name=\\\"notes\\\" value=\\\"\\\"><label slot=\\\"label\\\">Notes</label></textarea-field>\\n<!-- /wp:awesome/textarea-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"Lead\\\",\\\"Customer\\\",\\\"Partner\\\",\\\"Inactive\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"type\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Type</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"New\\\",\\\"Followup\\\",\\\"Meeting Scheduled\\\",\\\"Dead\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"status\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Status</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/single-choice-field {\\\"searchable\\\":true,\\\"variation\\\":\\\"dropdown\\\",\\\"choices\\\":[\\\"Website\\\",\\\"Personal\\\",\\\"Linkedin\\\",\\\"Twitter\\\",\\\"Other\\\"]} -->\\n<dropdown-field class=\\\"wp-block-awesome-single-choice-field\\\" name=\\\"acquired\\\" selectedoption=\\\"\\\"><label slot=\\\"label\\\">Acquired</label></dropdown-field>\\n<!-- /wp:awesome/single-choice-field -->\\n\\n<!-- wp:awesome/text-field {\\\"semantic\\\":\\\"date:created_no_time\\\",\\\"searchable\\\":true} -->\\n<text-field class=\\\"wp-block-awesome-text-field\\\" type=\\\"date-time\\\" name=\\\"date_created\\\" value=\\\"\\\"><label slot=\\\"label\\\">Date Created</label></text-field>\\n<!-- /wp:awesome/text-field -->\",\n    \"relationships\": [\n        {\n            \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/company/hasOne\",\n            \"slug\": \"company\",\n            \"label\": \"Contacts have one Company\",\n            \"inverse\": false,\n            \"object_type\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n            \"kind\": \"hasOne\"\n        },\n        {\n            \"id\": \"e92da571-5475-45e8-8758-e96261984537/contact/hasMany\",\n            \"slug\": \"contact\",\n            \"label\": \"A Contact has many Activities\",\n            \"inverse\": true,\n            \"object_type\": \"e92da571-5475-45e8-8758-e96261984537\",\n            \"kind\": \"hasMany\"\n        }\n    ],\n    \"fields\": [\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"first_name\",\n                \"semantic\": \"name\",\n                \"inputType\": \"text\",\n                \"label\": \"First Name\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"last_name\",\n                \"semantic\": \"name\",\n                \"inputType\": \"text\",\n                \"label\": \"Last Name\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"followup_date\",\n                \"semantic\": \"date\",\n                \"inputType\": \"date-time\",\n                \"label\": \"Followup Date\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"followup_note\",\n                \"semantic\": null,\n                \"inputType\": \"text\",\n                \"label\": \"Followup Note\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"mobile_phone\",\n                \"semantic\": \"phone-number\",\n                \"inputType\": \"tel\",\n                \"label\": \"Mobile Phone\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"office_phone\",\n                \"semantic\": \"phone-number\",\n                \"inputType\": \"tel\",\n                \"label\": \"Office Phone\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"email\",\n                \"semantic\": \"email\",\n                \"inputType\": \"email\",\n                \"label\": \"Email\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/has-one-relationship-field\",\n            \"attributes\": {\n                \"slug\": \"company\",\n                \"label\": \"Company\",\n                \"show_in_list\": false,\n                \"objectType\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n                \"hasZanzibar\": false,\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/textarea-field\",\n            \"attributes\": {\n                \"slug\": \"notes\",\n                \"semantic\": null,\n                \"label\": \"Notes\",\n                \"searchable\": false,\n                \"show_in_list\": false,\n                \"defaultValue\": null,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/single-choice-field\",\n            \"attributes\": {\n                \"slug\": \"type\",\n                \"label\": \"Type\",\n                \"searchable\": true,\n                \"show_in_list\": false,\n                \"variation\": \"dropdown\",\n                \"choices\": [\n                    \"Lead\",\n                    \"Customer\",\n                    \"Partner\",\n                    \"Inactive\"\n                ],\n                \"defaultValue\": null,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/single-choice-field\",\n            \"attributes\": {\n                \"slug\": \"status\",\n                \"label\": \"Status\",\n                \"searchable\": true,\n                \"show_in_list\": false,\n                \"variation\": \"dropdown\",\n                \"choices\": [\n                    \"New\",\n                    \"Followup\",\n                    \"Meeting Scheduled\",\n                    \"Dead\"\n                ],\n                \"defaultValue\": null,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/single-choice-field\",\n            \"attributes\": {\n                \"slug\": \"acquired\",\n                \"label\": \"Acquired\",\n                \"searchable\": true,\n                \"show_in_list\": false,\n                \"variation\": \"dropdown\",\n                \"choices\": [\n                    \"Website\",\n                    \"Personal\",\n                    \"Linkedin\",\n                    \"Twitter\",\n                    \"Other\"\n                ],\n                \"defaultValue\": null,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"date_created\",\n                \"semantic\": \"date:created_no_time\",\n                \"inputType\": \"date-time\",\n                \"label\": \"Date Created\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        }\n    ],\n    \"groups\": [],\n    \"object_label_fields\": [\n        \"first_name\",\n        \"last_name\"\n    ],\n    \"created_at\": \"2023-04-02T00:16:18.000000Z\",\n    \"updated_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/object-types/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"14726e35-5735-4a82-8f3b-99ff231e5b93"},{"name":"Delete Object Type","id":"28ee27c3-975f-47b7-9c0c-1579c5917557","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/object-types/{{objectType}}","description":"<h3 id=\"delete-an-object-type\">Delete an Object Type</h3>\n<p>Deletes an object type. Its objects, views and forms stop appearing in the app and the API. Administrators and Owners can delete object types.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to delete object types.</li>\n<li><code>404</code>: no object type with that ID exists on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","object-types","{{objectType}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"54b0e2db-5aa8-4c7d-b4a8-ca042870ecaf","name":"Delete Object Type","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/object-types/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"28ee27c3-975f-47b7-9c0c-1579c5917557"}],"id":"87c1990c-a39f-4977-920e-0562218546cc","description":"<p>In Engine Awesome, <a href=\"https://docs.engineawesome.com/object-types/\">Object Types</a> define the core data structure that can represent any real-world entity within the application. These object types allow users to categorize and organize data in a flexible, customizable way to fit their specific business needs. For example, <strong>Contacts</strong>, <strong>Projects</strong>, <strong>Tasks</strong>, and <strong>Donations</strong> are all object types within the system. Each object type serves as a template that users can customize by adding fields and attributes that are relevant to their workflows. This flexibility ensures that businesses can capture and manage the data they need, tailored specifically to their operations.</p>\n","_postman_id":"87c1990c-a39f-4977-920e-0562218546cc","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Object","item":[{"name":"Object by ID","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"ab86b639-4a07-444f-9782-8396b574190b"}}],"id":"6647f54f-56a9-4238-a8ec-4c46ceb4e7f6","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/{{objectType}}/{{objectId}}","description":"<h3 id=\"get-an-object-by-id\">Get an Object by ID</h3>\n<p>Returns a single object, such as <strong>John Doe</strong> in <strong>Contacts</strong>, with every field you have permission to see.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n<li><code>objectId</code>: the object's <code>_id</code>.</li>\n</ul>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>_embed</code> (optional): include related objects in the response instead of fetching each one separately. Pass relationship field slugs, comma separated, for example <code>company,owner</code>. Use a dotted path to embed the related object's own relationships, such as <code>property.account</code> (up to 3 levels deep), or <code>*</code> for every relationship. Related objects you can't view are left out.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>This is a GET request and does not require a request body.</p>\n<h4 id=\"object-properties\">Object Properties</h4>\n<p>Every object returned by the Object endpoints has the same shape:</p>\n<ul>\n<li><code>_id</code>: the object's ID, a 24-character hex string.</li>\n<li><code>_is_new</code>: <code>true</code> only for an object that has no values yet (every field empty or still at its default). New objects are hidden from lists and don't trigger webhooks.</li>\n<li><code>_label</code>: the object's display label, built from the object type's <code>object_label_fields</code>. Left out when the label would be empty.</li>\n<li>One property per field, keyed by the field slug. Fields you don't have permission to view are left out. A relationship field's value is the related object's <code>_id</code>.</li>\n<li><code>_links.self[0]</code>: the object's API path (<code>href</code>) and <code>targetHints.allow</code>, the methods you are allowed to use on it.</li>\n<li><code>_links.alternate[0]</code> and <code>_links[\"awesome:view\"][0]</code>: when a page is set up to display this object, the object's URL in the app and the ID of that view.</li>\n<li><code>_embedded</code>: only when you pass <code>_embed</code>. Holds the related objects, keyed by relationship field slug.</li>\n<li><code>_deleted_at</code>, <code>_created_at</code>, <code>_created_by</code>: only on objects in the trash.</li>\n</ul>\n<p>Objects do not include an updated timestamp.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to view this object.</li>\n<li><code>404</code>: the object type or object doesn't exist on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","objects","{{objectType}}","{{objectId}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"disabled":true,"description":{"content":"<p>Optional. Relationship field slugs to include under _embedded, comma separated. Use dots to go deeper (up to 3 levels), or * for every relationship.</p>\n","type":"text/plain"},"key":"_embed","value":"company"}],"variable":[]}},"response":[{"id":"e19debf6-57de-45f6-8c2d-e5e73c5aa53b","name":"Object by ID","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:09:39 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=16.95704460144, database;desc=\"Database\";dur=33.77, app;desc=\"App\";dur=55, total;desc=\"Total\";dur=72.088956832886,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"_id\": \"67a279056c513a164e0ca94e\",\n    \"_is_new\": false,\n    \"_label\": \"Steve Bruner\",\n    \"first_name\": \"Steve\",\n    \"last_name\": \"Bruner\",\n    \"followup_date\": \"2025-05-17T20:40:21.000000Z\",\n    \"followup_note\": \"Check in and followup\",\n    \"mobile_phone\": null,\n    \"office_phone\": \"+1 (718) 569-7188\",\n    \"email\": \"sbruner@engineawesome.com\",\n    \"company\": \"67a279056c513a164e0ca947\",\n    \"notes\": null,\n    \"type\": \"partner\",\n    \"status\": \"New\",\n    \"acquired\": \"Other\",\n    \"date_created\": \"2024-12-09T18:49:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ],\n        \"alternate\": [\n            {\n                \"href\": \"https://dundermifflin.engineawesome.app/edit/object/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e\",\n                \"type\": \"text/html\"\n            }\n        ],\n        \"awesome:view\": [\n            {\n                \"href\": \"/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n                \"id\": \"a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\"\n            }\n        ]\n    }\n}"}],"_postman_id":"6647f54f-56a9-4238-a8ec-4c46ceb4e7f6"},{"name":"Object: search by field","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"6a48fee6-ee7a-4798-9085-eba9294729d4"}}],"id":"e1d510c2-57b8-4add-924b-aea886e6fa0c","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/{{objectType}}?{{field_slug}}={{field_value}}","description":"<h3 id=\"list-and-search-objects\">List and Search Objects</h3>\n<p>Returns a page of objects of one object type. With no query parameters it lists every object, newest first. Add query parameters to filter, search, sort and page through them.</p>\n<h4 id=\"filtering-by-field\">Filtering by Field</h4>\n<p>Pass any field marked <a href=\"https://docs.engineawesome.com/object-types/field-settings/is-searchable/\">\"Is Searchable\"</a> as a query parameter, using its slug: <code>?email=john@example.com</code>. Several field filters are combined with AND. <strong>GET Searchable Fields for Object Type</strong> lists the fields you can use.</p>\n<p><strong>IMPORTANT: a field that is not \"Is Searchable\", or a slug that doesn't exist, is ignored. If that is your only filter, the response contains every object.</strong></p>\n<p>How the value matches depends on the field type:</p>\n<ul>\n<li><strong>Text</strong> (including email, phone and similar): contains, case-insensitive. <code>?email=@acme.com</code> matches every address at that domain.</li>\n<li><strong>Date</strong> (text fields with the date semantic type): <code>?followup_date=2025-05-17</code> matches that day. For a range, use <code>?followup_date[after]=2025-05-01&amp;followup_date[before]=2025-05-31</code>.</li>\n<li><strong>Single choice / multiple choice</strong>: exact match. Pass several values with <code>?status[]=New&amp;status[]=Followup</code> to match any of them.</li>\n<li><strong>Number and money</strong>: exact match. Add <code>+</code> for \"at least\" or <code>-</code> for \"at most\": <code>?amount=100+</code>. Remember to URL-encode <code>+</code> as <code>%2B</code>.</li>\n<li><strong>Yes/no</strong>: <code>true</code> or <code>false</code>.</li>\n<li><strong>Relationship</strong>: the related object's <code>_id</code>.</li>\n<li><strong>User</strong>: a user ID, <code>$$me</code> for yourself, or <code>$$unset</code> for no user.</li>\n<li><strong>Auto-generated number</strong>: exact match.</li>\n</ul>\n<h4 id=\"other-query-parameters\">Other Query Parameters</h4>\n<ul>\n<li><code>_search</code>: free-text search on the fields that make up the object's label (the object type's <code>object_label_fields</code>). Matches if any of them contains the text.</li>\n<li><code>page</code>: page number, starting at 1.</li>\n<li><code>per_page</code>: objects per page. Default 10.</li>\n<li><code>order_by</code>: a field slug to sort by. By default objects are sorted by the object type's \"created\" date field if it has one, otherwise by when they were created.</li>\n<li><code>order</code>: <code>asc</code> or <code>desc</code>. Default <code>desc</code>.</li>\n<li><code>_created_at[after]</code>, <code>_created_at[before]</code>: only objects created in this range. Any date format PHP understands, for example <code>2025-01-31</code> or <code>2025-01-31T12:00:00Z</code>.</li>\n<li><code>_updated_at[after]</code>, <code>_updated_at[before]</code>: only objects last updated in this range. Objects don't return an updated timestamp, but you can filter by it.</li>\n<li><code>_created_by[]</code>: only objects created by this user ID. Repeat it for several users.</li>\n<li><code>status=trash</code>: list deleted objects instead. Requires permission to delete objects. Sorted by deletion time, and supports <code>_deleted_at[after]</code> and <code>_deleted_at[before]</code>.</li>\n<li><code>_embed</code>: include related objects. See <strong>Object by ID</strong>.</li>\n</ul>\n<h4 id=\"grouping-by-a-related-object\">Grouping by a Related Object</h4>\n<p>To list the related objects of several parent objects in one request, pass <code>_group_by</code> with a relationship field slug, and the parent IDs under that slug. For example, every Contact at two Companies:</p>\n<p><code>?_group_by=company&amp;company[]=67a279056c513a164e0ca947&amp;company[]=67a279056c513a164e0ca948</code></p>\n<p>You can pass up to 100 parent IDs. The response is an object keyed by parent ID instead of an array. Each value has <code>items</code> (the objects), <code>total</code> and <code>totalPages</code>, and <code>page</code> and <code>per_page</code> apply to each group separately.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array of objects. Each has the shape described under <strong>Object by ID</strong>.</p>\n<h4 id=\"response-headers\">Response Headers</h4>\n<ul>\n<li><code>X-WP-Total</code>: the total number of matching objects.</li>\n<li><code>X-WP-TotalPages</code>: the number of pages.</li>\n<li><code>Link</code>: <code>rel=\"next\"</code> and <code>rel=\"prev\"</code> URLs, when those pages exist.</li>\n<li><code>Allow</code>: the methods you can use on this object type's collection, such as <code>GET</code> and <code>POST</code>.</li>\n</ul>\n<p>Objects you don't have permission to view are removed after the page is fetched. If permissions hide some objects, a page can contain fewer than <code>per_page</code> objects, and <code>X-WP-Total</code> still counts the hidden ones.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to view objects of this type, or to view the trash.</li>\n<li><code>422</code>: a date or <code>_created_by</code> filter is not valid, or <code>_group_by</code> is not a relationship field.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","objects","{{objectType}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"description":{"content":"<p>Filter by a searchable field. See the description for how each field type matches.</p>\n","type":"text/plain"},"key":"{{field_slug}}","value":"{{field_value}}"},{"disabled":true,"description":{"content":"<p>Free-text search across the fields that make up the object label.</p>\n","type":"text/plain"},"key":"_search","value":"smith"},{"disabled":true,"description":{"content":"<p>Page number, starting at 1.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Objects per page. Default 10.</p>\n","type":"text/plain"},"key":"per_page","value":"10"},{"disabled":true,"description":{"content":"<p>Field slug to sort by. Default: the \"created\" date field, or the creation time.</p>\n","type":"text/plain"},"key":"order_by","value":"{{field_slug}}"},{"disabled":true,"description":{"content":"<p>asc or desc. Default desc.</p>\n","type":"text/plain"},"key":"order","value":"desc"},{"disabled":true,"description":{"content":"<p>Only objects created on or after this date.</p>\n","type":"text/plain"},"key":"_created_at[after]","value":"2025-01-01"},{"disabled":true,"description":{"content":"<p>Only objects created on or before this date.</p>\n","type":"text/plain"},"key":"_created_at[before]","value":"2025-12-31"},{"disabled":true,"description":{"content":"<p>Only objects updated on or after this date.</p>\n","type":"text/plain"},"key":"_updated_at[after]","value":"2025-01-01"},{"disabled":true,"description":{"content":"<p>Only objects updated on or before this date.</p>\n","type":"text/plain"},"key":"_updated_at[before]","value":"2025-12-31"},{"disabled":true,"description":{"content":"<p>Only objects created by this user ID. Repeat for several users.</p>\n","type":"text/plain"},"key":"_created_by[]","value":"2"},{"disabled":true,"description":{"content":"<p>List objects in the trash instead.</p>\n","type":"text/plain"},"key":"status","value":"trash"},{"disabled":true,"description":{"content":"<p>Relationship field slugs to include under _embedded.</p>\n","type":"text/plain"},"key":"_embed","value":"company"}],"variable":[]}},"response":[{"id":"92ff2f88-6d47-4a35-9246-4f4506c8ddbe","name":"Object: search by field","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://dundermifflin.engineawesome.app/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5?last_name=bruner","protocol":"https","host":["dundermifflin","engineawesome","app"],"path":["api","v1","objects","aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5"],"query":[{"key":"last_name","value":"bruner"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Fri, 07 Feb 2025 21:06:52 GMT"},{"key":"x-wp-total","value":"1"},{"key":"x-wp-totalpages","value":"1"},{"key":"allow","value":"GET"},{"key":"allow","value":"POST"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=19.538164138794, database;desc=\"Database\";dur=62.48, app;desc=\"App\";dur=84, total;desc=\"Total\";dur=104.32314872742,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"67a279056c513a164e0ca94e\",\n        \"_is_new\": false,\n        \"_label\": \"Steve Bruner\",\n        \"first_name\": \"Steve\",\n        \"last_name\": \"Bruner\",\n        \"followup_date\": \"2025-05-17T20:40:21.000000Z\",\n        \"followup_note\": \"Check in and followup\",\n        \"mobile_phone\": null,\n        \"office_phone\": \"+1 (718) 569-7188\",\n        \"email\": \"sbruner@engineawesome.com\",\n        \"company\": \"67a279056c513a164e0ca947\",\n        \"notes\": null,\n        \"type\": \"Partner\",\n        \"status\": \"New\",\n        \"acquired\": \"Other\",\n        \"date_created\": \"2024-12-09T18:49:00.000000Z\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ],\n            \"alternate\": [\n                {\n                    \"href\": \"https://dundermifflin.engineawesome.app/edit/object/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e\",\n                    \"type\": \"text/html\"\n                }\n            ],\n            \"awesome:view\": [\n                {\n                    \"href\": \"/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n                    \"id\": \"a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\"\n                }\n            ]\n        }\n    }\n]"}],"_postman_id":"e1d510c2-57b8-4add-924b-aea886e6fa0c"},{"name":"Add Object","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"27ed0f8a-4560-4d11-8789-ee9c484f839c"}}],"id":"9a9a6f44-b8e4-4354-92bc-d3c3c5bdea27","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"{{field_slug_to_PUT}}\": \"{{value_to_PUT}}\",\n    \"{{another_field_slug_to_PUT}}\": \"{{another_value_to_PUT}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/{{objectType}}","description":"<h3 id=\"add-an-object\">Add an Object</h3>\n<p>Creates an object of the given object type. Send a JSON object of field values, keyed by field slug.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"first_name\": \"John\",\n  \"last_name\": \"James\",\n  \"email\": \"john@james.com\",\n  \"company\": \"67a279056c513a164e0ca947\"\n}\n</code></pre>\n<ul>\n<li>Keys are field slugs. <strong>GET Searchable Fields for Object Type</strong> lists them.</li>\n<li>A relationship field takes the related object's <code>_id</code>.</li>\n<li>Keys that don't match a field are ignored, without an error.</li>\n<li>Values for read-only fields (fields that are always locked) are ignored.</li>\n<li>Each value is validated by its field type. Invalid values return <code>422</code>.</li>\n</ul>\n<h4 id=\"required-fields-and-default-values\">Required Fields and Default Values</h4>\n<ul>\n<li>Any field you leave out or send empty is set to its default value, if it has one. A value you send is kept, even for fields that have a default.</li>\n<li>Required fields must have a value, either from your request or from a default. Otherwise you get a <code>422</code>.</li>\n<li>The exception: if every field ends up empty or at its default, the object is saved as a <strong>new, empty object</strong> with <code>_is_new: true</code>, and required fields are not checked. This is what the app does when you click \"Add\", before anything is typed in. New objects don't appear in object lists and don't trigger <code>object.created</code> webhooks until they get a real value.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>201 Created</code></li>\n<li>Body: the new object, with the shape described under <strong>Object by ID</strong>.</li>\n</ul>\n<p>Creating an object triggers your <code>object.created</code> webhooks.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to create objects of this type, or your team has reached its plan's object limit.</li>\n<li><code>404</code>: the object type doesn't exist on this team.</li>\n<li><code>422</code>: a value is not valid, or a required field has no value. The body has a <code>message</code> and an <code>errors</code> object keyed by field slug:</li>\n</ul>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"message\": \"The Email field is required.\",\n  \"errors\": {\n    \"email\": [\"The Email field is required.\"]\n  }\n}\n</code></pre>\n","urlObject":{"protocol":"https","path":["api","v1","objects","{{objectType}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"223e8144-1fe0-424f-aa05-1e5c22af5b72","name":"Add Object","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"first_name\": \"John\",\n    \"last_name\": \"James\",\n    \"followup_date\": \"2025-05-17T20:40:21.000000Z\",\n    \"followup_note\": \"Check in and followup\",\n    \"email\": \"john@james.com\",\n    \"company\": \"67a279056c513a164e0ca947\",\n    \"type\": \"partner\",\n    \"status\": \"New\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Thu, 20 Feb 2025 12:59:30 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"595"},{"key":"vary","value":"Origin"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=23.237943649292, database;desc=\"Database\";dur=260.09, app;desc=\"App\";dur=294, total;desc=\"Total\";dur=318.07589530945,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"_id\": \"67b72732e42ec5269c0bb1b2\",\n    \"_is_new\": false,\n    \"_label\": \"John James\",\n    \"first_name\": \"John\",\n    \"last_name\": \"James\",\n    \"followup_date\": \"2025-05-17T20:40:21.000000Z\",\n    \"followup_note\": \"Check in and followup\",\n    \"mobile_phone\": null,\n    \"office_phone\": null,\n    \"email\": \"john@james.com\",\n    \"company\": \"67a279056c513a164e0ca947\",\n    \"notes\": null,\n    \"type\": \"partner\",\n    \"status\": \"New\",\n    \"acquired\": null,\n    \"date_created\": \"2025-02-20T12:59:30.303000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67b72732e42ec5269c0bb1b2\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ],\n        \"alternate\": [\n            {\n                \"href\": \"https://dundermifflin.engineawesome.app/edit/object/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67b72732e42ec5269c0bb1b2\",\n                \"type\": \"text/html\"\n            }\n        ],\n        \"awesome:view\": [\n            {\n                \"href\": \"/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n                \"id\": \"a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\"\n            }\n        ]\n    }\n}"}],"_postman_id":"9a9a6f44-b8e4-4354-92bc-d3c3c5bdea27"},{"name":"Update Object","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"743d6758-ff7e-407b-b949-21f158e86d5a"}}],"id":"83ea8532-a984-4efd-8b9e-2a3fc4e5143a","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"{{field_slug_to_PUT}}\": \"{{value_to_PUT}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/{{objectType}}/{{objectId}}","description":"<h3 id=\"update-an-object\">Update an Object</h3>\n<p>Updates an existing object. Send only the fields you want to change, keyed by field slug. Fields you leave out keep their current values.</p>\n<p>For example, to change a contact from a lead to a partner:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"partner\"\n}\n</code></pre>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n<li><code>objectId</code>: the object's <code>_id</code>.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The same rules as <strong>Add Object</strong>:</p>\n<ul>\n<li>Keys that don't match a field, and values for read-only fields, are ignored without an error.</li>\n<li>Each value is validated by its field type.</li>\n</ul>\n<p>Additionally:</p>\n<ul>\n<li><strong>Locked fields:</strong> a field can be locked based on other fields' values, for example once a status is \"Closed\". Changing a locked field returns <code>422</code> with \"The … field cannot be edited.\" Sending a locked field's current value is allowed.</li>\n<li><strong>Required fields</strong> are checked on the whole object after your changes, so clearing a required field returns <code>422</code>. If a required field is empty and has a default value, the default is filled in.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the updated object, with the shape described under <strong>Object by ID</strong>.</li>\n</ul>\n<p>Updating an object triggers your <code>object.updated</code> webhooks, with the changed fields in <code>data.changes</code>. If the object was still a new, empty object (<code>_is_new: true</code>), the first update that gives it a value triggers <code>object.created</code> instead.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to update this object.</li>\n<li><code>404</code>: the object type or object doesn't exist on this team.</li>\n<li><code>422</code>: a value is not valid, a locked field was changed, or a required field has no value. Same format as <strong>Add Object</strong>.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","objects","{{objectType}}","{{objectId}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"85238fb2-81f2-40e6-8027-4d01227f3d89","name":"Update Object","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"type\":\"partner\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Fri, 07 Feb 2025 21:32:46 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"598"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=16.779184341431, database;desc=\"Database\";dur=60.99, app;desc=\"App\";dur=85, total;desc=\"Total\";dur=102.56814956665,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"_id\": \"67a279056c513a164e0ca94e\",\n    \"_is_new\": false,\n    \"_label\": \"Steve Bruner\",\n    \"first_name\": \"Steve\",\n    \"last_name\": \"Bruner\",\n    \"followup_date\": \"2025-05-17T20:40:21.000000Z\",\n    \"followup_note\": \"Check in and followup\",\n    \"mobile_phone\": null,\n    \"office_phone\": \"+1 (718) 569-7188\",\n    \"email\": \"sbruner@engineawesome.com\",\n    \"company\": \"67a279056c513a164e0ca947\",\n    \"notes\": null,\n    \"type\": \"partner\",\n    \"status\": \"New\",\n    \"acquired\": \"Other\",\n    \"date_created\": \"2024-12-09T18:49:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ],\n        \"alternate\": [\n            {\n                \"href\": \"https://dundermifflin.engineawesome.app/edit/object/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e\",\n                \"type\": \"text/html\"\n            }\n        ],\n        \"awesome:view\": [\n            {\n                \"href\": \"/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n                \"id\": \"a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\"\n            }\n        ]\n    }\n}"}],"_postman_id":"83ea8532-a984-4efd-8b9e-2a3fc4e5143a"},{"name":"Delete Object","id":"966f5488-bd4f-4d43-8c75-9885955caf4f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/{{objectType}}/{{objectId}}","description":"<h3 id=\"delete-an-object\">Delete an Object</h3>\n<p>Moves an object to the trash. It disappears from object lists and can't be fetched by ID, but you can list it with <code>status=trash</code> and bring it back with <strong>Restore Objects</strong>. To delete it for good, use <strong>Permanently Delete Objects</strong>.</p>\n<p>You need permission to delete objects.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n<li><code>objectId</code>: the object's <code>_id</code>.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<p>Deleting an object triggers your <code>object.deleted</code> webhooks. Their payload has <code>data.object</code> (the deleted object), <code>data.objectId</code> and <code>data.objectType</code>.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to delete this object.</li>\n<li><code>404</code>: the object type or object doesn't exist on this team, or the object is already in the trash.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","objects","{{objectType}}","{{objectId}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"25f3dbf6-599d-4038-9700-a8b3d778065c","name":"Delete Object","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"966f5488-bd4f-4d43-8c75-9885955caf4f"},{"name":"Restore Objects","id":"d379453a-f4d1-4746-a887-f299a9ccb0b0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"{{objectId}}\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/{{objectType}}/restore","description":"<h3 id=\"restore-objects\">Restore Objects</h3>\n<p>Takes one or more objects of an object type out of the trash.</p>\n<p>You need permission to delete objects.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>ids</code> (required): an array of object <code>_id</code>s, at least one.</li>\n</ul>\n<p>IDs that aren't in this object type's trash are skipped without an error.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: an array of the restored objects, with the shape described under <strong>Object by ID</strong>.</li>\n</ul>\n<p>Restoring saves each object again, so it triggers your <code>object.updated</code> webhooks.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to restore one of the objects. Nothing is restored.</li>\n<li><code>422</code>: <code>ids</code> is missing, empty or not an array.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","objects","{{objectType}}","restore"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"e38fe884-1814-4b6c-9eaf-a683c6c43b4b","name":"Restore Objects","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"67a279056c513a164e0ca94e\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/restore"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_id\": \"67a279056c513a164e0ca94e\",\n        \"_is_new\": false,\n        \"_label\": \"Steve Bruner\",\n        \"first_name\": \"Steve\",\n        \"last_name\": \"Bruner\",\n        \"followup_date\": \"2025-05-17T20:40:21.000000Z\",\n        \"followup_note\": \"Check in and followup\",\n        \"mobile_phone\": null,\n        \"office_phone\": \"+1 (718) 569-7188\",\n        \"email\": \"sbruner@engineawesome.com\",\n        \"company\": \"67a279056c513a164e0ca947\",\n        \"notes\": null,\n        \"type\": \"partner\",\n        \"status\": \"New\",\n        \"acquired\": \"Other\",\n        \"date_created\": \"2024-12-09T18:49:00.000000Z\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ],\n            \"alternate\": [\n                {\n                    \"href\": \"https://dundermifflin.engineawesome.app/edit/object/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/67a279056c513a164e0ca94e\",\n                    \"type\": \"text/html\"\n                }\n            ],\n            \"awesome:view\": [\n                {\n                    \"href\": \"/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n                    \"id\": \"a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\"\n                }\n            ]\n        }\n    }\n]"}],"_postman_id":"d379453a-f4d1-4746-a887-f299a9ccb0b0"},{"name":"Permanently Delete Objects","id":"93776662-509e-4658-a6b0-0c18b7371fbc","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"{{objectId}}\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/{{objectType}}/force-delete","description":"<h3 id=\"permanently-delete-objects\">Permanently Delete Objects</h3>\n<p>Permanently deletes one or more objects that are already in the trash. <strong>This can't be undone.</strong></p>\n<p>You need permission to permanently delete objects. Being allowed to delete objects is not enough.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>objectType</code>: the object type's UUID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>ids</code> (required): an array of object <code>_id</code>s, at least one.</li>\n</ul>\n<p>Only objects in the trash can be permanently deleted. Delete an object with <strong>Delete Object</strong> first. IDs that aren't in this object type's trash are skipped without an error.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to permanently delete one of the objects. Nothing is deleted.</li>\n<li><code>422</code>: <code>ids</code> is missing, empty or not an array.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","objects","{{objectType}}","force-delete"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"094d734c-a587-4423-8e5d-5d5cb63fcb3d","name":"Permanently Delete Objects","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"67a279056c513a164e0ca94e\"\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/objects/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/force-delete"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"93776662-509e-4658-a6b0-0c18b7371fbc"}],"id":"e3ce8c6d-ab12-4aee-8a9c-e9cc49b5bd2b","description":"<p>In Engine Awesome, an <strong>Object</strong> is a specific record within an Object Type. For example, if you have an Object Type called <strong>Contacts</strong>, an Object might represent a specific person or entity, such as <strong>John Doe</strong>. Each Object holds data related to that specific instance, using the fields and attributes defined by its associated Object Type. Objects are the actual records you interact with when performing CRUD (Create, Read, Update, Delete) operations through the API.</p>\n","_postman_id":"e3ce8c6d-ab12-4aee-8a9c-e9cc49b5bd2b","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Reports","item":[{"name":"Stat","id":"66d97956-5e2e-47f7-9159-1ea743a8b8d7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/object-reports/{{objectType}}/stat?_operator=sum&_field={{field_slug}}","description":"<h3 id=\"get-a-stat\">Get a Stat</h3>\n<p>Calculates a single number over the objects of an object type: how many there are, or the sum, average, minimum or maximum of a field.</p>\n<p>You need permission to view objects of this type.</p>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>_operator</code> (required): <code>count</code>, <code>sum</code>, <code>avg</code>, <code>min</code> or <code>max</code>.</li>\n<li><code>_field</code>: the slug of the field to calculate, usually a number or money field. Required for every operator except <code>count</code>.</li>\n</ul>\n<h4 id=\"filtering\">Filtering</h4>\n<p>Both report endpoints accept the same field filters and <code>_search</code> as <strong>List and Search Objects</strong>, so a report covers exactly the objects that list would return. New, empty objects and objects in the trash are never counted. The <code>_created_at</code>, <code>_updated_at</code>, <code>_created_by</code> and <code>status</code> parameters are not supported here.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"value\": \"12500.00\",\n  \"formatted\": \"$12,500.00\"\n}\n</code></pre>\n<ul>\n<li><code>value</code>: the result, as a string. Money fields are in the currency's main unit (dollars, not cents).</li>\n<li><code>formatted</code>: the result formatted the way the field displays it. Not included for <code>count</code>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to view objects of this type.</li>\n<li><code>422</code>: <code>_operator</code> is missing or invalid, or <code>_field</code> is missing or isn't a field on the object type.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","object-reports","{{objectType}}","stat"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"description":{"content":"<p>count, sum, avg, min or max.</p>\n","type":"text/plain"},"key":"_operator","value":"sum"},{"description":{"content":"<p>The number or money field to calculate. Not needed for count.</p>\n","type":"text/plain"},"key":"_field","value":"{{field_slug}}"},{"disabled":true,"description":{"content":"<p>Optional field filter, as in List and Search Objects.</p>\n","type":"text/plain"},"key":"{{field_slug}}","value":"{{field_value}}"},{"disabled":true,"description":{"content":"<p>Optional free-text search, as in List and Search Objects.</p>\n","type":"text/plain"},"key":"_search","value":"smith"}],"variable":[]}},"response":[{"id":"0ea8ae45-647e-44c2-bbe5-4e7a0babaa9f","name":"Stat","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://dundermifflin.engineawesome.app/api/v1/object-reports/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/stat?_operator=count&status=New","protocol":"https","host":["dundermifflin","engineawesome","app"],"path":["api","v1","object-reports","aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5","stat"],"query":[{"key":"_operator","value":"count"},{"key":"status","value":"New"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"value\": \"42\"\n}"}],"_postman_id":"66d97956-5e2e-47f7-9159-1ea743a8b8d7"},{"name":"Chart","id":"b621b223-bc28-466b-8a96-03c7619caf2c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/object-reports/{{objectType}}/chart?[after]=2025-01-01&[before]=2025-12-31","description":"<h3 id=\"get-chart-data\">Get Chart Data</h3>\n<p>Counts objects per hour, day or month over a date range, and can total number or money fields for each period too. This is the data behind the dashboard's chart block.</p>\n<p>You need permission to view objects of this type.</p>\n<h4 id=\"date-range\">Date Range</h4>\n<p>Pass a range on one of the object type's searchable date fields, as you would to filter objects:</p>\n<p><code>?close_date[after]=2025-01-01&amp;close_date[before]=2025-12-31</code></p>\n<p>Objects are grouped by that field. Without a range, objects are grouped by the object type's \"created\" date field (or by when they were created) and the range is the current month.</p>\n<p>The size of each period depends on the range:</p>\n<ul>\n<li>1 day or less: hourly.</li>\n<li>Less than 31 days: daily.</li>\n<li>31 days or more: monthly.</li>\n</ul>\n<h4 id=\"series\">Series</h4>\n<p>Add <code>_series[0][sum]=&lt;field slug&gt;</code> to also total that field for each period. Use <code>_series[1][sum]</code>, <code>_series[2][sum]</code> and so on for more fields.</p>\n<h4 id=\"filtering\">Filtering</h4>\n<p>Both report endpoints accept the same field filters and <code>_search</code> as <strong>List and Search Objects</strong>, so a report covers exactly the objects that list would return. New, empty objects and objects in the trash are never counted. The <code>_created_at</code>, <code>_updated_at</code>, <code>_created_by</code> and <code>status</code> parameters are not supported here.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array with one entry for every period in the range, including periods with no objects:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"_date\": \"2025-01-01T00:00:00+00:00\",\n    \"_human\": \"Jan '25\",\n    \"_count\": 14,\n    \"amount\": { \"value\": \"8200.00\", \"formatted\": \"$8,200.00\" }\n  }\n]\n</code></pre>\n<ul>\n<li><code>_date</code>: the start of the period (ISO 8601).</li>\n<li><code>_human</code>: a short label for the period, for example <code>3 pm</code>, <code>Jan 5</code> or <code>Jan '25</code>.</li>\n<li><code>_count</code>: the number of objects in the period.</li>\n<li>One property per series field, keyed by its slug, with the period's <code>value</code> and <code>formatted</code> total.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to view objects of this type.</li>\n<li><code>422</code>: a <code>_series</code> entry has no <code>sum</code>, or <code>sum</code> isn't a field on the object type.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","object-reports","{{objectType}}","chart"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"description":{"content":"<p>Start of the date range, on a searchable date field.</p>\n","type":"text/plain"},"key":"[after]","value":"2025-01-01"},{"description":{"content":"<p>End of the date range.</p>\n","type":"text/plain"},"key":"[before]","value":"2025-12-31"},{"disabled":true,"description":{"content":"<p>Optional. Also total this field per period. Add _series[1][sum] and so on for more.</p>\n","type":"text/plain"},"key":"_series[0][sum]","value":"{{field_slug}}"},{"disabled":true,"description":{"content":"<p>Optional free-text search, as in List and Search Objects.</p>\n","type":"text/plain"},"key":"_search","value":"smith"}],"variable":[]}},"response":[{"id":"684c5c9a-5790-4c73-b2df-ddc0482a10f5","name":"Chart","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://dundermifflin.engineawesome.app/api/v1/object-reports/aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5/chart?date_created[after]=2025-01-01&date_created[before]=2025-01-07","protocol":"https","host":["dundermifflin","engineawesome","app"],"path":["api","v1","object-reports","aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5","chart"],"query":[{"key":"date_created[after]","value":"2025-01-01"},{"key":"date_created[before]","value":"2025-01-07"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"_date\": \"2025-01-01T00:00:00+00:00\",\n        \"_human\": \"Jan 1\",\n        \"_count\": 3\n    },\n    {\n        \"_date\": \"2025-01-02T00:00:00+00:00\",\n        \"_human\": \"Jan 2\",\n        \"_count\": 5\n    },\n    {\n        \"_date\": \"2025-01-03T00:00:00+00:00\",\n        \"_human\": \"Jan 3\",\n        \"_count\": 0\n    },\n    {\n        \"_date\": \"2025-01-04T00:00:00+00:00\",\n        \"_human\": \"Jan 4\",\n        \"_count\": 2\n    },\n    {\n        \"_date\": \"2025-01-05T00:00:00+00:00\",\n        \"_human\": \"Jan 5\",\n        \"_count\": 7\n    },\n    {\n        \"_date\": \"2025-01-06T00:00:00+00:00\",\n        \"_human\": \"Jan 6\",\n        \"_count\": 4\n    },\n    {\n        \"_date\": \"2025-01-07T00:00:00+00:00\",\n        \"_human\": \"Jan 7\",\n        \"_count\": 1\n    }\n]"}],"_postman_id":"b621b223-bc28-466b-8a96-03c7619caf2c"}],"id":"d8832376-36d6-4eed-8ab3-b5f202225710","description":"<p>Calculate totals and time series over an object type's objects, as the dashboard's stat and chart blocks do.</p>\n","_postman_id":"d8832376-36d6-4eed-8ab3-b5f202225710","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Views","item":[{"name":"List Views","id":"421f4a79-5665-49a7-9686-130d645047e9","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/views","description":"<h3 id=\"list-views\">List Views</h3>\n<p>Returns your team's views that you are allowed to see, oldest first. Views for deleted object types are left out.</p>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>object_type</code> (optional): only views for this object type ID.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array of views. Each has:</p>\n<ul>\n<li><code>id</code>: the view's UUID.</li>\n<li><code>type</code>: <code>item</code> (the layout for a single object), <code>collection</code> (the layout for a list of objects), <code>freeform</code> (a page not tied to one object, such as a dashboard) or <code>modal</code>.</li>\n<li><code>name</code>: the view's name.</li>\n<li><code>slug</code>: its URL slug, or <code>null</code>.</li>\n<li><code>content</code>: the view's block markup, for example <code>&lt;!-- wp:awesome/text {\"content\":\"Hello\"} /--&gt;</code>.</li>\n<li><code>parsedBlocks</code>: the same blocks as a tree of <code>{name, attributes, innerBlocks}</code> objects. <strong>The app renders from <code>parsedBlocks</code>, not <code>content</code>.</strong></li>\n<li><code>object_type</code>: the object type it displays, or <code>null</code> for freeform views.</li>\n<li><code>parent</code>: the ID of the view it is nested in, or <code>null</code>.</li>\n<li><code>visibility</code>: for item layouts, which objects the layout is used for. <code>visibility.isDefault</code> (default <code>true</code>) marks the fallback layout, and <code>visibility.fields</code> holds field conditions.</li>\n<li><code>query</code>: for collection views, the saved filters and sorting, or <code>null</code>.</li>\n<li><code>files</code>: images and files the view uses, each <code>{raw, rendered}</code>. <code>rendered</code> is a signed URL valid for 7 days.</li>\n<li><code>created_at</code>, <code>updated_at</code>: ISO 8601 timestamps.</li>\n<li><code>_links.self[0]</code>: the view's API path and the methods you can use on it.</li>\n</ul>\n<h4 id=\"response-headers\">Response Headers</h4>\n<ul>\n<li><code>Allow</code>: includes <code>POST</code> when you are allowed to create views.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","views"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"disabled":true,"description":{"content":"<p>Only views for this object type.</p>\n","type":"text/plain"},"key":"object_type","value":"{{objectType}}"}],"variable":[]}},"response":[{"id":"279c88a9-9c63-4d36-840e-047ce76faa5e","name":"List Views","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://dundermifflin.engineawesome.app/api/v1/views","protocol":"https","host":["dundermifflin","engineawesome","app"],"path":["api","v1","views"],"query":[{"key":"object_type","value":"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5","description":"Only views for this object type.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n        \"type\": \"item\",\n        \"name\": \"Contact\",\n        \"slug\": null,\n        \"content\": \"<!-- wp:awesome/text {\\\"content\\\":\\\"Contact details\\\"} /-->\",\n        \"parsedBlocks\": [\n            {\n                \"name\": \"awesome/text\",\n                \"attributes\": {\n                    \"content\": \"Contact details\",\n                    \"visibility\": {\n                        \"fields\": []\n                    }\n                },\n                \"innerBlocks\": []\n            }\n        ],\n        \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n        \"parent\": null,\n        \"visibility\": {\n            \"isDefault\": true,\n            \"fields\": []\n        },\n        \"query\": null,\n        \"files\": [],\n        \"created_at\": \"2023-04-02T00:16:18.000000Z\",\n        \"updated_at\": \"2025-01-25T19:20:32.000000Z\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ]\n        }\n    },\n    {\n        \"id\": \"5e2d9a1b-3c4f-4a6e-8b7d-0f1e2d3c4b5a\",\n        \"type\": \"collection\",\n        \"name\": \"Contacts\",\n        \"slug\": null,\n        \"content\": \"\",\n        \"parsedBlocks\": [],\n        \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n        \"parent\": null,\n        \"visibility\": null,\n        \"query\": {\n            \"order_by\": \"date_created\",\n            \"order\": \"desc\"\n        },\n        \"files\": [],\n        \"created_at\": \"2023-04-02T00:16:18.000000Z\",\n        \"updated_at\": \"2025-01-25T19:20:32.000000Z\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/views/5e2d9a1b-3c4f-4a6e-8b7d-0f1e2d3c4b5a\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ]\n        }\n    }\n]"}],"_postman_id":"421f4a79-5665-49a7-9686-130d645047e9"},{"name":"Get View","id":"748c0d06-2258-4920-af02-ee1d37d3ec0e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/views/","description":"<h3 id=\"get-a-view\">Get a View</h3>\n<p>Returns one view by ID. An object's <code>_links[\"awesome:view\"]</code> gives the ID of the view used to display it.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>viewId</code>: the view's UUID.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>id</code>: the view's UUID.</li>\n<li><code>type</code>: <code>item</code> (the layout for a single object), <code>collection</code> (the layout for a list of objects), <code>freeform</code> (a page not tied to one object, such as a dashboard) or <code>modal</code>.</li>\n<li><code>name</code>: the view's name.</li>\n<li><code>slug</code>: its URL slug, or <code>null</code>.</li>\n<li><code>content</code>: the view's block markup, for example <code>&lt;!-- wp:awesome/text {\"content\":\"Hello\"} /--&gt;</code>.</li>\n<li><code>parsedBlocks</code>: the same blocks as a tree of <code>{name, attributes, innerBlocks}</code> objects. <strong>The app renders from <code>parsedBlocks</code>, not <code>content</code>.</strong></li>\n<li><code>object_type</code>: the object type it displays, or <code>null</code> for freeform views.</li>\n<li><code>parent</code>: the ID of the view it is nested in, or <code>null</code>.</li>\n<li><code>visibility</code>: for item layouts, which objects the layout is used for. <code>visibility.isDefault</code> (default <code>true</code>) marks the fallback layout, and <code>visibility.fields</code> holds field conditions.</li>\n<li><code>query</code>: for collection views, the saved filters and sorting, or <code>null</code>.</li>\n<li><code>files</code>: images and files the view uses, each <code>{raw, rendered}</code>. <code>rendered</code> is a signed URL valid for 7 days.</li>\n<li><code>created_at</code>, <code>updated_at</code>: ISO 8601 timestamps.</li>\n<li><code>_links.self[0]</code>: the view's API path and the methods you can use on it.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to see this view.</li>\n<li><code>404</code>: no view with that ID exists on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","views",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"d3f6de23-7360-44c5-9a50-e68e501d5fdc","name":"Get View","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n    \"type\": \"item\",\n    \"name\": \"Contact\",\n    \"slug\": null,\n    \"content\": \"<!-- wp:awesome/text {\\\"content\\\":\\\"Contact details\\\"} /-->\",\n    \"parsedBlocks\": [\n        {\n            \"name\": \"awesome/text\",\n            \"attributes\": {\n                \"content\": \"Contact details\",\n                \"visibility\": {\n                    \"fields\": []\n                }\n            },\n            \"innerBlocks\": []\n        }\n    ],\n    \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"parent\": null,\n    \"visibility\": {\n        \"isDefault\": true,\n        \"fields\": []\n    },\n    \"query\": null,\n    \"files\": [],\n    \"created_at\": \"2023-04-02T00:16:18.000000Z\",\n    \"updated_at\": \"2025-01-25T19:20:32.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"748c0d06-2258-4920-af02-ee1d37d3ec0e"},{"name":"Create View","id":"3d9c39a0-5ad9-40d5-a05c-b4f58d09dec7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"type\": \"freeform\",\n  \"name\": \"Welcome\",\n  \"content\": \"<!-- wp:awesome/text {\\\"content\\\":\\\"Hello\\\"} /-->\",\n  \"parsedBlocks\": [\n    {\n      \"name\": \"awesome/text\",\n      \"attributes\": { \"content\": \"Hello\" },\n      \"innerBlocks\": []\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/views","description":"<h3 id=\"create-a-view\">Create a View</h3>\n<p>Creates a view. Administrators and Owners can create views.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"type\": \"freeform\",\n  \"name\": \"Welcome\",\n  \"content\": \"&lt;!-- wp:awesome/text {\\\"content\\\":\\\"Hello\\\"} /--&gt;\",\n  \"parsedBlocks\": [\n    { \"name\": \"awesome/text\", \"attributes\": { \"content\": \"Hello\" }, \"innerBlocks\": [] }\n  ]\n}\n</code></pre>\n<ul>\n<li><code>type</code>: <code>item</code>, <code>collection</code>, <code>freeform</code> or <code>modal</code>.</li>\n<li><code>name</code>, <code>slug</code> (optional): <code>slug</code> must be unique.</li>\n<li><code>content</code> and <code>parsedBlocks</code>: send <strong>both</strong>. They aren't generated from each other, and the app renders from <code>parsedBlocks</code>, so a view sent with only <code>content</code> shows up blank.</li>\n<li><code>object_type</code>: the object type ID, for <code>item</code> and <code>collection</code> views.</li>\n<li><code>parent</code>: the ID of a view to nest this one in.</li>\n<li><code>visibility</code>, <code>query</code>: see <strong>Get View</strong>.</li>\n</ul>\n<p><code>files</code> can't be set when creating a view. Add them with <strong>Update View</strong>.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>201 Created</code></li>\n<li>Body: the new view, as in <strong>Get View</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to create views.</li>\n<li><code>404</code>: <code>object_type</code> or <code>parent</code> doesn't exist on this team.</li>\n<li><code>422</code>: <code>slug</code> is already used.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","views"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"cc3f4f35-b519-4177-84fe-0709d0e1a461","name":"Create View","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"type\": \"freeform\",\n  \"name\": \"Welcome\",\n  \"content\": \"<!-- wp:awesome/text {\\\"content\\\":\\\"Hello\\\"} /-->\",\n  \"parsedBlocks\": [\n    {\n      \"name\": \"awesome/text\",\n      \"attributes\": { \"content\": \"Hello\" },\n      \"innerBlocks\": []\n    }\n  ]\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/views"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"7f3a2b1c-9d8e-4f6a-b5c4-3d2e1f0a9b8c\",\n    \"type\": \"freeform\",\n    \"name\": \"Welcome\",\n    \"slug\": null,\n    \"content\": \"<!-- wp:awesome/text {\\\"content\\\":\\\"Hello\\\"} /-->\",\n    \"parsedBlocks\": [\n        {\n            \"name\": \"awesome/text\",\n            \"attributes\": {\n                \"content\": \"Hello\"\n            },\n            \"innerBlocks\": []\n        }\n    ],\n    \"object_type\": null,\n    \"parent\": null,\n    \"visibility\": null,\n    \"query\": null,\n    \"files\": [],\n    \"created_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"updated_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/views/7f3a2b1c-9d8e-4f6a-b5c4-3d2e1f0a9b8c\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"3d9c39a0-5ad9-40d5-a05c-b4f58d09dec7"},{"name":"Update View","id":"06137866-056d-42cc-8066-bbf5a9f9227a","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Welcome Page\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/views/","description":"<h3 id=\"update-a-view\">Update a View</h3>\n<p>Changes a view. Send only the properties you want to change. Administrators and Owners can update views.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>viewId</code>: the view's UUID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Accepts the same properties as <strong>Create View</strong>, plus <code>files</code>:</p>\n<ul>\n<li>When you change the blocks, send both <code>content</code> and <code>parsedBlocks</code>.</li>\n<li><code>object_type</code>: send <code>null</code> to detach the view from its object type.</li>\n<li><code>files</code>: the images and files the view uses, as <code>[{\"raw\": \"&lt;key&gt;\"}]</code>, where each key comes from a file upload (see <strong>File Upload</strong>). Every image block in the view must have its file listed here, or it won't display.</li>\n</ul>\n<blockquote>\n<p>⚠️ <code>files</code> replaces the whole list, and <strong>files you leave out are permanently deleted from storage</strong>. Always send every file the view still uses. Sending an empty list leaves the files unchanged.</p>\n</blockquote>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the updated view, as in <strong>Get View</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to update views.</li>\n<li><code>404</code>: the view, or the <code>object_type</code>, doesn't exist on this team.</li>\n<li><code>422</code>: <code>slug</code> is already used, or a file key doesn't belong to your team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","views",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"c63d3e1f-d568-48d8-a3ca-09aaaf4833f7","name":"Update View","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Welcome Page\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n    \"type\": \"item\",\n    \"name\": \"Welcome Page\",\n    \"slug\": null,\n    \"content\": \"<!-- wp:awesome/text {\\\"content\\\":\\\"Contact details\\\"} /-->\",\n    \"parsedBlocks\": [\n        {\n            \"name\": \"awesome/text\",\n            \"attributes\": {\n                \"content\": \"Contact details\",\n                \"visibility\": {\n                    \"fields\": []\n                }\n            },\n            \"innerBlocks\": []\n        }\n    ],\n    \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"parent\": null,\n    \"visibility\": {\n        \"isDefault\": true,\n        \"fields\": []\n    },\n    \"query\": null,\n    \"files\": [],\n    \"created_at\": \"2023-04-02T00:16:18.000000Z\",\n    \"updated_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"06137866-056d-42cc-8066-bbf5a9f9227a"},{"name":"Delete View","id":"1d49d22e-8c4e-4e62-b6f9-9c2766c84855","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/views/","description":"<h3 id=\"delete-a-view\">Delete a View</h3>\n<p>Deletes a view. Administrators and Owners can delete views.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>viewId</code>: the view's UUID.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to delete views.</li>\n<li><code>404</code>: no view with that ID exists on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","views",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"605d7a39-0c04-4a13-9dde-585af713fafe","name":"Delete View","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/views/a7ae3ce2-ff07-4b55-8e11-8bc5189c36cc"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"1d49d22e-8c4e-4e62-b6f9-9c2766c84855"}],"id":"9ed7e8cd-b4b8-4c5c-8e88-7079a17fd4e5","description":"<p>Views are your app's pages and layouts: the layout used to show a single object, the list of an object type's objects, and freeform pages such as dashboards. They are built from blocks, the same way you build them in the app's editor.</p>\n<p>Creating and editing views through the API is an advanced task. The easiest way to get the markup right is to build a view in the app and read it with <strong>Get View</strong>.</p>\n","_postman_id":"9ed7e8cd-b4b8-4c5c-8e88-7079a17fd4e5","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Forms","item":[{"name":"List Forms","id":"4906adb7-7efa-42c4-b3b6-65baccb96095","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/forms","description":"<h3 id=\"list-forms\">List Forms</h3>\n<p>Returns your team's forms that you are allowed to see, oldest first. Forms for deleted object types are left out.</p>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>object_type</code> (optional): only forms for this object type ID.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array of forms. Each has:</p>\n<ul>\n<li><code>id</code>: the form's ID.</li>\n<li><code>title</code>: the form's title.</li>\n<li><code>object_type</code>: the object type that submissions create or update.</li>\n<li><code>created_by</code>: the ID of the user who created it.</li>\n<li><code>fields</code>: the form's blocks. Each field block is <code>{\"name\": \"awesome/form-field\", \"attributes\": {\"field\": \"&lt;field slug&gt;\", ...}, \"children\": []}</code>.</li>\n<li><code>content</code>: the form's block markup.</li>\n<li><code>submitted_message</code>: the message shown after someone submits the form.</li>\n<li><code>visibility</code>: <code>public</code> (anyone with the link can submit it) or <code>private</code>.</li>\n<li><code>authorized_domains</code>: if set, the public form only works on websites with these domains (and their subdomains).</li>\n<li><code>submission_behavior</code>: what a submission does. See <strong>Update Form</strong>.</li>\n<li><code>submission_key_field</code>: the field used to find an existing object, for behaviors that update.</li>\n<li><code>public_url</code>: the form's public API URL. See <strong>Get Public Form</strong>.</li>\n<li><code>created_at</code>, <code>updated_at</code>: ISO 8601 timestamps.</li>\n<li><code>_links.self[0]</code>: the form's API path and the methods you can use on it.</li>\n</ul>\n<h4 id=\"response-headers\">Response Headers</h4>\n<ul>\n<li><code>Allow</code>: includes <code>POST</code> when you are allowed to create forms.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","forms"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"disabled":true,"description":{"content":"<p>Only forms for this object type.</p>\n","type":"text/plain"},"key":"object_type","value":"{{objectType}}"}],"variable":[]}},"response":[{"id":"66022d7b-76d5-476f-a2e4-0a5d2593ea3b","name":"List Forms","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://dundermifflin.engineawesome.app/api/v1/forms","protocol":"https","host":["dundermifflin","engineawesome","app"],"path":["api","v1","forms"],"query":[{"key":"object_type","value":"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5","description":"Only forms for this object type.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n        \"title\": \"Contact Us\",\n        \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n        \"created_by\": 2,\n        \"fields\": [\n            {\n                \"name\": \"awesome/form-field\",\n                \"attributes\": {\n                    \"field\": \"first_name\"\n                },\n                \"children\": []\n            },\n            {\n                \"name\": \"awesome/form-field\",\n                \"attributes\": {\n                    \"field\": \"email\"\n                },\n                \"children\": []\n            }\n        ],\n        \"content\": \"\",\n        \"submitted_message\": \"Thanks, we will be in touch.\",\n        \"visibility\": \"public\",\n        \"authorized_domains\": [],\n        \"submission_behavior\": \"create\",\n        \"submission_key_field\": null,\n        \"public_url\": \"https://dundermifflin.engineawesome.app/api/v1/public/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n        \"created_at\": \"2025-02-09T03:30:00.000000Z\",\n        \"updated_at\": \"2025-02-09T03:30:00.000000Z\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"PATCH\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ]\n        }\n    }\n]"}],"_postman_id":"4906adb7-7efa-42c4-b3b6-65baccb96095"},{"name":"Get Form","id":"6a141863-20e4-4c83-ba9c-5e969b5e210d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/forms/","description":"<h3 id=\"get-a-form\">Get a Form</h3>\n<p>Returns one form by ID.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>formId</code>: the form's ID.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>id</code>: the form's ID.</li>\n<li><code>title</code>: the form's title.</li>\n<li><code>object_type</code>: the object type that submissions create or update.</li>\n<li><code>created_by</code>: the ID of the user who created it.</li>\n<li><code>fields</code>: the form's blocks. Each field block is <code>{\"name\": \"awesome/form-field\", \"attributes\": {\"field\": \"&lt;field slug&gt;\", ...}, \"children\": []}</code>.</li>\n<li><code>content</code>: the form's block markup.</li>\n<li><code>submitted_message</code>: the message shown after someone submits the form.</li>\n<li><code>visibility</code>: <code>public</code> (anyone with the link can submit it) or <code>private</code>.</li>\n<li><code>authorized_domains</code>: if set, the public form only works on websites with these domains (and their subdomains).</li>\n<li><code>submission_behavior</code>: what a submission does. See <strong>Update Form</strong>.</li>\n<li><code>submission_key_field</code>: the field used to find an existing object, for behaviors that update.</li>\n<li><code>public_url</code>: the form's public API URL. See <strong>Get Public Form</strong>.</li>\n<li><code>created_at</code>, <code>updated_at</code>: ISO 8601 timestamps.</li>\n<li><code>_links.self[0]</code>: the form's API path and the methods you can use on it.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to read forms.</li>\n<li><code>404</code>: no form with that ID exists on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","forms",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"c0da8da3-c5bb-47f4-adc9-8bf01c5381aa","name":"Get Form","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n    \"title\": \"Contact Us\",\n    \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"created_by\": 2,\n    \"fields\": [\n        {\n            \"name\": \"awesome/form-field\",\n            \"attributes\": {\n                \"field\": \"first_name\"\n            },\n            \"children\": []\n        },\n        {\n            \"name\": \"awesome/form-field\",\n            \"attributes\": {\n                \"field\": \"email\"\n            },\n            \"children\": []\n        }\n    ],\n    \"content\": \"\",\n    \"submitted_message\": \"Thanks, we will be in touch.\",\n    \"visibility\": \"public\",\n    \"authorized_domains\": [],\n    \"submission_behavior\": \"create\",\n    \"submission_key_field\": null,\n    \"public_url\": \"https://dundermifflin.engineawesome.app/api/v1/public/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n    \"created_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"updated_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"PATCH\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"6a141863-20e4-4c83-ba9c-5e969b5e210d"},{"name":"Create Form","id":"b7b51573-4d98-4710-8aad-0dd9c1273ae3","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"title\": \"Contact Us\",\n  \"object_type\": \"{{objectType}}\",\n  \"visibility\": \"public\",\n  \"fields\": [\n    { \"name\": \"awesome/form-field\", \"attributes\": { \"field\": \"first_name\" } },\n    { \"name\": \"awesome/form-field\", \"attributes\": { \"field\": \"email\" } }\n  ],\n  \"submitted_message\": \"Thanks, we will be in touch.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/forms","description":"<h3 id=\"create-a-form\">Create a Form</h3>\n<p>Creates a form for an object type. Administrators and Owners can create forms.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>title</code> (required): the form's title.</li>\n<li><code>object_type</code> (required): the object type ID that submissions create objects of.</li>\n<li><code>fields</code>: the form's blocks. Use <code>{\"name\": \"awesome/form-field\", \"attributes\": {\"field\": \"&lt;field slug&gt;\"}}</code> for each field to ask for. Every slug must be a field on the object type.</li>\n<li><code>visibility</code>: <code>public</code> or <code>private</code>.</li>\n<li><code>submitted_message</code>: the message to show after submitting.</li>\n<li><code>authorized_domains</code>: domain names, such as <code>example.com</code>, the public form may be used from.</li>\n</ul>\n<p><code>content</code>, <code>submission_behavior</code> and <code>submission_key_field</code> can't be set when creating a form. New forms create a new object for every submission. Use <strong>Update Form</strong> to change that.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>201 Created</code></li>\n<li>Body: the new form, as in <strong>Get Form</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to create forms.</li>\n<li><code>422</code>: a field is missing or invalid, or <code>fields</code> uses a slug that isn't on the object type.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","forms"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"f2cd60b6-91c2-452c-aec9-87b4424419f8","name":"Create Form","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"title\": \"Contact Us\",\n  \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n  \"visibility\": \"public\",\n  \"fields\": [\n    { \"name\": \"awesome/form-field\", \"attributes\": { \"field\": \"first_name\" } },\n    { \"name\": \"awesome/form-field\", \"attributes\": { \"field\": \"email\" } }\n  ],\n  \"submitted_message\": \"Thanks, we will be in touch.\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/forms"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n    \"title\": \"Contact Us\",\n    \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"created_by\": 2,\n    \"fields\": [\n        {\n            \"name\": \"awesome/form-field\",\n            \"attributes\": {\n                \"field\": \"first_name\"\n            },\n            \"children\": []\n        },\n        {\n            \"name\": \"awesome/form-field\",\n            \"attributes\": {\n                \"field\": \"email\"\n            },\n            \"children\": []\n        }\n    ],\n    \"content\": \"\",\n    \"submitted_message\": \"Thanks, we will be in touch.\",\n    \"visibility\": \"public\",\n    \"authorized_domains\": [],\n    \"submission_behavior\": \"create\",\n    \"submission_key_field\": null,\n    \"public_url\": \"https://dundermifflin.engineawesome.app/api/v1/public/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n    \"created_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"updated_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"PATCH\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"b7b51573-4d98-4710-8aad-0dd9c1273ae3"},{"name":"Update Form","id":"1c11178a-12b5-494c-ab3a-6bb2c1241393","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"submission_behavior\": \"update_or_create\",\n  \"submission_key_field\": \"email\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/forms/","description":"<h3 id=\"update-a-form\">Update a Form</h3>\n<p>Changes a form. Send only the properties you want to change. <code>PATCH</code> works the same way. Administrators and Owners can update forms.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>formId</code>: the form's ID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>Accepts <code>title</code>, <code>fields</code>, <code>visibility</code>, <code>submitted_message</code> and <code>authorized_domains</code> as in <strong>Create Form</strong>, plus:</p>\n<ul>\n<li><code>content</code>: the form's block markup.</li>\n<li><code>submission_behavior</code>: what a submission does:<ul>\n<li><code>create</code> (default): always create a new object.</li>\n<li><code>update_or_create</code>: update the object whose key field matches the submitted value, or create one if none does.</li>\n<li><code>update_existing</code>: only update an existing object. If none matches, the submission fails with <code>404</code>.</li>\n<li><code>find_or_create</code>: use the existing object if one matches, without changing its fields, or create one if none does.</li>\n</ul>\n</li>\n<li><code>submission_key_field</code>: the field slug to match on, such as <code>email</code>. Required by every behavior except <code>create</code>. The match is exact.</li>\n</ul>\n<p>The object type can't be changed.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the updated form, as in <strong>Get Form</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to update forms.</li>\n<li><code>404</code>: no form with that ID exists on this team.</li>\n<li><code>422</code>: a value is invalid, or <code>submission_key_field</code> isn't a valid field.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","forms",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"abefe200-b4d9-4866-8e93-c68acc97cdcb","name":"Update Form","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"submission_behavior\": \"update_or_create\",\n  \"submission_key_field\": \"email\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": \"9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n    \"title\": \"Contact Us\",\n    \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"created_by\": 2,\n    \"fields\": [\n        {\n            \"name\": \"awesome/form-field\",\n            \"attributes\": {\n                \"field\": \"first_name\"\n            },\n            \"children\": []\n        },\n        {\n            \"name\": \"awesome/form-field\",\n            \"attributes\": {\n                \"field\": \"email\"\n            },\n            \"children\": []\n        }\n    ],\n    \"content\": \"\",\n    \"submitted_message\": \"Thanks, we will be in touch.\",\n    \"visibility\": \"public\",\n    \"authorized_domains\": [],\n    \"submission_behavior\": \"update_or_create\",\n    \"submission_key_field\": \"email\",\n    \"public_url\": \"https://dundermifflin.engineawesome.app/api/v1/public/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n    \"created_at\": \"2025-02-09T03:30:00.000000Z\",\n    \"updated_at\": \"2025-02-09T03:35:00.000000Z\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"PATCH\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"1c11178a-12b5-494c-ab3a-6bb2c1241393"},{"name":"Delete Form","id":"adc2b5eb-f385-4813-8d20-2225493c8b6d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/forms/","description":"<h3 id=\"delete-a-form\">Delete a Form</h3>\n<p>Deletes a form. Its public URL stops working. Objects it created are not affected. Administrators and Owners can delete forms.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>formId</code>: the form's ID.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to delete forms.</li>\n<li><code>404</code>: no form with that ID exists on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","forms",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"47b6a574-918b-4be6-b8b9-3c86da2e4198","name":"Delete Form","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"adc2b5eb-f385-4813-8d20-2225493c8b6d"},{"name":"Get Public Form","id":"e68c0e0d-468e-4912-9f49-995f37dd42b8","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/public/forms/","description":"<h3 id=\"get-a-public-form\">Get a Public Form</h3>\n<p>Returns what you need to display a public form on your own website. <strong>No access token is needed.</strong></p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>formId</code>: the form's ID. The form's <code>public_url</code> is this endpoint's URL.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>title</code>: the form's title.</li>\n<li><code>object_type</code>: the object type ID.</li>\n<li><code>fields</code>: the fields to show, in order, with their labels, types and settings.</li>\n</ul>\n<p>Responses can be cached for up to an hour.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: the form has <code>authorized_domains</code>, and the request's <code>Origin</code> header is missing or isn't one of them.</li>\n<li><code>404</code>: the form doesn't exist or isn't public.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","public","forms",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"3ef8d7b5-cdd3-4273-a977-e98572c04e69","name":"Get Public Form","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/public/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"},{"key":"cache-control","value":"public, max-age=3600"}],"cookie":[],"responseTime":null,"body":"{\n    \"title\": \"Contact Us\",\n    \"object_type\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"fields\": [\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"first_name\",\n                \"semantic\": \"name\",\n                \"inputType\": \"text\",\n                \"label\": \"First Name\",\n                \"searchable\": true,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        },\n        {\n            \"name\": \"awesome/text-field\",\n            \"attributes\": {\n                \"slug\": \"email\",\n                \"semantic\": \"email\",\n                \"inputType\": \"email\",\n                \"label\": \"Email\",\n                \"searchable\": false,\n                \"defaultValue\": null,\n                \"show_in_list\": false,\n                \"locking\": {\n                    \"always\": false,\n                    \"fields\": []\n                },\n                \"required\": {\n                    \"always\": false,\n                    \"fields\": []\n                }\n            },\n            \"children\": [],\n            \"isValid\": true\n        }\n    ]\n}"}],"_postman_id":"e68c0e0d-468e-4912-9f49-995f37dd42b8"},{"name":"Submit Public Form","id":"5d5f8851-9621-4ac9-8d2b-3f8850942358","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"first_name\": \"Jane\",\n  \"email\": \"jane@example.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/public/forms/","description":"<h3 id=\"submit-a-public-form\">Submit a Public Form</h3>\n<p>Submits a public form, creating or updating an object as the form's <code>submission_behavior</code> says. <strong>No access token is needed.</strong> This is the request to send from your own website.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>formId</code>: the form's ID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>The values for the form's fields, keyed by field slug:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"first_name\": \"Jane\",\n  \"email\": \"jane@example.com\",\n  \"_rel\": {\n    \"company\": { \"name\": \"Acme\" }\n  },\n  \"cf-turnstile-response\": \"&lt;token&gt;\"\n}\n</code></pre>\n<ul>\n<li>Only the form's fields (including hidden fields) are accepted. Sending any other field returns <code>422</code>.</li>\n<li><code>_rel</code>: values for the form's related-object sections, keyed by relationship field slug. Each creates or updates a related object, linked to the submitted one.</li>\n<li><code>cf-turnstile-response</code>: required if your team has the Cloudflare Turnstile integration turned on. It's the token from the Turnstile widget.</li>\n<li>The submission is checked like <strong>Add Object</strong>: required fields and field types are validated.</li>\n<li>Everything is saved together: if any object fails, nothing is saved.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>202 Accepted</code></li>\n<li>Body: <code>{\"submitted_message\": \"Thanks, we will be in touch.\"}</code></li>\n</ul>\n<p>Successful submissions count towards your plan's monthly form submission limit, and trigger <code>object.created</code> or <code>object.updated</code> webhooks.</p>\n<h4 id=\"rate-limits\">Rate Limits</h4>\n<p>10 submissions per minute from each IP address, and 100 per minute for each form. Above that you get <code>429 Too Many Requests</code>.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: the request's <code>Origin</code> isn't one of the form's <code>authorized_domains</code>.</li>\n<li><code>404</code>: the form doesn't exist or isn't public, or the behavior is <code>update_existing</code> and no object matches the key field.</li>\n<li><code>422</code>: a value is invalid, a field isn't on the form, the captcha failed, the form was submitted empty, or your team has reached its form submission limit.</li>\n<li><code>429</code>: too many submissions.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","public","forms",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"3dffaf74-0341-4b41-8bd5-8a3f0b2d0418","name":"Submit Public Form","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"first_name\": \"Jane\",\n  \"email\": \"jane@example.com\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/public/forms/9b1f6c3e-4d2a-4f7e-8c55-2e7d1a0b6f41"},"status":"Accepted","code":202,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"submitted_message\": \"Thanks, we will be in touch.\"\n}"}],"_postman_id":"5d5f8851-9621-4ac9-8d2b-3f8850942358"}],"id":"dbcd5a8e-b2b5-4f10-ad99-d74cfbdc2393","description":"<p>Forms let people outside your team create or update objects, for example a contact form on your website. Each form belongs to one object type and lists which of its fields to ask for.</p>\n<p>Administrators and Owners manage forms with the endpoints in this folder. To show a form on your own website and submit it, use <strong>Get Public Form</strong> and <strong>Submit Public Form</strong>. Those two don't need an access token.</p>\n","_postman_id":"dbcd5a8e-b2b5-4f10-ad99-d74cfbdc2393","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"File Upload","item":[{"name":"Step 1 – Get Pre-Signed Upload URL","event":[{"listen":"test","script":{"exec":["// Parse JSON response","let json = {};","try {","  json = pm.response.json();","} catch (e) {","  pm.test('Response is JSON', function () {","    pm.expect.fail('Response was not valid JSON');","  });","}","","// Store main values from response","pm.collectionVariables.set('upload_url', json.url || '');","pm.collectionVariables.set('upload_key', json.key || '');","pm.collectionVariables.set('preview_url', json.previewUrl || '');","","const headers = json.headers || {};","","// Individual headers (these are arrays in the response)","pm.collectionVariables.set(","  'upload_content_type',","  (headers['Content-Type'] && headers['Content-Type'][0]) || 'application/octet-stream'",");","","pm.collectionVariables.set(","  'upload_x_amz_acl',","  (headers['x-amz-acl'] && headers['x-amz-acl'][0]) || 'private'",");","","pm.collectionVariables.set(","  'upload_x_amz_meta_team',","  (headers['x-amz-meta-team'] && headers['x-amz-meta-team'][0]) || ''",");","","pm.collectionVariables.set(","  'upload_x_amz_meta_user',","  (headers['x-amz-meta-user'] && headers['x-amz-meta-user'][0]) || ''",");","","// ✅ NEW: store Host too","pm.collectionVariables.set(","  'upload_host',","  (headers['Host'] && headers['Host'][0]) || ''",");","","pm.test('Stored upload variables for next step', function () {","  pm.expect(pm.collectionVariables.get('upload_url')).to.exist;","  pm.expect(pm.collectionVariables.get('upload_key')).to.exist;","});"],"type":"text/javascript","packages":{},"requests":{},"id":"61c48494-c1fd-4fc4-a6c7-f599f66d4b79"}}],"id":"ff40d189-f5d4-4a58-9841-2925c9a12ace","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n\t\"type\": \"{{file_type}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/upload","description":"<h3 id=\"step-1--get-a-pre-signed-upload-url\">Step 1 – Get a Pre-Signed Upload URL</h3>\n<p>Reserves a storage location for one file and returns a URL you can upload it to for the next <strong>5 minutes</strong>.</p>\n<p>You need permission to upload files: the Owner, Administrator, Manager and Update Only roles have it. Your email address must also be verified.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>type</code> (required): the file's MIME type, for example <code>image/jpeg</code> or <code>application/pdf</code>. It decides the file's extension.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>url</code>: the pre-signed URL. <code>PUT</code> the file to it in Step 2.</li>\n<li><code>key</code>: the file's path in storage, for example <code>teams/your-team/TkBweWluQ3lrrV6k49GXYSyvGwsneP.webp</code>. Save this as the file field's value in Step 3.</li>\n<li><code>headers</code>: the headers you must send with the upload in Step 2. Each value is an array with one string.</li>\n<li><code>previewUrl</code>: a URL for reading the file once it is uploaded, valid for 8 hours.</li>\n</ul>\n<p>This request's test script saves these values as collection variables for Steps 2 and 3.</p>\n<h4 id=\"limits\">Limits</h4>\n<ul>\n<li>Files can be up to <strong>50 MB</strong>. A larger upload is accepted by storage but deleted shortly after the URL expires.</li>\n<li>To attach the file to a field, its extension must be one the field allows. See Step 3.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to upload files, or your email address isn't verified.</li>\n<li><code>422</code>: <code>type</code> is missing or isn't a MIME type we recognise.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","upload"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"1e161f80-2243-48ed-be64-a2cb5ad8fc12","name":"Step 1 – Get Pre-Signed Upload URL","originalRequest":{"method":"POST","header":[{"key":"Authorization","value":"Bearer {{token}}","type":"text"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n\t\"type\": \"image/png\"\n}","options":{"raw":{"language":"json"}}},"url":"dundermifflin.engineawesome.app/api/v1/upload"},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Mon, 03 Nov 2025 01:05:08 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"501"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=545.80497741699, database;desc=\"Database\";dur=349.46, app;desc=\"App\";dur=961, total;desc=\"Total\";dur=1507.3039531708,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"url\": \"https://engine-awesome-spaces.nyc3.digitaloceanspaces.com/teams/int/TkBweWluQ3lrrV6k49GXYSyvGwsneP.webp?x-amz-acl=private&x-amz-meta-team=int&x-amz-meta-user=xeAgZ16O1l0K&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO00WTL9BM4LJYPAJAV7%2F20251103%2Fnyc3%2Fs3%2Faws4_request&X-Amz-Date=20251103T010508Z&X-Amz-SignedHeaders=host%3Bx-amz-acl%3Bx-amz-meta-team%3Bx-amz-meta-user&X-Amz-Expires=300&X-Amz-Signature=f1e61f7cb1753d6f41f438d2fcf866627694122e7209f4b310d01ec3248a1153\",\n    \"key\": \"teams/int/TkBweWluQ3lrrV6k49GXYSyvGwsneP.webp\",\n    \"headers\": {\n        \"Host\": [\n            \"engine-awesome-spaces.nyc3.digitaloceanspaces.com\"\n        ],\n        \"x-amz-acl\": [\n            \"private\"\n        ],\n        \"x-amz-meta-team\": [\n            \"int\"\n        ],\n        \"x-amz-meta-user\": [\n            \"xeAgZ16O1l0K\"\n        ],\n        \"Content-Type\": [\n            \"image/webp\"\n        ]\n    },\n    \"previewUrl\": \"https://cdn.engineawesome.app/teams/int/TkBweWluQ3lrrV6k49GXYSyvGwsneP.webp?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO00WTL9BM4LJYPAJAV7%2F20251103%2Fnyc3%2Fs3%2Faws4_request&X-Amz-Date=20251103T010508Z&X-Amz-SignedHeaders=host&X-Amz-Expires=28800&X-Amz-Signature=65901007d0ae5b44e73daa89da80e673e3f38ed51407f3a193ed77d69128bb53\"\n}"}],"_postman_id":"ff40d189-f5d4-4a58-9841-2925c9a12ace"},{"name":"Step 2 – PUT File to Storage (using pre-signed URL)","event":[{"listen":"prerequest","script":{"exec":["// Make sure Step 1 was run","const uploadUrl = pm.collectionVariables.get('upload_url');","if (!uploadUrl) {","  throw new Error('upload_url is not set. Run \"Step 1 – Get Pre-Signed Upload URL\" first.');","}"],"type":"text/javascript","packages":{},"requests":{},"id":"bacb70e4-5bb7-4e1e-b8f0-4c71d5ea4aa3"}},{"listen":"test","script":{"exec":["pm.test('Upload should return 200, 201, or 204', function () {","  pm.expect([200,201,204]).to.include(pm.response.code);","});","","// After this step, the file is in storage.","// Next step: tell Engine Awesome which file you uploaded."],"type":"text/javascript","packages":{},"requests":{},"id":"ed19f4d2-49f4-494a-8477-670210d58206"}}],"id":"230a3b96-cc8a-45e6-9df2-618b5c990c2f","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"PUT","header":[{"key":"x-amz-acl","value":""},{"key":"x-amz-meta-team","value":""},{"key":"x-amz-meta-user","value":""},{"key":"Host","value":""}],"body":{"mode":"file","file":{"src":"postman-cloud:///1f0b8530-2960-4d70-b0d8-fd8b42559615"}},"url":"","description":"<p>This is the <strong>actual file upload</strong>.</p>\n<p><strong>Important:</strong></p>\n<ul>\n<li><p>This request goes directly to our S3-compatible storage, <strong>not</strong> to the actual Engine Awesome app.</p>\n</li>\n<li><p>You must send <strong>all</strong> the headers returned from Step 1 (<code>Host</code>, <code>x-amz-acl</code>, <code>x-amz-meta-team</code>, <code>x-amz-meta-user</code>, <code>Content-Type</code>).</p>\n</li>\n<li><p>The body must be the file itself.</p>\n</li>\n<li><p>You have <strong>5 minutes to complete this step</strong> before the url has expired.</p>\n</li>\n</ul>\n","urlObject":{"host":[""],"query":[],"variable":[]}},"response":[{"id":"c9abe8c0-7122-4bd0-987d-d4943239226d","name":"Step 2 – PUT File to Storage (using pre-signed URL)","originalRequest":{"method":"PUT","header":[{"key":"x-amz-acl","value":""},{"key":"x-amz-meta-team","value":""},{"key":"x-amz-meta-user","value":""},{"key":"Content-Type","value":"","disabled":true},{"key":"Host","value":""}],"body":{"mode":"file","file":{}},"url":{"raw":"https://engine-awesome-spaces.nyc3.digitaloceanspaces.com/teams/int/TkBweWluQ3lrrV6k49GXYSyvGwsneP.webp?x-amz-acl=private&x-amz-meta-team=int&x-amz-meta-user=xeAgZ16O1l0K&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO00WTL9BM4LJYPAJAV7%2F20251103%2Fnyc3%2Fs3%2Faws4_request&X-Amz-Date=20251103T010508Z&X-Amz-SignedHeaders=host%3Bx-amz-acl%3Bx-amz-meta-team%3Bx-amz-meta-user&X-Amz-Expires=300&X-Amz-Signature=f1e61f7cb1753d6f41f438d2fcf866627694122e7209f4b310d01ec3248a1153","protocol":"https","host":["engine-awesome-spaces","nyc3","digitaloceanspaces","com"],"path":["teams","int","TkBweWluQ3lrrV6k49GXYSyvGwsneP.webp"],"query":[{"key":"x-amz-acl","value":"private"},{"key":"x-amz-meta-team","value":"int"},{"key":"x-amz-meta-user","value":"xeAgZ16O1l0K"},{"key":"X-Amz-Content-Sha256","value":"UNSIGNED-PAYLOAD"},{"key":"X-Amz-Algorithm","value":"AWS4-HMAC-SHA256"},{"key":"X-Amz-Credential","value":"DO00WTL9BM4LJYPAJAV7%2F20251103%2Fnyc3%2Fs3%2Faws4_request"},{"key":"X-Amz-Date","value":"20251103T010508Z"},{"key":"X-Amz-SignedHeaders","value":"host%3Bx-amz-acl%3Bx-amz-meta-team%3Bx-amz-meta-user"},{"key":"X-Amz-Expires","value":"300"},{"key":"X-Amz-Signature","value":"f1e61f7cb1753d6f41f438d2fcf866627694122e7209f4b310d01ec3248a1153"}]}},"status":"OK","code":200,"_postman_previewlanguage":"Text","header":[{"key":"content-length","value":"0"},{"key":"etag","value":"\"8d35a13105f99a9b0100635dc49d312e\""},{"key":"accept-ranges","value":"bytes"},{"key":"x-amz-request-id","value":"tx0000032302ebfa9da38a1-00690804ca-126676f6d-nyc3c"},{"key":"date","value":"Mon, 03 Nov 2025 01:26:35 GMT"},{"key":"strict-transport-security","value":"max-age=15552000; includeSubDomains; preload"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"230a3b96-cc8a-45e6-9df2-618b5c990c2f"},{"name":"Step 3 – Create Object using uploaded file","event":[{"listen":"prerequest","script":{"exec":["// Ensure we have upload_key from step 1","const uploadKey = pm.collectionVariables.get('upload_key');","if (!uploadKey) {","  throw new Error('upload_key is not set. Run Step 1 first.');","}"],"type":"text/javascript","packages":{},"requests":{},"id":"36c5e5da-1c9b-4d4a-b2f9-9f82fb77aa44"}}],"id":"0649cb9d-d265-454a-bddc-f4a899da8435","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n    \"{{file_field_slug}}\": \"\"\n}"},"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/{{objectType}}","description":"<h3 id=\"step-3--attach-the-file-to-an-object\">Step 3 – Attach the File to an Object</h3>\n<p>This step tells Engine Awesome: <strong>\"Here's the file I just uploaded — attach it to this object.\"</strong></p>\n<p>Set the file field to the <code>key</code> from Step 1, just like any other field. This example creates a new object; to attach the file to an existing object, send the same body to <strong>Update Object</strong> instead.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"{{file_field_slug}}\": \"\"\n}\n</code></pre>\n<p>You can also send the value as <code>{\"raw\": \"&lt;key&gt;\"}</code>, the same shape the API returns.</p>\n<h4 id=\"validation\">Validation</h4>\n<ul>\n<li>The key must be one of your team's files (it starts with <code>teams/&lt;your team&gt;/</code>). Otherwise you get <code>422</code> with \"You do not have permission to view this file.\"</li>\n<li>The file's extension must be in one of the groups the field allows: image, audio, video, document, spreadsheet, interactive or text. Otherwise you get <code>422</code> with \"Invalid file type.\"</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<p>File fields are returned as an object:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"file_field\": {\n  \"raw\": \"teams/your-team/TkBweWluQ3lrrV6k49GXYSyvGwsneP.webp\",\n  \"rendered\": \"https://cdn.engineawesome.app/teams/your-team/TkBweWluQ3lrrV6k49GXYSyvGwsneP.webp?X-Amz-...\"\n}\n</code></pre>\n<ul>\n<li><code>raw</code>: the key you saved.</li>\n<li><code>rendered</code>: a signed URL for downloading the file. It expires after 8 hours, so fetch the object again for a fresh one rather than storing it.</li>\n</ul>\n<p>An empty file field is <code>{\"raw\": \"\", \"rendered\": \"\"}</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}},"urlObject":{"protocol":"https","path":["api","v1","objects","{{objectType}}"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"e8b56eaf-583a-4710-9c04-00cb68ef94df","name":"Step 3 – Create Object using uploaded file","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n    \"first_name\": \"API Docs\",\n    \"last_name\": \"Upload Example\",\n    \"image_field\": \"teams/int/gJO6xqgV8EM2iNHsbbDtiAh9Bdn3bg.png\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/objects/fa68956a-33bf-4503-a337-2f40c3d96a62"},"status":"Created","code":201,"_postman_previewlanguage":"Text","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Mon, 03 Nov 2025 01:30:24 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"vary","value":"Origin"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=13.849020004272, database;desc=\"Database\";dur=104.78, app;desc=\"App\";dur=125, total;desc=\"Total\";dur=139.07408714294,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[{"expires":"Invalid Date","domain":"","path":""}],"responseTime":null,"body":"{\n    \"_id\": \"6acb9eea47a11d81860d82b2\",\n    \"_is_new\": false,\n    \"_label\": \"API Docs Upload Example\",\n    \"first_name\": \"API Docs\",\n    \"middle_name\": null,\n    \"last_name\": \"Upload Example\",\n    \"email\": null,\n    \"company\": null,\n    \"phone_office\": \"1\",\n    \"job_title\": null,\n    \"phone_cell\": null,\n    \"website\": null,\n    \"engineawesome_url\": null,\n    \"price_per_month\": null,\n    \"signup_date\": null,\n    \"number_of_teams\": null,\n    \"status\": null,\n    \"notes\": null,\n    \"linkedin\": null,\n    \"acquired\": null,\n    \"type\": null,\n    \"home_phone\": null,\n    \"school_phone_number\": null,\n    \"ea_user\": null,\n    \"test_color\": null,\n    \"next_action_date\": null,\n    \"next_action\": null,\n    \"file_description\": null,\n    \"file_field\": {\n        \"raw\": \"\",\n        \"rendered\": \"\"\n    },\n    \"image_field\": {\n        \"raw\": \"teams/int/gJO6xqgV8EM2iNHsbbDtiAh9Bdn3bg.png\",\n        \"rendered\": \"https://cdn.engineawesome.app/teams/int/gJO6xqgV8EM2iNHsbbDtiAh9Bdn3bg.png?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO00WTL9BM4LJYPAJAV7%2F20261011%2Fnyc3%2Fs3%2Faws4_request&X-Amz-Date=20261011T143625Z&X-Amz-SignedHeaders=host&X-Amz-Expires=28800&X-Amz-Signature=2efc6f7cdced66d6860bb12437026b10907b1bc49e0183d54b8e47909db10975\"\n    },\n    \"media_field\": {\n        \"raw\": \"\",\n        \"rendered\": \"\"\n    },\n    \"file_1\": {\n        \"raw\": \"\",\n        \"rendered\": \"\"\n    },\n    \"file_2\": {\n        \"raw\": \"\",\n        \"rendered\": \"\"\n    },\n    \"feature\": [],\n    \"user_role\": null,\n    \"password\": null,\n    \"self_data_only\": false,\n    \"test_field\": null,\n    \"test_select\": null,\n    \"test_phone\": \"1\",\n    \"date_no_time\": null,\n    \"checkboxes\": [],\n    \"multi\": [],\n    \"created\": \"2026-10-11T14:36:26.261000Z\",\n    \"adddress_test\": null,\n    \"images\": {\n        \"raw\": \"\",\n        \"rendered\": \"\"\n    },\n    \"test_default\": \"this is the default value\",\n    \"contact_info\": null,\n    \"source\": null,\n    \"lead_status\": null,\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/objects/fa68956a-33bf-4503-a337-2f40c3d96a62/6acb9eea47a11d81860d82b2\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ],\n        \"alternate\": [\n            {\n                \"href\": \"https://int.engineawesome.app/edit/object/fa68956a-33bf-4503-a337-2f40c3d96a62/6acb9eea47a11d81860d82b2\",\n                \"type\": \"text/html\"\n            }\n        ],\n        \"awesome:view\": [\n            {\n                \"href\": \"/api/v1/views/9a03ad26-4f8e-41f7-a1ab-8977d93b1ca1\",\n                \"id\": \"9a03ad26-4f8e-41f7-a1ab-8977d93b1ca1\"\n            }\n        ]\n    }\n}"}],"_postman_id":"0649cb9d-d265-454a-bddc-f4a899da8435"}],"id":"2d2e95d5-f851-440b-b5f7-6638be6a8fb7","description":"<h3 id=\"how-it-works-s3-style\">How it works (S3-style)</h3>\n<p>Engine Awesome doesn’t store files directly. Instead, we give you a short-lived, pre-signed URL to our S3-compatible storage. You upload the file <strong>directly</strong> to storage using that URL, then tell Engine Awesome which file you uploaded.</p>\n<p>This approach is used because it’s <strong>secure, scalable, and efficient</strong>:</p>\n<ul>\n<li><p><strong>Secure</strong> – The URL expires quickly and only allows one upload, so your API key or user credentials are never exposed.</p>\n</li>\n<li><p><strong>Fast &amp; scalable</strong> – Files go straight from the client to storage, keeping Engine Awesome’s servers light and responsive.</p>\n</li>\n<li><p><strong>Reliable</strong> – Large uploads bypass app timeouts and limits, using proven S3 infrastructure for storage and delivery.</p>\n</li>\n</ul>\n<p>In short: Engine Awesome handles the logic and permissions, while storage handles the heavy lifting.</p>\n","_postman_id":"2d2e95d5-f851-440b-b5f7-6638be6a8fb7","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Team Members","item":[{"name":"Add Team Member","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"11756e97-9606-430d-8386-89ab9b4cb739"}}],"id":"687a42f6-57e8-405e-b5ec-547c8f16a291","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"role\": \"viewer\",\n\t\"email\": \"example@example.org\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/team-members","description":"<h3 id=\"invite-a-team-member\">Invite a Team Member</h3>\n<p>Sends an email invitation to join your team. The person becomes a team member when they accept it, so this does not return a user.</p>\n<p>Only Owners can invite team members.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"email\": \"example@example.org\",\n  \"role\": \"viewer\",\n  \"app_role\": null\n}\n</code></pre>\n<ul>\n<li><code>email</code> (required): the address to invite.</li>\n<li><code>role</code> (required): the team role to give them. See below.</li>\n<li><code>app_role</code> (optional): one of your app's custom roles.</li>\n</ul>\n<h4 id=\"roles\">Roles</h4>\n<p><code>role</code> must be one of these keys:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Key</th>\n<th>Name</th>\n<th>Can</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>owner</code></td>\n<td>Owner</td>\n<td>Everything, including team members, billing, webhooks and permanently deleting data</td>\n</tr>\n<tr>\n<td><code>admin</code></td>\n<td>Administrator</td>\n<td>Manage object types, layouts, forms and appearance, plus everything a Manager can do</td>\n</tr>\n<tr>\n<td><code>editor</code></td>\n<td>Managers</td>\n<td>Create, update and delete records, and upload files</td>\n</tr>\n<tr>\n<td><code>update-only</code></td>\n<td>Update Only</td>\n<td>Update existing records and upload files</td>\n</tr>\n<tr>\n<td><code>viewer</code></td>\n<td>View Only</td>\n<td>View records</td>\n</tr>\n<tr>\n<td><code>member</code></td>\n<td>Member</td>\n<td>View records, depending on your app's permissions</td>\n</tr>\n<tr>\n<td><code>billing</code></td>\n<td>Billing Manager</td>\n<td>Only use the billing portal</td>\n</tr>\n</tbody>\n</table>\n</div><p><code>app_role</code> is optional: the slug of one of your app's own custom roles, if it has any.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>201 Created</code>, with an empty body.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to manage team members.</li>\n<li><code>422</code>: a field is missing or invalid, the person is already on the team, they already have a pending invitation, or your plan doesn't allow more than one user.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","team-members"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"d849572e-ce36-4431-aea6-42aa932ed8b9","name":"Add Team Member","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"role\": \"viewer\",\n\t\"email\": \"example@example.org\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/team-members"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sat, 08 Feb 2025 22:48:30 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"vary","value":"Origin"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=17.096996307373, database;desc=\"Database\";dur=90.83, app;desc=\"App\";dur=316, total;desc=\"Total\";dur=334.04397964478,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{}"}],"_postman_id":"687a42f6-57e8-405e-b5ec-547c8f16a291"},{"name":"Team Members","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"94d553b5-47e9-41af-baa8-e65e74337642"}}],"id":"546cc108-ab35-49b1-aeba-ea623e3067cc","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/team-members","description":"<h3 id=\"list-team-members\">List Team Members</h3>\n<p>Returns everyone on your team. Any team member can call it.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array. Each member has:</p>\n<ul>\n<li><code>id</code>: the user's ID (a number).</li>\n<li><code>name</code>: their name.</li>\n<li><code>email</code>, <code>role</code>, <code>app_role</code>: only included if you are allowed to manage team members (Owners). <code>role</code> is one of the keys listed under <strong>Add Team Member</strong>. <code>app_role</code> is <code>null</code> unless your app has custom roles.</li>\n<li><code>_links.self[0].href</code>: the member's API path, and <code>targetHints.allow</code>, the methods you can use on it.</li>\n<li><code>_links.icon[0].href</code>: their profile photo URL.</li>\n</ul>\n<h4 id=\"response-headers\">Response Headers</h4>\n<ul>\n<li><code>Allow</code>: includes <code>POST</code> when you are allowed to invite team members.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","team-members"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"d7ff0d4f-f68c-4075-9a6d-a19a9f06e079","name":"Team Members","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/team-members"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sat, 08 Feb 2025 23:08:36 GMT"},{"key":"allow","value":"GET"},{"key":"allow","value":"POST"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=17.023086547852, database;desc=\"Database\";dur=43.31, app;desc=\"App\";dur=59, total;desc=\"Total\";dur=76.033115386963,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 2,\n        \"name\": \"Steve Bruner\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/team-members/2\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ],\n            \"icon\": [\n                {\n                    \"href\": \"https://ui-avatars.com/api/?name=S+B&color=7F9CF5&background=EBF4FF\"\n                }\n            ]\n        },\n        \"email\": \"sbruner@engineawesome.com\",\n        \"role\": \"owner\",\n        \"app_role\": null\n    }\n]"}],"_postman_id":"546cc108-ab35-49b1-aeba-ea623e3067cc"},{"name":"Team Member","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"274dfd84-86a7-430c-b9ee-95c05dc20ba7"}}],"id":"4c4e3b6d-b7f3-46c7-8755-ebae932c9e53","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/team-members/","description":"<h3 id=\"get-a-team-member\">Get a Team Member</h3>\n<p>Returns one team member by user ID. Any team member can call it.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>memberId</code>: the user's ID, from <strong>List Team Members</strong>.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<p>The same properties as each item in <strong>List Team Members</strong>. <code>email</code>, <code>role</code> and <code>app_role</code> are only included for Owners.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>404</code>: no user with that ID is on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","team-members",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"a15ea594-4607-4c6c-8041-498cdd5d9e07","name":"Team Member","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/team-members/2"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sat, 08 Feb 2025 23:23:41 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"597"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=16.887187957764, database;desc=\"Database\";dur=40.26, app;desc=\"App\";dur=58, total;desc=\"Total\";dur=74.915170669556,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"name\": \"Steve Bruner\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/team-members/2\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ],\n        \"icon\": [\n            {\n                \"href\": \"https://ui-avatars.com/api/?name=S+B&color=7F9CF5&background=EBF4FF\"\n            }\n        ]\n    },\n    \"email\": \"sbruner@engineawesome.com\",\n    \"role\": \"owner\",\n    \"app_role\": null\n}"}],"_postman_id":"4c4e3b6d-b7f3-46c7-8755-ebae932c9e53"},{"name":"Update Team Member","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"5a57bd73-3c34-4d54-abd1-85db933ecddc"}}],"id":"37164f1c-a14a-444e-842c-12040514f1e8","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"role\": \"owner\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/team-members/","description":"<h3 id=\"update-a-team-members-role\">Update a Team Member's Role</h3>\n<p>Changes a team member's <code>role</code>, <code>app_role</code>, or both. Nothing else about a user can be changed through this endpoint.</p>\n<p>Only Owners can update team members.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>memberId</code>: the user's ID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"role\": \"editor\"\n}\n</code></pre>\n<ul>\n<li><code>role</code> (optional): one of the role keys listed under <strong>Add Team Member</strong>.</li>\n<li><code>app_role</code> (optional): one of your app's custom role slugs.</li>\n</ul>\n<p>Leave out either one to keep its current value.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the updated team member, as in <strong>Get a Team Member</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to manage team members.</li>\n<li><code>404</code>: no user with that ID is on this team.</li>\n<li><code>422</code>: <code>role</code> or <code>app_role</code> isn't a valid value.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","team-members",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"7231931b-5716-482b-9bc0-d528b23d11af","name":"Update Team Member","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"role\": \"owner\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/team-members/2"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sat, 08 Feb 2025 23:25:56 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=16.46089553833, database;desc=\"Database\";dur=38.23, app;desc=\"App\";dur=54, total;desc=\"Total\";dur=70.677995681763,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"name\": \"Steve Bruner\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/team-members/2\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ],\n        \"icon\": [\n            {\n                \"href\": \"https://ui-avatars.com/api/?name=S+B&color=7F9CF5&background=EBF4FF\"\n            }\n        ]\n    },\n    \"email\": \"sbruner@engineawesome.com\",\n    \"role\": \"owner\",\n    \"app_role\": null\n}"}],"_postman_id":"37164f1c-a14a-444e-842c-12040514f1e8"},{"name":"Remove Team Member","id":"d3501406-2b3d-4f7f-a0fc-aa2ba48a01e1","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/team-members/","description":"<h3 id=\"remove-a-team-member\">Remove a Team Member</h3>\n<p>Removes a user from your team. Their user account isn't deleted, and objects they created keep them as the creator.</p>\n<p>Owners can remove any member. Any member can remove themselves, which leaves the team.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>memberId</code>: the user's ID.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to manage team members, and the ID isn't your own.</li>\n<li><code>422</code>: the user is the team's original owner, who can't be removed.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","team-members",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"62af9769-4acf-46f8-9357-fb5cac0d6a90","name":"Remove Team Member","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/team-members/3"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"d3501406-2b3d-4f7f-a0fc-aa2ba48a01e1"}],"id":"94b2cb8a-1f53-4eb7-b2d1-84658ecd39d7","description":"<p><a href=\"https://docs.engineawesome.com/settings/team/\">Team members</a> are users who have access to your Engine Awesome application. They can be assigned specific roles and permissions that define what actions they can perform within the system. To add team members, you can either use the Engine Awesome UI or utilize the available API endpoints to programmatically manage your team. This flexibility ensures that you can control user access and assign appropriate roles to maintain the security and efficiency of your organization’s operations.</p>\n","_postman_id":"94b2cb8a-1f53-4eb7-b2d1-84658ecd39d7","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Webhooks","item":[{"name":"Create Webhook","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"d0fb0f95-5cb9-4b2e-8c3c-02cc2f5667bb"}}],"id":"5e710721-d016-4731-91ba-933d28495752","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"url\": \"https://url_to_webhook.com\",\n\t\"topics\": [\n\t\t\"object.created\",\n\t\t\"object.updated\",\n\t\t\"object.deleted\"\n\t],\n\t\"filters\": {\n\t\t\"object.created\": {\n\t\t\t\"_objectType\": \"{{objectType}}\",\n\t\t\t\"priority\": \"High\"\n\t\t},\n\t\t\"object.updated\": {\n\t\t\t\"_objectType\": \"{{objectType}}\",\n\t\t\t\"priority\": \"High\",\n\t\t\t\"status\": \"Accepted\"\n\t\t},\n\t\t\"object.deleted\": {\n\t\t\t\"_objectType\": \"{{objectType}}\"\n\t\t}\n\t}\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/webhooks","description":"<h3 id=\"create-a-webhook\">Create a Webhook</h3>\n<p>Creates a webhook that sends events from your team to a URL you choose. Only Owners can create webhooks.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>url</code> (required): where to send events. Must be a URL whose host resolves in DNS.</li>\n<li><code>topics</code> (required): the events to send, at least one. See the folder description for the list.</li>\n<li><code>name</code>, <code>description</code> (optional): labels for your own reference. A webhook needs a <code>name</code> to appear in the app's \"send to webhook\" menus (<code>object.send</code> and <code>query.send</code>).</li>\n<li><code>status</code> (optional): <code>active</code> (the default), <code>paused</code> or <code>stopped</code>. Only <code>active</code> webhooks send events.</li>\n<li><code>filters</code> (optional): only send events that match. See below.</li>\n</ul>\n<h4 id=\"filters\">Filters</h4>\n<p><code>filters</code> limits which events are sent. It's an object keyed by topic, and each topic's value is an <strong>object</strong> of conditions. Every condition must match for the event to be sent.</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">\"filters\": {\n  \"object.created\": {\n    \"_objectType\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n    \"priority\": \"High\"\n  },\n  \"object.deleted\": {\n    \"_objectType\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\"\n  }\n}\n</code></pre>\n<ul>\n<li><code>_objectType</code>: only send events for objects of this object type. The value is a single object type ID, not a list.</li>\n<li>A field slug: only send events when the object's value for that field matches. Unlike the object search, any field can be used, not only searchable ones:<ul>\n<li><strong>Text:</strong> the value contains the filter text, case-insensitive.</li>\n<li><strong>Single choice:</strong> exactly equal, or one of an array of values.</li>\n<li><strong>Multiple choice:</strong> the object has this option selected, or any one of an array of options.</li>\n<li><strong>Number and money:</strong> equal, or add <code>+</code> for \"at least\" and <code>-</code> for \"at most\", as in <code>\"100+\"</code>.</li>\n<li><strong>Yes/no:</strong> <code>true</code> or <code>false</code>.</li>\n<li><strong>Auto-generated number:</strong> exactly equal.</li>\n<li>Other field types, including relationships and dates, never match, so a filter on them stops the webhook from firing.</li>\n</ul>\n</li>\n<li><code>object.deleted</code> only supports <code>_objectType</code>. Any other condition on it stops it from firing.</li>\n<li>A slug that isn't a field on the object type never matches.</li>\n<li>Each key in <code>filters</code> must be one of the webhook's <code>topics</code>. Topics without a filter send every event.</li>\n</ul>\n<blockquote>\n<p>⚠️ <strong>Each topic's conditions must be a JSON object, never an array.</strong> A body like <code>\"filters\": {\"object.created\": [\"aef3b3cc-…\"]}</code> is accepted with <code>200</code>, but afterwards <strong>every save of an object on your team fails with a 500 error</strong> while the webhook is active. If this happens, set the webhook's <code>status</code> to <code>paused</code> (or delete it) to restore saves, then send the filters in the correct format.</p>\n</blockquote>\n<p>The API never returns <code>filters</code>, so you can't read back what you saved. Keep a copy of what you sent.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>201 Created</code></li>\n<li>Body: the webhook. See <strong>Get Webhook</strong>. Save the <code>signing_key</code> to verify deliveries.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to manage webhooks, or your plan doesn't allow more webhooks.</li>\n<li><code>422</code>: a field is missing or invalid, or <code>filters</code> has a key that isn't in <code>topics</code>.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","webhooks"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"8b0e4e35-80fa-4984-942e-c86c03016af7","name":"Create Webhook","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"url\": \"https://url_to_webhook.com\",\n\t\"topics\": [\n\t\t\"object.created\",\n\t\t\"object.updated\",\n\t\t\"object.deleted\"\n\t],\n\t\"filters\": {\n\t\t\"object.created\": {\n\t\t\t\"_objectType\": \"{{ _.objectType }}\",\n\t\t\t\"priority\": \"High\"\n\t\t},\n\t\t\"object.updated\": {\n\t\t\t\"_objectType\": \"{{ _.objectType }}\",\n\t\t\t\"priority\": \"High\",\n\t\t\t\"status\": \"Accepted\"\n\t\t},\n\t\t\"object.deleted\": {\n\t\t\t\"_objectType\": \"{{ _.objectType }}\"\n\t\t}\n\t}\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/webhooks"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sat, 08 Feb 2025 23:36:51 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"597"},{"key":"vary","value":"Origin"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=17.621994018555, database;desc=\"Database\";dur=33.59, app;desc=\"App\";dur=56, total;desc=\"Total\";dur=73.875188827515,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 58,\n    \"user\": 2,\n    \"name\": null,\n    \"description\": null,\n    \"status\": \"active\",\n    \"url\": \"https://url_to_webhook.com\",\n    \"signing_key\": \"SINNk0okM8EM4ppreVs69im0RwUGBtMx\",\n    \"topics\": [\n        \"object.created\",\n        \"object.updated\",\n        \"object.deleted\"\n    ],\n    \"fail_count\": null,\n    \"created_at\": \"2025-02-08T23:36:51.000000Z\",\n    \"updated_at\": \"2025-02-08T23:36:51.000000Z\",\n    \"last_sent_at\": null,\n    \"last_failed_at\": null,\n    \"deleted_at\": null,\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/webhooks/58\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"5e710721-d016-4731-91ba-933d28495752"},{"name":"List Webhooks","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"48353f79-4924-41bc-b3af-bb700afd03d5"}}],"id":"ede5c31e-4fc6-4ee0-a6df-f77aacfb6e0e","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/webhooks","description":"<h3 id=\"list-webhooks\">List Webhooks</h3>\n<p>Returns every webhook on your team. Only Owners can list webhooks.</p>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>sendable</code> (optional): <code>1</code> to only return webhooks that can be sent to by hand: active, named, and subscribed to <code>object.send</code> or <code>query.send</code>.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array of webhooks. Each has:</p>\n<ul>\n<li><code>id</code>: the webhook's ID.</li>\n<li><code>user</code>: the ID of the user who created it. Deliveries are built with this user's permissions.</li>\n<li><code>name</code>, <code>description</code>: your labels, or <code>null</code>.</li>\n<li><code>status</code>: <code>active</code>, <code>paused</code> or <code>stopped</code>. A webhook is set to <code>stopped</code> automatically after 6 failed deliveries in a row.</li>\n<li><code>url</code>: where events are sent.</li>\n<li><code>signing_key</code>: the secret used to sign deliveries. See \"Verifying Deliveries\" in the folder description.</li>\n<li><code>topics</code>: the events it sends.</li>\n<li><code>fail_count</code>: failed deliveries since the last successful one.</li>\n<li><code>last_sent_at</code>, <code>last_failed_at</code>: when the last delivery succeeded or failed, or <code>null</code>.</li>\n<li><code>created_at</code>, <code>updated_at</code>, <code>deleted_at</code>: ISO 8601 timestamps.</li>\n<li><code>_links.self[0]</code>: the webhook's API path and the methods you can use on it.</li>\n</ul>\n<p><code>filters</code> is not returned.</p>\n<h4 id=\"response-headers\">Response Headers</h4>\n<ul>\n<li><code>Allow</code>: includes <code>POST</code> when you are allowed to create webhooks.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","webhooks"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"disabled":true,"description":{"content":"<p>Only return active webhooks with a name that subscribe to object.send or query.send.</p>\n","type":"text/plain"},"key":"sendable","value":"1"}],"variable":[]}},"response":[{"id":"95209d02-bbcb-405c-9076-aadfbc9badf3","name":"List Webhooks","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/webhooks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:21:45 GMT"},{"key":"allow","value":"GET"},{"key":"allow","value":"POST"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"594"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=16.968965530396, database;desc=\"Database\";dur=39.53, app;desc=\"App\";dur=55, total;desc=\"Total\";dur=72.580099105835,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 59,\n        \"user\": 2,\n        \"name\": \"Webhook for another service\",\n        \"description\": \"This webhook will send new events to another service.\",\n        \"status\": \"active\",\n        \"url\": \"https://url_to_webhook.com\",\n        \"signing_key\": \"of5w1gcrpMvENByYCX1CdblIeabRpeMM\",\n        \"topics\": [\n            \"object.created\",\n            \"object.updated\",\n            \"object.send\",\n            \"object.deleted\"\n        ],\n        \"fail_count\": 0,\n        \"created_at\": \"2025-02-09T01:21:33.000000Z\",\n        \"updated_at\": \"2025-02-09T01:21:33.000000Z\",\n        \"last_sent_at\": null,\n        \"last_failed_at\": null,\n        \"deleted_at\": null,\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"/api/v1/webhooks/59\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ]\n        }\n    }\n]"}],"_postman_id":"ede5c31e-4fc6-4ee0-a6df-f77aacfb6e0e"},{"name":"Get Webhook","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"9fc6249e-ce22-4927-aa5f-50058af5b430"}}],"id":"d5766913-8ec0-4543-9305-367210b78c0a","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/webhooks/","description":"<h3 id=\"get-a-webhook\">Get a Webhook</h3>\n<p>Returns one webhook by ID. Only Owners can view webhooks.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>webhookId</code>: the webhook's ID.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>id</code>: the webhook's ID.</li>\n<li><code>user</code>: the ID of the user who created it. Deliveries are built with this user's permissions.</li>\n<li><code>name</code>, <code>description</code>: your labels, or <code>null</code>.</li>\n<li><code>status</code>: <code>active</code>, <code>paused</code> or <code>stopped</code>. A webhook is set to <code>stopped</code> automatically after 6 failed deliveries in a row.</li>\n<li><code>url</code>: where events are sent.</li>\n<li><code>signing_key</code>: the secret used to sign deliveries. See \"Verifying Deliveries\" in the folder description.</li>\n<li><code>topics</code>: the events it sends.</li>\n<li><code>fail_count</code>: failed deliveries since the last successful one.</li>\n<li><code>last_sent_at</code>, <code>last_failed_at</code>: when the last delivery succeeded or failed, or <code>null</code>.</li>\n<li><code>created_at</code>, <code>updated_at</code>, <code>deleted_at</code>: ISO 8601 timestamps.</li>\n<li><code>_links.self[0]</code>: the webhook's API path and the methods you can use on it.</li>\n</ul>\n<p><code>filters</code> is not returned.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to manage webhooks.</li>\n<li><code>404</code>: no webhook with that ID exists on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","webhooks",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"b5eb57c6-2197-49e6-83f5-615dcd78a04b","name":"Get Webhook","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/webhooks/59"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:26:27 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"598"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=16.232013702393, database;desc=\"Database\";dur=54.48, app;desc=\"App\";dur=73, total;desc=\"Total\";dur=90.049982070923,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 59,\n    \"user\": 2,\n    \"name\": \"Webhook for another service\",\n    \"description\": \"This webhook will send new events to another service.\",\n    \"status\": \"active\",\n    \"url\": \"https://url_to_webhook.com\",\n    \"signing_key\": \"of5w1gcrpMvENByYCX1CdblIeabRpeMM\",\n    \"topics\": [\n        \"object.created\",\n        \"object.updated\",\n        \"object.send\",\n        \"object.deleted\"\n    ],\n    \"fail_count\": 0,\n    \"created_at\": \"2025-02-09T01:21:33.000000Z\",\n    \"updated_at\": \"2025-02-09T01:21:33.000000Z\",\n    \"last_sent_at\": null,\n    \"last_failed_at\": null,\n    \"deleted_at\": null,\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/webhooks/59\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"d5766913-8ec0-4543-9305-367210b78c0a"},{"name":"Update Webhook","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"dc51139e-51ba-4972-b82e-410ee8bf1238"}}],"id":"331ea56a-0b76-4bce-a679-6d5040ffb9f4","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"status\": \"paused\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/webhooks/","description":"<h3 id=\"update-a-webhook\">Update a Webhook</h3>\n<p>Changes a webhook. Send only the properties you want to change: <code>url</code>, <code>topics</code>, <code>name</code>, <code>description</code>, <code>status</code> or <code>filters</code>. They accept the same values as in <strong>Create Webhook</strong>.</p>\n<p>Only Owners can update webhooks.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>webhookId</code>: the webhook's ID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>To pause a webhook:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"status\": \"paused\"\n}\n</code></pre>\n<p>To turn a <code>stopped</code> webhook back on after fixing your endpoint, set <code>status</code> to <code>active</code>.</p>\n<ul>\n<li><code>topics</code> and <code>filters</code> replace the current values completely. They aren't merged.</li>\n<li><strong>Whenever you send <code>filters</code>, also send <code>topics</code>.</strong> The filters are checked against the topics in the request, and leaving <code>topics</code> out returns a <code>500</code> error. To remove all filters, send <code>\"filters\": {}</code> together with <code>topics</code>.</li>\n<li>See <strong>Create Webhook</strong> for the <code>filters</code> format. Each topic's conditions must be an object, never an array.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the updated webhook. See <strong>Get Webhook</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to manage webhooks.</li>\n<li><code>404</code>: no webhook with that ID exists on this team.</li>\n<li><code>422</code>: a value isn't valid, for example a <code>status</code> other than <code>active</code>, <code>paused</code> or <code>stopped</code>.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","webhooks",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"73dcfd51-70dc-43ed-ae4a-2eb67cda50cb","name":"Update Webhook","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"{{field_to_put}}\": \"{{new_field_value}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/webhooks/59"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:32:20 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"598"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=17.125129699707, database;desc=\"Database\";dur=51.44, app;desc=\"App\";dur=83, total;desc=\"Total\";dur=100.57902336121,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 59,\n    \"user\": 2,\n    \"name\": \"Webhook for another service\",\n    \"description\": \"This webhook will send new events to another service.\",\n    \"status\": \"paused\",\n    \"url\": \"https://stevebruner.com\",\n    \"signing_key\": \"of5w1gcrpMvENByYCX1CdblIeabRpeMM\",\n    \"topics\": [\n        \"object.created\",\n        \"object.updated\",\n        \"object.send\",\n        \"object.deleted\"\n    ],\n    \"fail_count\": 0,\n    \"created_at\": \"2025-02-09T01:21:33.000000Z\",\n    \"updated_at\": \"2025-02-09T01:32:20.000000Z\",\n    \"last_sent_at\": null,\n    \"last_failed_at\": null,\n    \"deleted_at\": null,\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"/api/v1/webhooks/59\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"331ea56a-0b76-4bce-a679-6d5040ffb9f4"},{"name":"Delete Webhook","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"f5ed0749-72ba-4301-bfe6-df464e7046ff"}}],"id":"03397c23-5b54-4896-82f0-fc595bab5a91","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/webhooks/","description":"<h3 id=\"delete-a-webhook\">Delete a Webhook</h3>\n<p>Deletes a webhook so it stops sending events. Only Owners can delete webhooks.</p>\n<p>To stop events only for a while, update its <code>status</code> to <code>paused</code> instead.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>webhookId</code>: the webhook's ID.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to manage webhooks.</li>\n<li><code>404</code>: no webhook with that ID exists on this team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","webhooks",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"86726208-c1b5-41f6-9898-69f248952a9f","name":"Delete Webhook","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/webhooks/59"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:35:07 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"vary","value":"Origin"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=18.273115158081, database;desc=\"Database\";dur=90.26, app;desc=\"App\";dur=111, total;desc=\"Total\";dur=129.69017028809,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"03397c23-5b54-4896-82f0-fc595bab5a91"},{"name":"List Sendable Webhooks","id":"1d0aaed3-3edc-4968-928b-1abada1d61a0","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/send-webhooks","description":"<h3 id=\"list-sendable-webhooks\">List Sendable Webhooks</h3>\n<p>Returns the webhooks that objects or queries can be sent to by hand: active webhooks with a name that subscribe to <code>object.send</code> or <code>query.send</code>. These are the webhooks the app shows in its \"send to webhook\" menus.</p>\n<p>Unlike <strong>List Webhooks</strong>, any team member can call this, and it only returns each webhook's <code>id</code>, <code>name</code> and <code>topics</code>. No URLs or signing keys.</p>\n<p><code>GET /api/v1/send-webhooks/{webhookId}</code> returns a single one in the same format, or <code>404</code> if it isn't sendable.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">[\n  {\n    \"id\": 77,\n    \"name\": \"Email ticket to vendor\",\n    \"topics\": [\"object.send\"]\n  }\n]\n</code></pre>\n","urlObject":{"protocol":"https","path":["api","v1","send-webhooks"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"3489771d-f636-40a9-993a-200957fc3b26","name":"List Sendable Webhooks","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/send-webhooks"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 59,\n        \"name\": \"Webhook for another service\",\n        \"topics\": [\n            \"object.created\",\n            \"object.updated\",\n            \"object.send\",\n            \"object.deleted\"\n        ]\n    }\n]"}],"_postman_id":"1d0aaed3-3edc-4968-928b-1abada1d61a0"},{"name":"Send to Webhook","id":"96cc6de6-8fa4-455d-8062-c707fb1f652d","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"objectType\": \"{{objectType}}\",\n  \"objectId\": \"{{objectId}}\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/send-webhooks/","description":"<h3 id=\"send-to-webhook\">Send to Webhook</h3>\n<p>Sends one object, or a list query, to a sendable webhook. This is what a \"send to webhook\" button in the app does.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>webhookId</code>: a webhook from <strong>List Sendable Webhooks</strong>.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<p>To send an object (the webhook must subscribe to <code>object.send</code>):</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"objectType\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n  \"objectId\": \"67a279056c513a164e0ca94e\"\n}\n</code></pre>\n<p>To send a query (the webhook must subscribe to <code>query.send</code>):</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"objectType\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n  \"query\": { \"status\": \"New\" }\n}\n</code></pre>\n<ul>\n<li><code>objectType</code> (required): the object type's UUID.</li>\n<li><code>objectId</code>: the object to send. You need permission to <strong>update</strong> the object, not just view it.</li>\n<li><code>query</code>: any JSON object. It is passed through to the webhook unchanged as <code>data.query</code>; Engine Awesome doesn't run it. You need permission to view objects of the type.</li>\n</ul>\n<p>The webhook receives the <code>object.send</code> or <code>query.send</code> payload described in the folder description, including <code>data.user</code>: who sent it.</p>\n<p>The delivery happens during this request, so the response comes after your webhook endpoint has answered.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<p>If the body has neither a matching <code>objectId</code> nor <code>query</code> for the webhook's topics, nothing is sent and you still get <code>204</code>.</p>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you don't have permission to update the object, or to view objects of the type.</li>\n<li><code>404</code>: the webhook isn't sendable, or the object type or object doesn't exist on this team.</li>\n<li><code>422</code>: <code>objectType</code> is missing or not a UUID.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","send-webhooks",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"0f68a823-067d-43b2-a607-c2e5435c93d0","name":"Send to Webhook","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"objectType\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n  \"objectId\": \"67a279056c513a164e0ca94e\"\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/send-webhooks/59"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"96cc6de6-8fa4-455d-8062-c707fb1f652d"}],"id":"af3b3cec-e24a-4c27-9446-c6cab0a6cdfd","description":"<p><a href=\"https://docs.engineawesome.com/settings/api-access/\">Webhooks</a> allow third-party applications to monitor and respond to changes occurring within Engine Awesome in real time. By setting up a webhook, you can receive notifications when specific events happen, such as updates to objects or changes in system data. This allows external systems to stay in sync with your Engine Awesome application, enabling automated workflows, integrations, and timely responses to key changes.</p>\n<p>Only Owners can create, view, update and delete webhooks, and your plan may limit how many you can have.</p>\n<h3 id=\"topics\">Topics</h3>\n<ul>\n<li><code>object.created</code>: an object was created (or a new, empty object got its first value).</li>\n<li><code>object.updated</code>: an object was updated or restored from the trash.</li>\n<li><code>object.deleted</code>: an object was moved to the trash or permanently deleted.</li>\n<li><code>object.send</code>: someone sent a single object to this webhook, using a \"send to webhook\" button in the app or <strong>Send to Webhook</strong>.</li>\n<li><code>query.send</code>: someone sent a list query to this webhook.</li>\n</ul>\n<h3 id=\"payload\">Payload</h3>\n<p>Each delivery is a <code>POST</code> with a JSON body:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"topic\": \"object.updated\",\n  \"created\": \"2025-02-08T23:36:51+00:00\",\n  \"data\": {\n    \"object\": { \"_id\": \"67a279056c513a164e0ca94e\", \"first_name\": \"Steve\", \"...\": \"...\" },\n    \"objectType\": { \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\", \"name\": \"Contacts\" },\n    \"changes\": { \"status\": \"New\" }\n  }\n}\n</code></pre>\n<ul>\n<li><code>data.object</code> has the shape described under <strong>Object by ID</strong>. It is built with the permissions of the user who created the webhook, so fields they can't view are left out.</li>\n<li><code>data.changes</code> (<code>object.updated</code> only): the <strong>previous</strong> values of the fields that changed, keyed by field slug. The new values are in <code>data.object</code>.</li>\n<li><code>object.deleted</code> also has <code>data.objectId</code>.</li>\n<li><code>object.send</code> and <code>query.send</code> have <code>data.user</code> (the <code>id</code>, <code>email</code> and <code>name</code> of the person who sent it). <code>query.send</code> has <code>data.query</code> instead of <code>data.object</code>.</li>\n</ul>\n<h3 id=\"verifying-deliveries\">Verifying Deliveries</h3>\n<p>Every delivery has an <code>X-Webhook-Signature</code> header: the HMAC-SHA256 of the raw request body, hex-encoded, using the webhook's <code>signing_key</code> as the key. Compute the same value and compare it to confirm the request came from Engine Awesome.</p>\n<h3 id=\"retries-and-failures\">Retries and Failures</h3>\n<ul>\n<li>Your endpoint must respond with a <code>2xx</code> status within <strong>3 seconds</strong>.</li>\n<li>A failed delivery is tried up to 3 times in total, waiting longer before each retry.</li>\n<li>When every attempt fails, the webhook's <code>fail_count</code> goes up and <code>last_failed_at</code> is set. A successful delivery resets <code>fail_count</code> to 0 and sets <code>last_sent_at</code>.</li>\n<li>After <strong>6 failed deliveries in a row</strong>, the webhook's <code>status</code> changes to <code>stopped</code> and it stops sending. Set it back to <code>active</code> once your endpoint is fixed.</li>\n<li>If your endpoint responds with <strong><code>410 Gone</code></strong>, the webhook is deleted.</li>\n</ul>\n","_postman_id":"af3b3cec-e24a-4c27-9446-c6cab0a6cdfd","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Access Tokens","item":[{"name":"Access Tokens","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"6c700a6c-161d-4e7b-a169-889b9b174727"}}],"id":"4017875b-b78f-4ea5-a9b5-c160fcc306ce","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/me/access-tokens","description":"<h3 id=\"list-your-access-tokens\">List Your Access Tokens</h3>\n<p>Returns every access token that belongs to you (the user making the request), oldest first. You can't see other users' tokens.</p>\n<p>The token values themselves are never returned. You only see a token once, when you create it.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array of tokens. Each has:</p>\n<ul>\n<li><code>id</code>: the token's ID. The first part of the token, before the <code>|</code>, is also its ID.</li>\n<li><code>name</code>: the token's name.</li>\n<li><code>abilities</code>: what the token is allowed to do. See <strong>Create Token</strong>.</li>\n<li><code>last_used_at</code>: when the token was last used, or <code>null</code>.</li>\n<li><code>created_at</code>, <code>updated_at</code>: ISO 8601 timestamps.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","me","access-tokens"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"085dc3b9-dde1-48fe-9c3b-40b2cd841417","name":"Access Tokens","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/me/access-tokens"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:38:01 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=23.882865905762, database;desc=\"Database\";dur=45.14, app;desc=\"App\";dur=63, total;desc=\"Total\";dur=87.023019790649,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": 3,\n        \"name\": \"Zapier\",\n        \"abilities\": [\n            \"object:read\",\n            \"object-type:read\",\n            \"view:read\",\n            \"object-type:create\",\n            \"object-type:update\",\n            \"object:delete\",\n            \"object-type:delete\",\n            \"object:create\",\n            \"object:update\",\n            \"view:create\",\n            \"view:update\"\n        ],\n        \"last_used_at\": \"2022-09-27T19:55:34.000000Z\",\n        \"created_at\": \"2022-09-27T19:37:18.000000Z\",\n        \"updated_at\": \"2022-09-27T19:55:34.000000Z\"\n    },\n    {\n        \"id\": 6,\n        \"name\": \"Zapier 2\",\n        \"abilities\": [\n            \"object:read\",\n            \"object-type:read\",\n            \"view:read\",\n            \"object-type:create\",\n            \"object-type:update\",\n            \"object:delete\",\n            \"object:create\",\n            \"object:update\",\n            \"object-type:delete\"\n        ],\n        \"last_used_at\": \"2025-01-23T12:03:33.000000Z\",\n        \"created_at\": \"2022-10-04T13:52:39.000000Z\",\n        \"updated_at\": \"2025-01-23T12:03:33.000000Z\"\n    }\n]"}],"_postman_id":"4017875b-b78f-4ea5-a9b5-c160fcc306ce"},{"name":"Create Token","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"c3402c7a-4c52-490d-8654-3c8114e1b8ca"}}],"id":"ec8c1eef-9bf3-4b67-b344-a648d2b93e2d","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"name\": \"My New Token\",\n\t\"abilities\": [\"object:read\", \"object-type:read\", \"view:read\"]\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/me/access-tokens","description":"<h3 id=\"create-an-access-token\">Create an Access Token</h3>\n<p>Creates an access token for your user. Use it as a bearer token: <code>Authorization: Bearer &lt;plaintext&gt;</code>.</p>\n<p>Your email address must be verified, and at least one of your teams must be on a plan that includes API access.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"name\": \"My New Token\",\n  \"abilities\": [\"object:read\", \"object-type:read\", \"view:read\"]\n}\n</code></pre>\n<ul>\n<li><code>name</code> (required): a name to recognise the token by.</li>\n<li><code>abilities</code> (required): at least one ability. See below.</li>\n</ul>\n<h4 id=\"abilities\">Abilities</h4>\n<p>A token can never do more than its user's team role allows. Its abilities restrict it further: a request is only allowed if the user's role <strong>and</strong> the token both have the permission. Valid abilities:</p>\n<ul>\n<li><strong>Objects:</strong> <code>object:read</code>, <code>object:create</code>, <code>object:update</code>, <code>object:delete</code>, <code>object:force-delete</code>, <code>upload</code></li>\n<li><strong>Object types:</strong> <code>object-type:read</code>, <code>object-type:create</code>, <code>object-type:update</code>, <code>object-type:delete</code>, <code>object-type:force-delete</code></li>\n<li><strong>Views (pages and layouts):</strong> <code>view:read</code>, <code>view:create</code>, <code>view:update</code>, <code>view:delete</code>, <code>view:force-delete</code></li>\n<li><strong>Forms:</strong> <code>form:read</code>, <code>form:create</code>, <code>form:update</code>, <code>form:delete</code>, <code>form:force-delete</code></li>\n<li><strong>Webhooks:</strong> <code>webhook:read</code>, <code>webhook:create</code>, <code>webhook:update</code>, <code>webhook:delete</code>, <code>webhook:force-delete</code></li>\n<li><strong>Integrations:</strong> <code>integration:read</code>, <code>integration:create</code>, <code>integration:update</code>, <code>integration:delete</code>, <code>integration:force-delete</code></li>\n<li><strong>Team:</strong> <code>team:update</code>, <code>team:manage-members</code>, <code>team:manage-appearance</code>, <code>team:billing</code>, <code>team:import</code></li>\n<li><strong>Backups and logs:</strong> <code>backup:read</code>, <code>backup:create</code>, <code>backup:restore</code>, <code>audit-log:read</code>, <code>maintenance:enable</code></li>\n</ul>\n<p>A token belongs to a user, not a team. It works on every team the user belongs to, with the user's role on each team.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the token's properties (see <strong>List Your Access Tokens</strong>) plus <code>plaintext</code>, the token itself. <strong>This is the only time <code>plaintext</code> is returned.</strong> Store it securely.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: your email address isn't verified, or none of your teams' plans include API access.</li>\n<li><code>422</code>: <code>name</code> or <code>abilities</code> is missing, or an ability isn't valid.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","me","access-tokens"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"0ee2fa90-19ac-402f-a99f-4df09165c123","name":"Create Token","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"name\": \"My New Token\",\n\t\"abilities\": [\"object:read\", \"object-type:read\", \"view:read\"]\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/me/access-tokens"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:46:09 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"598"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=18.238067626953, database;desc=\"Database\";dur=38.88, app;desc=\"App\";dur=57, total;desc=\"Total\";dur=75.474977493286,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 37,\n    \"name\": \"My New Token\",\n    \"abilities\": [\n        \"object:read\",\n        \"object-type:read\",\n        \"view:read\"\n    ],\n    \"last_used_at\": null,\n    \"created_at\": \"2025-02-09T01:46:09.000000Z\",\n    \"updated_at\": \"2025-02-09T01:46:09.000000Z\",\n    \"plaintext\": \"37|CMsb0OCSwUNa31OweLrkZLhMKWkrVnCxkdz4OKJh0e634ec7\"\n}"}],"_postman_id":"ec8c1eef-9bf3-4b67-b344-a648d2b93e2d"},{"name":"Single Access Token","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"fed67b55-ce8c-4b75-8864-8422a37a4fbd"}}],"id":"4862f72d-d51b-4df1-8837-530947e1a46d","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/me/access-tokens/","description":"<h3 id=\"get-an-access-token\">Get an Access Token</h3>\n<p>Returns one of your access tokens by ID. The token value itself is not returned.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>accessTokenId</code>: the token's ID.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>id</code>: the token's ID. The first part of the token, before the <code>|</code>, is also its ID.</li>\n<li><code>name</code>: the token's name.</li>\n<li><code>abilities</code>: what the token is allowed to do. See <strong>Create Token</strong>.</li>\n<li><code>last_used_at</code>: when the token was last used, or <code>null</code>.</li>\n<li><code>created_at</code>, <code>updated_at</code>: ISO 8601 timestamps.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: the token belongs to another user.</li>\n<li><code>404</code>: no token with that ID exists.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","me","access-tokens",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"116a907f-a5dc-489d-84ee-0426b5e7bb22","name":"Single Access Token","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/me/access-tokens/37"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:49:25 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"596"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=17.781972885132, database;desc=\"Database\";dur=38.95, app;desc=\"App\";dur=55, total;desc=\"Total\";dur=72.937965393066,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 37,\n    \"name\": \"My New Token\",\n    \"abilities\": [\n        \"object:read\",\n        \"object-type:read\",\n        \"view:read\"\n    ],\n    \"last_used_at\": null,\n    \"created_at\": \"2025-02-09T01:46:09.000000Z\",\n    \"updated_at\": \"2025-02-09T01:46:09.000000Z\"\n}"}],"_postman_id":"4862f72d-d51b-4df1-8837-530947e1a46d"},{"name":"Update Token","id":"8203138b-4183-4ba6-ad69-4f0b9a799b2c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"My Renamed Token\",\n  \"abilities\": [\"object:read\", \"object-type:read\", \"view:read\"]\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/me/access-tokens/","description":"<h3 id=\"update-an-access-token\">Update an Access Token</h3>\n<p>Renames one of your access tokens or changes its abilities. The token value stays the same.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>accessTokenId</code>: the token's ID.</li>\n</ul>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>name</code> (optional): a new name.</li>\n<li><code>abilities</code> (optional): the new list of abilities. It replaces the current list. See <strong>Create Token</strong> for valid values.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the updated token, as in <strong>Get an Access Token</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: the token belongs to another user.</li>\n<li><code>404</code>: no token with that ID exists.</li>\n<li><code>422</code>: <code>abilities</code> is empty, or an ability isn't valid.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","me","access-tokens",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"ebe55523-c2dc-4847-8a3e-1b4a40dedf78","name":"Update Token","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"My Renamed Token\",\n  \"abilities\": [\"object:read\", \"object-type:read\", \"view:read\"]\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/me/access-tokens/37"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 37,\n    \"name\": \"My Renamed Token\",\n    \"abilities\": [\n        \"object:read\",\n        \"object-type:read\",\n        \"view:read\"\n    ],\n    \"last_used_at\": null,\n    \"created_at\": \"2025-02-09T01:46:09.000000Z\",\n    \"updated_at\": \"2025-02-09T03:30:00.000000Z\"\n}"}],"_postman_id":"8203138b-4183-4ba6-ad69-4f0b9a799b2c"},{"name":"Delete Token","id":"53106074-995e-4537-bd0f-7c94c83f16ed","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/me/access-tokens/","description":"<h3 id=\"delete-an-access-token\">Delete an Access Token</h3>\n<p>Revokes one of your access tokens. Requests that use it fail from then on.</p>\n<p>You can use a token to delete itself.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>accessTokenId</code>: the token's ID.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>204 No Content</code>, with an empty body.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: the token belongs to another user.</li>\n<li><code>404</code>: no token with that ID exists.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","me","access-tokens",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"397e32f2-bb31-45ce-9f72-4c8b1c5ed556","name":"Delete Token","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/me/access-tokens/37"},"status":"No Content","code":204,"_postman_previewlanguage":"plain","header":[{"key":"server","value":"nginx"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":""}],"_postman_id":"53106074-995e-4537-bd0f-7c94c83f16ed"}],"id":"480f821a-332e-4b22-bd06-8c784280deaa","description":"<p><a href=\"https://docs.engineawesome.com/settings/api-access/\">Access tokens</a> in Engine Awesome are used to authenticate and authorize external applications to interact with your account through the API. Each token grants specific permissions, referred to as <strong>abilities</strong>, which define what actions the application can perform within Engine Awesome (e.g., read, create, update, delete objects).</p>\n<p>Access tokens are typically used for integrations with third-party services, such as automation tools, CRMs, or custom applications, allowing them to communicate with Engine Awesome without exposing sensitive credentials.</p>\n","_postman_id":"480f821a-332e-4b22-bd06-8c784280deaa","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"My Information (Access Token Creator)","item":[{"name":"Me","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"138b9c54-15d8-47ae-838d-b1c07b51faa0"}}],"id":"1ddce4b4-487c-4eb1-bb61-5e6144b1d6bf","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/me","description":"<h3 id=\"get-the-current-user\">Get the Current User</h3>\n<p>Returns the user the access token belongs to. Use it to check which user and email address a token acts as.</p>\n<p>This endpoint works even while the team is in maintenance mode.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>id</code>, <code>name</code>, <code>email</code></li>\n<li><code>email_verified</code>: whether the email address is verified. Some endpoints, such as uploads and creating tokens, need a verified address.</li>\n<li><code>preferences</code>: the user's app preferences, as a JSON object. <code>{}</code> if none are set.</li>\n<li><code>chaport_id</code>: used by the in-app support chat.</li>\n<li><code>created_at</code>, <code>updated_at</code>: ISO 8601 timestamps.</li>\n<li><code>_links.icon[0].href</code>: the profile photo URL.</li>\n<li><code>_links.alternate[0].href</code>: the profile page in the app.</li>\n<li><code>_links.logout[0].href</code>: the app's logout URL.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","me"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"92cab4cb-1246-48cd-9f44-c0c45fb5508e","name":"Me","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/me"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:51:32 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"597"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=16.814231872559, database;desc=\"Database\";dur=33.75, app;desc=\"App\";dur=49, total;desc=\"Total\";dur=65.852165222168,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"name\": \"Steve Bruner\",\n    \"email\": \"sbruner@engineawesome.com\",\n    \"preferences\": {\n        \"awesome/edit-form\": {\n            \"isComplementaryAreaVisible\": true\n        },\n        \"_modified\": \"2025-02-07T02:00:09.029Z\",\n        \"core\": {\n            \"isInspectorControlsTabsHintVisible\": false\n        }\n    },\n    \"chaport_id\": \"3a36eca1-c1f5-42f1-9adf-f1e24ba1a8ec\",\n    \"created_at\": \"2022-08-19T19:49:28.000000Z\",\n    \"updated_at\": \"2025-02-07T02:00:09.000000Z\",\n    \"_links\": {\n        \"icon\": [\n            {\n                \"href\": \"https://ui-avatars.com/api/?name=S+B&color=7F9CF5&background=EBF4FF\"\n            }\n        ],\n        \"alternate\": [\n            {\n                \"href\": \"https://engineawesome.app/user/profile\"\n            }\n        ],\n        \"logout\": [\n            {\n                \"href\": \"https://engineawesome.app/logout\"\n            }\n        ]\n    }\n}"}],"_postman_id":"1ddce4b4-487c-4eb1-bb61-5e6144b1d6bf"},{"name":"Current Team","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"cb906f79-a369-4593-8786-838c16fb4d29"}}],"id":"89f07bc4-6795-40e7-943b-8b25b72652a7","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/team","description":"<h3 id=\"get-the-current-team\">Get the Current Team</h3>\n<p>Returns the team whose subdomain you called, as seen by the current user.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>name</code>: the team's name.</li>\n<li><code>slug</code>: the team's subdomain, as in <code>https://{slug}.engineawesome.app</code>.</li>\n<li><code>roles</code>: your app's custom roles, each with <code>name</code> and <code>slug</code>, if it has any. These are the values <code>app_role</code> accepts on Team Members.</li>\n<li><code>role</code>: your team role on this team, such as <code>owner</code> or <code>editor</code>. See <strong>Add Team Member</strong> for the list.</li>\n<li><code>maintenance.scopes</code>: the areas currently in maintenance mode, or <code>[]</code>. See <strong>Maintenance Mode</strong>.</li>\n<li><code>maintenance.enabled_by</code>, <code>maintenance.enabled_at</code>: who turned maintenance mode on and when, or <code>null</code>.</li>\n<li><code>_links.self[0]</code>: this endpoint, with <code>targetHints.allow</code> showing whether you can update the team.</li>\n<li><code>_links[\"awesome:dashboard\"][0].href</code>: the team's dashboard in the app.</li>\n<li><code>_links[\"awesome:api\"][0].href</code>: the team's API base URL.</li>\n</ul>\n<h4 id=\"response-headers\">Response Headers</h4>\n<ul>\n<li><code>Allow</code>: includes <code>PUT</code> when you are allowed to update the team.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","team"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"c9b2653f-7494-4ce8-b4a9-3851903b84ee","name":"Current Team","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/team"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 01:57:17 GMT"},{"key":"allow","value":"GET"},{"key":"allow","value":"PUT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=16.937971115112, database;desc=\"Database\";dur=30.05, app;desc=\"App\";dur=44, total;desc=\"Total\";dur=60.993909835815,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"name\": \"Dunder Mifflin\",\n    \"slug\": \"dundermifflin\",\n    \"roles\": [],\n    \"role\": \"owner\",\n    \"_links\": {\n        \"self\": [\n            {\n                \"href\": \"https://dundermifflin.engineawesome.app/api/v1/team\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ],\n        \"awesome:dashboard\": [\n            {\n                \"href\": \"https://dundermifflin.engineawesome.app/dashboard\"\n            }\n        ],\n        \"awesome:api\": [\n            {\n                \"href\": \"https://dundermifflin.engineawesome.app/api/v1\",\n                \"targetHints\": {\n                    \"allow\": [\n                        \"GET\",\n                        \"PUT\",\n                        \"DELETE\"\n                    ]\n                }\n            }\n        ]\n    }\n}"}],"_postman_id":"89f07bc4-6795-40e7-943b-8b25b72652a7"},{"name":"My Teams","id":"9d5125c3-787b-43dd-b988-a8faac8f46f5","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://engineawesome.app/api/v1/teams","description":"<h3 id=\"list-my-teams\">List My Teams</h3>\n<p>Returns every team the current user belongs to. An access token works on all of them, so this tells you which team subdomains you can call.</p>\n<p><strong>Note:</strong> this endpoint is on the main domain, <code>https://engineawesome.app</code>, not on a team subdomain.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array of teams, each with the same properties as <strong>Get the Current Team</strong>. <code>role</code> is your role on that team.</p>\n","urlObject":{"protocol":"https","path":["api","v1","teams"],"host":["engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"72bd9d5a-b482-4c06-b09f-0f664265f2f7","name":"My Teams","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://engineawesome.app/api/v1/teams"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"name\": \"Dunder Mifflin\",\n        \"slug\": \"dundermifflin\",\n        \"roles\": [],\n        \"role\": \"owner\",\n        \"_links\": {\n            \"self\": [\n                {\n                    \"href\": \"https://dundermifflin.engineawesome.app/api/v1/team\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ],\n            \"awesome:dashboard\": [\n                {\n                    \"href\": \"https://dundermifflin.engineawesome.app/dashboard\"\n                }\n            ],\n            \"awesome:api\": [\n                {\n                    \"href\": \"https://dundermifflin.engineawesome.app/api/v1\",\n                    \"targetHints\": {\n                        \"allow\": [\n                            \"GET\",\n                            \"PUT\",\n                            \"DELETE\"\n                        ]\n                    }\n                }\n            ]\n        },\n        \"maintenance\": {\n            \"scopes\": [],\n            \"enabled_by\": null,\n            \"enabled_at\": null\n        }\n    }\n]"}],"_postman_id":"9d5125c3-787b-43dd-b988-a8faac8f46f5"},{"name":"Update Me","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"34429059-7c6e-4534-97a1-7c2109e13154"}}],"id":"fe5194a4-a50a-4743-928e-8949ac4f5c45","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"name\": \"Steve Bruner\"\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/me","description":"<h3 id=\"update-the-current-user\">Update the Current User</h3>\n<p>Updates the user the access token belongs to. Only these properties can be changed:</p>\n<ul>\n<li><code>name</code></li>\n<li><code>email</code>: must be a valid email address.</li>\n<li><code>preferences</code>: a JSON object. It <strong>replaces</strong> the current preferences completely.</li>\n<li><code>chaport_id</code></li>\n</ul>\n<p>Any other property you send, including <code>id</code> and <code>password</code>, is ignored. Passwords can't be changed through the API.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: the updated user, as in <strong>Get the Current User</strong>.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>422</code>: <code>email</code> isn't a valid address, or a property has the wrong type.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","me"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"94b9bae9-1dcb-4c27-bef8-0fccd11aadbd","name":"Update Me","originalRequest":{"method":"PUT","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n\t\"id\": 2,\n\t\"preferences\": {\n\t\t\"test\": \"value\"\n\t}\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/me"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 02:02:45 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"599"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=18.982887268066, database;desc=\"Database\";dur=30.64, app;desc=\"App\";dur=45, total;desc=\"Total\";dur=64.512014389038,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"id\": 2,\n    \"name\": \"Steve Bruner\",\n    \"email\": \"sbruner@engineawesome.com\",\n    \"preferences\": {\n        \"test\": \"value\"\n    },\n    \"chaport_id\": \"3a36eca1-c1f5-42f1-9adf-f1e24ba1a8ec\",\n    \"created_at\": \"2022-08-19T19:49:28.000000Z\",\n    \"updated_at\": \"2025-02-09T02:02:45.000000Z\",\n    \"_links\": {\n        \"icon\": [\n            {\n                \"href\": \"https://ui-avatars.com/api/?name=S+B&color=7F9CF5&background=EBF4FF\"\n            }\n        ],\n        \"alternate\": [\n            {\n                \"href\": \"https://engineawesome.app/user/profile\"\n            }\n        ],\n        \"logout\": [\n            {\n                \"href\": \"https://engineawesome.app/logout\"\n            }\n        ]\n    }\n}"}],"_postman_id":"fe5194a4-a50a-4743-928e-8949ac4f5c45"}],"id":"2133ce1e-3e67-43ed-b0c8-16ec63eb2579","description":"<p>The <strong>My Information</strong> section provides detailed information about the user who created the access token. This section allows you to retrieve and manage key details related to the user, including personal information and team-related settings.</p>\n","_postman_id":"2133ce1e-3e67-43ed-b0c8-16ec63eb2579","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Themes","item":[{"name":"List Themes","id":"28f689de-cd4a-478d-8849-94f15c881543","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/themes","description":"<h3 id=\"list-themes\">List Themes</h3>\n<p>Returns the themes you can choose for your app. Any team member can call it.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array. Each theme has:</p>\n<ul>\n<li><code>slug</code>: the theme's ID. Use it with <strong>Preview Theme</strong>.</li>\n<li><code>title</code>: the theme's display name.</li>\n<li><code>palette</code>: its colours, each with <code>name</code>, <code>slug</code> and <code>color</code> (a hex value).</li>\n</ul>\n<p>The current themes are <code>lavender</code>, <code>marigold</code>, <code>navy</code>, <code>olive</code>, <code>velvet</code> and <code>whisper</code>.</p>\n","urlObject":{"protocol":"https","path":["api","v1","themes"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"6f034e9f-4ab0-4093-91dc-81063000d401","name":"List Themes","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/themes"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"slug\": \"lavender\",\n        \"title\": \"Lavender\",\n        \"palette\": [\n            {\n                \"color\": \"#F2F0F9\",\n                \"name\": \"Base\",\n                \"slug\": \"base\"\n            },\n            {\n                \"color\": \"#1D1128\",\n                \"name\": \"Contrast\",\n                \"slug\": \"contrast\"\n            },\n            {\n                \"color\": \"#5941A9\",\n                \"name\": \"Primary\",\n                \"slug\": \"primary\"\n            },\n            {\n                \"color\": \"#6D72C3\",\n                \"name\": \"Secondary\",\n                \"slug\": \"secondary\"\n            },\n            {\n                \"color\": \"#EEE2F3\",\n                \"name\": \"Tertiary\",\n                \"slug\": \"tertiary\"\n            }\n        ]\n    },\n    {\n        \"slug\": \"marigold\",\n        \"title\": \"Marigold\",\n        \"palette\": [\n            {\n                \"color\": \"#F6F2EC\",\n                \"name\": \"Base\",\n                \"slug\": \"base\"\n            },\n            {\n                \"color\": \"#21251F\",\n                \"name\": \"Contrast\",\n                \"slug\": \"contrast\"\n            },\n            {\n                \"color\": \"#5B4460\",\n                \"name\": \"Primary\",\n                \"slug\": \"primary\"\n            },\n            {\n                \"color\": \"#BF892F\",\n                \"name\": \"Secondary\",\n                \"slug\": \"secondary\"\n            },\n            {\n                \"color\": \"#FFF3F7\",\n                \"name\": \"Tertiary\",\n                \"slug\": \"tertiary\"\n            }\n        ]\n    },\n    {\n        \"slug\": \"navy\",\n        \"title\": \"Navy\",\n        \"palette\": [\n            {\n                \"color\": \"#FFFFFF\",\n                \"name\": \"Base\",\n                \"slug\": \"base\"\n            },\n            {\n                \"color\": \"#02223B\",\n                \"name\": \"Contrast\",\n                \"slug\": \"contrast\"\n            },\n            {\n                \"color\": \"#004385\",\n                \"name\": \"Primary\",\n                \"slug\": \"primary\"\n            },\n            {\n                \"color\": \"#031A6B\",\n                \"name\": \"Secondary\",\n                \"slug\": \"secondary\"\n            },\n            {\n                \"color\": \"#ECF9FE\",\n                \"name\": \"Tertiary\",\n                \"slug\": \"tertiary\"\n            }\n        ]\n    },\n    {\n        \"slug\": \"olive\",\n        \"title\": \"Olive\",\n        \"palette\": [\n            {\n                \"color\": \"#FAFDF6\",\n                \"name\": \"Base\",\n                \"slug\": \"base\"\n            },\n            {\n                \"color\": \"#2D2A32\",\n                \"name\": \"Contrast\",\n                \"slug\": \"contrast\"\n            },\n            {\n                \"color\": \"#3C3A00\",\n                \"name\": \"Primary\",\n                \"slug\": \"primary\"\n            },\n            {\n                \"color\": \"#6D670D\",\n                \"name\": \"Secondary\",\n                \"slug\": \"secondary\"\n            },\n            {\n                \"color\": \"#F5F6CB\",\n                \"name\": \"Tertiary\",\n                \"slug\": \"tertiary\"\n            }\n        ]\n    },\n    {\n        \"slug\": \"velvet\",\n        \"title\": \"Velvet\",\n        \"palette\": [\n            {\n                \"color\": \"#FFFFFF\",\n                \"name\": \"Base\",\n                \"slug\": \"base\"\n            },\n            {\n                \"color\": \"#424B54\",\n                \"name\": \"Contrast\",\n                \"slug\": \"contrast\"\n            },\n            {\n                \"color\": \"#93A8AC\",\n                \"name\": \"Primary\",\n                \"slug\": \"primary\"\n            },\n            {\n                \"color\": \"#9B6A6C\",\n                \"name\": \"Secondary\",\n                \"slug\": \"secondary\"\n            },\n            {\n                \"color\": \"#F9F0F2\",\n                \"name\": \"Tertiary\",\n                \"slug\": \"tertiary\"\n            }\n        ]\n    },\n    {\n        \"slug\": \"whisper\",\n        \"title\": \"Whisper\",\n        \"palette\": [\n            {\n                \"color\": \"#E5E7F2\",\n                \"name\": \"Base\",\n                \"slug\": \"base\"\n            },\n            {\n                \"color\": \"#47484B\",\n                \"name\": \"Contrast\",\n                \"slug\": \"contrast\"\n            },\n            {\n                \"color\": \"#B50B3E\",\n                \"name\": \"Primary\",\n                \"slug\": \"primary\"\n            },\n            {\n                \"color\": \"#0B0033\",\n                \"name\": \"Secondary\",\n                \"slug\": \"secondary\"\n            },\n            {\n                \"color\": \"#F9F9FB\",\n                \"name\": \"Tertiary\",\n                \"slug\": \"tertiary\"\n            }\n        ]\n    }\n]"}],"_postman_id":"28f689de-cd4a-478d-8849-94f15c881543"},{"name":"Preview Theme","event":[{"listen":"test","script":{"exec":[""],"type":"text/javascript","packages":{},"id":"56a69abf-ad38-4dcc-bd1c-bdd4698cce99"}}],"id":"c901bad5-f16b-4bc4-9b8f-f769a0a12b71","protocolProfileBehavior":{"followRedirects":true,"disableUrlEncoding":false,"disableCookies":false,"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/preview-theme/","description":"<h3 id=\"preview-a-theme\">Preview a Theme</h3>\n<p>Returns the block editor settings and styles for a theme, as the app uses them to preview it. This is mostly useful for building your own preview. It doesn't change your app's theme.</p>\n<p>Any team member can call it.</p>\n<h4 id=\"path-parameters\">Path Parameters</h4>\n<ul>\n<li><code>themeName</code>: a theme <code>slug</code> from <strong>List Themes</strong>. An unknown slug returns the default theme's settings.</li>\n</ul>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>__experimentalFeatures</code>: the block editor settings for the theme, such as colour palettes, font sizes and spacing.</li>\n<li><code>styles</code>: the theme's stylesheets, as an array of objects that each have a <code>css</code> string.</li>\n<li><code>disableCustomSpacingSizes</code>, <code>alignWide</code>: editor flags.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","preview-theme",""],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"d9d2df8f-1e5e-4819-a5ce-c7a10b3f2c5a","name":"Preview Theme","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/preview-theme/whisper"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"vary","value":"Accept-Encoding,Origin"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 02:05:58 GMT"},{"key":"x-ratelimit-limit","value":"600"},{"key":"x-ratelimit-remaining","value":"593"},{"key":"server-timing","value":"bootstrap;desc=\"Bootstrap\";dur=15.728950500488, database;desc=\"Database\";dur=29.3, app;desc=\"App\";dur=47, total;desc=\"Total\";dur=63.17400932312,"},{"key":"x-frame-options","value":"SAMEORIGIN"},{"key":"x-xss-protection","value":"1; mode=block"},{"key":"x-content-type-options","value":"nosniff"},{"key":"content-encoding","value":"gzip"},{"key":"transfer-encoding","value":"chunked"}],"cookie":[],"responseTime":null,"body":"{\n    \"__experimentalFeatures\": {\n        \"appearanceTools\": false,\n        \"border\": {\n            \"color\": true,\n            \"radius\": true,\n            \"style\": true,\n            \"width\": true\n        },\n        \"color\": {\n            \"background\": true,\n            \"custom\": false,\n            \"customDuotone\": false,\n            \"customGradient\": false,\n            \"defaultDuotone\": false,\n            \"defaultGradients\": false,\n            \"defaultPalette\": true,\n            \"duotone\": {\n                \"default\": []\n            },\n            \"gradients\": {\n                \"default\": []\n            },\n            \"link\": true,\n            \"palette\": {\n                \"default\": [\n                    {\n                        \"name\": \"Black\",\n                        \"slug\": \"black\",\n                        \"color\": \"#000000\"\n                    },\n                    {\n                        \"name\": \"White\",\n                        \"slug\": \"white\",\n                        \"color\": \"#ffffff\"\n                    },\n                    {\n                        \"name\": \"Vivid red\",\n                        \"slug\": \"vivid-red\",\n                        \"color\": \"#cf2e2e\"\n                    },\n                    {\n                        \"name\": \"Luminous vivid orange\",\n                        \"slug\": \"luminous-vivid-orange\",\n                        \"color\": \"#ff6900\"\n                    },\n                    {\n                        \"name\": \"Vivid green cyan\",\n                        \"slug\": \"vivid-green-cyan\",\n                        \"color\": \"#00d084\"\n                    },\n                    {\n                        \"name\": \"Vivid cyan blue\",\n                        \"slug\": \"vivid-cyan-blue\",\n                        \"color\": \"#0693e3\"\n                    }\n                ],\n                \"theme\": [\n                    {\n                        \"color\": \"#E5E7F2\",\n                        \"name\": \"Base\",\n                        \"slug\": \"base\"\n                    },\n                    {\n                        \"color\": \"#47484B\",\n                        \"name\": \"Contrast\",\n                        \"slug\": \"contrast\"\n                    },\n                    {\n                        \"color\": \"#B50B3E\",\n                        \"name\": \"Primary\",\n                        \"slug\": \"primary\"\n                    },\n                    {\n                        \"color\": \"#0B0033\",\n                        \"name\": \"Secondary\",\n                        \"slug\": \"secondary\"\n                    },\n                    {\n                        \"color\": \"#F9F9FB\",\n                        \"name\": \"Tertiary\",\n                        \"slug\": \"tertiary\"\n                    }\n                ]\n            },\n            \"text\": true\n        },\n        \"spacing\": {\n            \"defaultSpacingSizes\": true,\n            \"blockGap\": true,\n            \"margin\": true,\n            \"padding\": true,\n            \"customSpacingSize\": false,\n            \"spacingScale\": {\n                \"default\": {\n                    \"operator\": \"*\",\n                    \"increment\": 1.5,\n                    \"steps\": 5,\n                    \"mediumStep\": 1.5,\n                    \"unit\": \"rem\"\n                }\n            },\n            \"units\": [\n                \"px\",\n                \"rem\"\n            ],\n            \"spacingSizes\": {\n                \"default\": [\n                    {\n                        \"name\": \"X-Small\",\n                        \"slug\": \"30\",\n                        \"size\": \"0.67rem\"\n                    },\n                    {\n                        \"name\": \"Small\",\n                        \"slug\": \"40\",\n                        \"size\": \"1rem\"\n                    },\n                    {\n                        \"name\": \"Medium\",\n                        \"slug\": \"50\",\n                        \"size\": \"1.5rem\"\n                    },\n                    {\n                        \"name\": \"Large\",\n                        \"slug\": \"60\",\n                        \"size\": \"2.25rem\"\n                    },\n                    {\n                        \"name\": \"X-Large\",\n                        \"slug\": \"70\",\n                        \"size\": \"3.38rem\"\n                    }\n                ]\n            }\n        },\n        \"dimensions\": {\n            \"minHeight\": true\n        },\n        \"typography\": {\n            \"defaultFontSizes\": true,\n            \"customFontSize\": false,\n            \"dropCap\": false,\n            \"fontSizes\": {\n                \"default\": [\n                    {\n                        \"name\": \"Small\",\n                        \"slug\": \"small\",\n                        \"size\": \"0.8rem\"\n                    },\n                    {\n                        \"name\": \"Medium\",\n                        \"slug\": \"medium\",\n                        \"size\": \"1.0rem\"\n                    },\n                    {\n                        \"name\": \"Large\",\n                        \"slug\": \"large\",\n                        \"size\": \"1.25rem\"\n                    },\n                    {\n                        \"name\": \"Extra-Large\",\n                        \"slug\": \"extra-large\",\n                        \"size\": \"1.563rem\"\n                    },\n                    {\n                        \"name\": \"Extra Extra Large\",\n                        \"slug\": \"extra-extra-large\",\n                        \"size\": \"1.953rem\"\n                    }\n                ]\n            },\n            \"fontStyle\": true,\n            \"fontWeight\": true,\n            \"letterSpacing\": false,\n            \"lineHeight\": true,\n            \"textDecoration\": false,\n            \"textTransform\": false\n        },\n        \"position\": {\n            \"sticky\": true\n        },\n        \"layout\": {\n            \"contentSize\": \"840px\",\n            \"wideSize\": \"1280px\"\n        },\n        \"blocks\": []\n    },\n    \"disableCustomSpacingSizes\": true,\n    \"styles\": [\n        {\n            \"css\": \":root{--wp--preset--color--black: #000000;--wp--preset--color--white: #ffffff;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--base: #E5E7F2;--wp--preset--color--contrast: #47484B;--wp--preset--color--primary: #B50B3E;--wp--preset--color--secondary: #0B0033;--wp--preset--color--tertiary: #F9F9FB;--wp--preset--font-size--small: 0.8rem;--wp--preset--font-size--medium: 1.0rem;--wp--preset--font-size--large: 1.25rem;--wp--preset--font-size--extra-large: 1.563rem;--wp--preset--font-size--extra-extra-large: 1.953rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;}\",\n            \"__unstableType\": \"presets\",\n            \"isGlobalStyles\": true\n        },\n        {\n            \"css\": \".has-black-color{color: var(--wp--preset--color--black) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-base-color{color: var(--wp--preset--color--base) !important;}.has-contrast-color{color: var(--wp--preset--color--contrast) !important;}.has-primary-color{color: var(--wp--preset--color--primary) !important;}.has-secondary-color{color: var(--wp--preset--color--secondary) !important;}.has-tertiary-color{color: var(--wp--preset--color--tertiary) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-base-background-color{background-color: var(--wp--preset--color--base) !important;}.has-contrast-background-color{background-color: var(--wp--preset--color--contrast) !important;}.has-primary-background-color{background-color: var(--wp--preset--color--primary) !important;}.has-secondary-background-color{background-color: var(--wp--preset--color--secondary) !important;}.has-tertiary-background-color{background-color: var(--wp--preset--color--tertiary) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-base-border-color{border-color: var(--wp--preset--color--base) !important;}.has-contrast-border-color{border-color: var(--wp--preset--color--contrast) !important;}.has-primary-border-color{border-color: var(--wp--preset--color--primary) !important;}.has-secondary-border-color{border-color: var(--wp--preset--color--secondary) !important;}.has-tertiary-border-color{border-color: var(--wp--preset--color--tertiary) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-extra-large-font-size{font-size: var(--wp--preset--font-size--extra-large) !important;}.has-extra-extra-large-font-size{font-size: var(--wp--preset--font-size--extra-extra-large) !important;}\",\n            \"__unstableType\": \"presets\",\n            \"isGlobalStyles\": true\n        },\n        {\n            \"css\": \":root { --wp--style--global--content-size: 840px;--wp--style--global--wide-size: 1280px; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.wp-site-blocks) > * { margin-block-start: 24px; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 24px; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 24px;}:root :where(.is-layout-grid){gap: 24px;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{border-color: var(--wp--preset--color--tertiary);border-style: solid;color: var(--wp--preset--color--contrast);}:root :where(.wp-block-awesome-smart-row){font-size: var(--wp--preset--font-size--medium);line-height: 1.2;}:root :where(.wp-block-awesome-dropdown-widget){font-size: var(--wp--preset--font-size--medium);}:root :where(.wp-block-awesome-has-one-relationship-widget){font-size: var(--wp--preset--font-size--medium);}:root :where(.wp-block-awesome-text){border-color: black;border-style: solid;}:root :where(.wp-block-awesome-group){border-color: black;border-style: solid;}:root :where(.wp-block-awesome-table){border-color: black;border-style: solid;}\",\n            \"__unstableType\": \"theme\",\n            \"isGlobalStyles\": true\n        }\n    ],\n    \"alignWide\": true\n}"}],"_postman_id":"c901bad5-f16b-4bc4-9b8f-f769a0a12b71"}],"id":"9471ea1f-c0f2-4038-9bba-dc87500d6f03","description":"<p>In Engine Awesome, <a href=\"https://docs.engineawesome.com/settings/theme/\">Themes</a> control the visual appearance and styling of your application. The theme settings allow you to customize elements such as colors, fonts, and overall design to match your brand or desired look.</p>\n","_postman_id":"9471ea1f-c0f2-4038-9bba-dc87500d6f03","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Maintenance Mode","item":[{"name":"Get Maintenance Mode","id":"f027086c-379b-40e4-bdb6-692369168f47","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/maintenance","description":"<h3 id=\"get-maintenance-mode\">Get Maintenance Mode</h3>\n<p>Returns whether maintenance mode is on, and for which scopes. Any team member can call it.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<ul>\n<li><code>scopes</code>: the areas in maintenance mode: any of <code>app</code>, <code>forms</code> and <code>settings</code>. <code>[]</code> when maintenance mode is off.</li>\n<li><code>enabled_by</code>: the ID of the user who turned it on, or <code>null</code>.</li>\n<li><code>enabled_at</code>: when it was turned on (ISO 8601), or <code>null</code>.</li>\n</ul>\n<p><strong>Get the Current Team</strong> also includes this, under <code>maintenance</code>.</p>\n","urlObject":{"protocol":"https","path":["api","v1","maintenance"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"43d1b3f9-893e-4ee4-b667-8bd96f549ae0","name":"Get Maintenance Mode","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/maintenance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"scopes\": [],\n    \"enabled_by\": null,\n    \"enabled_at\": null\n}"}],"_postman_id":"f027086c-379b-40e4-bdb6-692369168f47"},{"name":"Turn On Maintenance Mode","id":"804e638c-781e-4e54-9642-3109511aeb79","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"scopes\": [\"app\", \"settings\"]\n}","options":{"raw":{"language":"json"}}},"url":"https://{{team_slug}}.engineawesome.app/api/v1/maintenance","description":"<h3 id=\"turn-on-maintenance-mode\">Turn On Maintenance Mode</h3>\n<p>Puts one or more scopes into maintenance mode. Only Owners can do this.</p>\n<p>Calling it while maintenance mode is already on replaces the scopes, and makes you the user who turned it on.</p>\n<h4 id=\"request-body\">Request Body</h4>\n<ul>\n<li><code>scopes</code> (required): at least one of <code>app</code>, <code>forms</code> and <code>settings</code>. See the folder description for what each blocks.</li>\n</ul>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li><p>Status: <code>201 Created</code></p>\n</li>\n<li><p>Body: the new maintenance state:</p>\n</li>\n<li><p><code>scopes</code>: the areas in maintenance mode: any of <code>app</code>, <code>forms</code> and <code>settings</code>. <code>[]</code> when maintenance mode is off.</p>\n</li>\n<li><p><code>enabled_by</code>: the ID of the user who turned it on, or <code>null</code>.</p>\n</li>\n<li><p><code>enabled_at</code>: when it was turned on (ISO 8601), or <code>null</code>.</p>\n</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to turn on maintenance mode.</li>\n<li><code>422</code>: <code>scopes</code> is missing, empty or has an unknown scope.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","maintenance"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"a7f674e2-69a3-4301-bc2f-f4f8acbc01d4","name":"Turn On Maintenance Mode","originalRequest":{"method":"POST","header":[{"key":"Accept","value":"application/json"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"scopes\": [\"app\", \"settings\"]\n}","options":{"raw":{"language":"json"}}},"url":"https://dundermifflin.engineawesome.app/api/v1/maintenance"},"status":"Created","code":201,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"scopes\": [\n        \"app\",\n        \"settings\"\n    ],\n    \"enabled_by\": 2,\n    \"enabled_at\": \"2025-02-09T03:30:00+00:00\"\n}"}],"_postman_id":"804e638c-781e-4e54-9642-3109511aeb79"},{"name":"Turn Off Maintenance Mode","id":"91ff82f2-bc09-4848-aebc-1078113d0d63","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/maintenance","description":"<h3 id=\"turn-off-maintenance-mode\">Turn Off Maintenance Mode</h3>\n<p>Turns maintenance mode off for every scope.</p>\n<p><strong>Only the user who turned maintenance mode on can turn it off.</strong> If you turn it on with an access token, keep that token until you turn it off.</p>\n<h4 id=\"response\">Response</h4>\n<ul>\n<li>Status: <code>200 OK</code></li>\n<li>Body: <code>{\"scopes\": [], \"enabled_by\": null, \"enabled_at\": null}</code></li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't the user who turned maintenance mode on.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","maintenance"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"e9a0dde9-217f-43eb-8180-0e2f643dba0a","name":"Turn Off Maintenance Mode","originalRequest":{"method":"DELETE","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/maintenance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"scopes\": [],\n    \"enabled_by\": null,\n    \"enabled_at\": null\n}"}],"_postman_id":"91ff82f2-bc09-4848-aebc-1078113d0d63"}],"id":"cee1dc74-268b-44e4-af20-d4fc2b3aeef1","description":"<p>Maintenance mode temporarily blocks changes to parts of your team's app, for example while you run a large import or restructure your object types. Turn it on for one or more <strong>scopes</strong>:</p>\n<ul>\n<li><code>app</code>: blocks all requests to the Object endpoints, file uploads, reports, the Zapier fields endpoint and sending to webhooks. Reads are blocked too.</li>\n<li><code>forms</code>: blocks the Forms endpoints.</li>\n<li><code>settings</code>: blocks changes to object types, views, the team, appearance, team members, webhooks, integrations, backups and imports. <code>GET</code> requests still work.</li>\n</ul>\n<p>While a scope is in maintenance, blocked requests return <strong><code>503 Service Unavailable</code></strong> with a <code>Retry-After: 3600</code> header and this body, for everyone, including the user who turned it on:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"code\": \"maintenance_mode\",\n  \"message\": \"This section is currently under maintenance. Please try again later.\",\n  \"data\": {\n    \"scopes\": [\"app\"],\n    \"enabled_by\": 2,\n    \"enabled_at\": \"2025-02-08T23:36:51+00:00\"\n  }\n}\n</code></pre>\n<p>The Maintenance Mode endpoints themselves, and <strong>Get the Current User</strong>, always work.</p>\n","_postman_id":"cee1dc74-268b-44e4-af20-d4fc2b3aeef1","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}},{"name":"Usage and Audit Logs","item":[{"name":"Usage","id":"f1271144-820c-41c8-b1c4-5c5ad92f6cfb","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/usage","description":"<h3 id=\"get-usage\">Get Usage</h3>\n<p>Returns how much of your plan's limits your team is using. Only the team's owner can call it.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"objects\": {\n    \"current\": 1520,\n    \"limit\": 10000,\n    \"by_type\": [\n      { \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\", \"name\": \"Contacts\", \"count\": 1200 }\n    ]\n  },\n  \"file_storage\": { \"current\": 52428800, \"limit\": 1024 },\n  \"form_submissions\": { \"current\": 37, \"limit\": 500 }\n}\n</code></pre>\n<ul>\n<li><code>objects.current</code>: the number of objects on the team. <code>by_type</code> breaks it down by object type, not counting new, empty objects.</li>\n<li><code>file_storage.current</code> is in <strong>bytes</strong>, but <code>file_storage.limit</code> is in <strong>megabytes</strong>.</li>\n<li><code>form_submissions</code>: public form submissions in the current billing period.</li>\n<li>A <code>limit</code> of <code>null</code> means your plan has no limit.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't the team's owner.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","usage"],"host":["{{team_slug}}","engineawesome","app"],"query":[],"variable":[]}},"response":[{"id":"3dd3c311-4dca-4595-bb7c-d62fef1893c5","name":"Usage","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://dundermifflin.engineawesome.app/api/v1/usage"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"}],"cookie":[],"responseTime":null,"body":"{\n    \"objects\": {\n        \"current\": 1520,\n        \"limit\": 10000,\n        \"by_type\": [\n            {\n                \"id\": \"00a5579c-9fc3-4fb6-bb56-89dbf21f862f\",\n                \"name\": \"Companies\",\n                \"count\": 120\n            },\n            {\n                \"id\": \"e92da571-5475-45e8-8758-e96261984537\",\n                \"name\": \"Activities\",\n                \"count\": 200\n            },\n            {\n                \"id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n                \"name\": \"Contacts\",\n                \"count\": 1200\n            }\n        ]\n    },\n    \"file_storage\": {\n        \"current\": 52428800,\n        \"limit\": 1024\n    },\n    \"form_submissions\": {\n        \"current\": 37,\n        \"limit\": 500\n    }\n}"}],"_postman_id":"f1271144-820c-41c8-b1c4-5c5ad92f6cfb"},{"name":"Audit Logs","id":"7ee35fba-d9ee-4284-a378-24635d332b90","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":false},"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"https://{{team_slug}}.engineawesome.app/api/v1/audit-logs","description":"<h3 id=\"list-audit-logs\">List Audit Logs</h3>\n<p>Returns a record of changes to objects on your team, newest first: who created, updated, deleted or restored which object, when, and from where.</p>\n<p>Only Owners can read audit logs, and only on plans that include them. On other plans this endpoint returns <code>404</code>. How far back logs go depends on your plan.</p>\n<h4 id=\"query-parameters\">Query Parameters</h4>\n<ul>\n<li><code>search</code>: an IP address or email address matches exactly. Any other text matches events whose object label contains it.</li>\n<li><code>event_type[]</code>: <code>created</code>, <code>updated</code>, <code>soft_deleted</code> (moved to the trash), <code>force_deleted</code> (permanently deleted) or <code>restored</code>.</li>\n<li><code>object_type_id[]</code>, <code>user_id[]</code>: only events for these object types or by these users.</li>\n<li><code>ip_address</code>: only events from IP addresses that contain this text.</li>\n<li><code>date_from</code>, <code>date_to</code>: only events from the start of <code>date_from</code> to the end of <code>date_to</code>.</li>\n<li><code>page</code>, <code>per_page</code>: pagination. <code>per_page</code> defaults to 20 and can't be more than 100.</li>\n</ul>\n<p>Repeat the <code>[]</code> parameters to pass several values.</p>\n<h4 id=\"csv-export\">CSV Export</h4>\n<p>Send <code>Accept: text/csv</code> instead of <code>application/json</code> to download every matching event as a CSV file, without pagination.</p>\n<h4 id=\"response-body\">Response Body</h4>\n<p>A JSON array of events. Each has:</p>\n<ul>\n<li><code>id</code>: the event's ID.</li>\n<li><code>event_type</code>, <code>event_type_label</code>: what happened, as a key and as readable text.</li>\n<li><code>object_type_id</code>, <code>object_id</code>, <code>object_label</code>: the object it happened to.</li>\n<li><code>user_id</code>, <code>user_name</code>, <code>user_email</code>: who did it.</li>\n<li><code>ip_address</code>, <code>referrer</code>: where the request came from.</li>\n<li><code>via_token</code>: the name of the access token used, or <code>null</code> if the change was made in the app.</li>\n<li><code>form_id</code>: the form, if it came from a public form submission.</li>\n<li><code>fields_edited</code>: the slugs of the fields that were changed (for updates) or filled in (for creates).</li>\n<li><code>created_at</code>: when it happened (ISO 8601).</li>\n</ul>\n<h4 id=\"response-headers\">Response Headers</h4>\n<ul>\n<li><code>X-WP-Total</code>, <code>X-WP-TotalPages</code>: the number of matching events and pages.</li>\n<li><code>Link</code>: <code>rel=\"next\"</code> and <code>rel=\"prev\"</code> URLs, when those pages exist.</li>\n</ul>\n<h4 id=\"errors\">Errors</h4>\n<ul>\n<li><code>403</code>: you aren't allowed to read audit logs.</li>\n<li><code>404</code>: your plan doesn't include audit logs.</li>\n<li><code>422</code>: a filter isn't valid, for example an unknown event type or <code>date_to</code> before <code>date_from</code>.</li>\n</ul>\n","urlObject":{"protocol":"https","path":["api","v1","audit-logs"],"host":["{{team_slug}}","engineawesome","app"],"query":[{"disabled":true,"description":{"content":"<p>An IP address, an email address, or text in the object label.</p>\n","type":"text/plain"},"key":"search","value":"Steve"},{"disabled":true,"description":{"content":"<p>created, updated, soft_deleted, force_deleted or restored. Repeat for several.</p>\n","type":"text/plain"},"key":"event_type[]","value":"updated"},{"disabled":true,"description":{"content":"<p>Only events for this object type. Repeat for several.</p>\n","type":"text/plain"},"key":"object_type_id[]","value":"{{objectType}}"},{"disabled":true,"description":{"content":"<p>Only events by this user. Repeat for several.</p>\n","type":"text/plain"},"key":"user_id[]","value":"2"},{"disabled":true,"description":{"content":"<p>Only events from IP addresses containing this text.</p>\n","type":"text/plain"},"key":"ip_address","value":"203.0.113."},{"disabled":true,"description":{"content":"<p>Only events on or after this day.</p>\n","type":"text/plain"},"key":"date_from","value":"2025-01-01"},{"disabled":true,"description":{"content":"<p>Only events on or before this day.</p>\n","type":"text/plain"},"key":"date_to","value":"2025-01-31"},{"disabled":true,"description":{"content":"<p>Page number.</p>\n","type":"text/plain"},"key":"page","value":"1"},{"disabled":true,"description":{"content":"<p>Events per page. Default 20, maximum 100.</p>\n","type":"text/plain"},"key":"per_page","value":"20"}],"variable":[]}},"response":[{"id":"a5b5962f-628a-4b60-ad56-0f7d6d98975c","name":"Audit Logs","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":{"raw":"https://dundermifflin.engineawesome.app/api/v1/audit-logs","protocol":"https","host":["dundermifflin","engineawesome","app"],"path":["api","v1","audit-logs"],"query":[{"key":"search","value":"Steve","description":"An IP address, an email address, or text in the object label.","disabled":true},{"key":"event_type[]","value":"updated","description":"created, updated, soft_deleted, force_deleted or restored. Repeat for several.","disabled":true},{"key":"object_type_id[]","value":"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5","description":"Only events for this object type. Repeat for several.","disabled":true},{"key":"user_id[]","value":"2","description":"Only events by this user. Repeat for several.","disabled":true},{"key":"ip_address","value":"203.0.113.","description":"Only events from IP addresses containing this text.","disabled":true},{"key":"date_from","value":"2025-01-01","description":"Only events on or after this day.","disabled":true},{"key":"date_to","value":"2025-01-31","description":"Only events on or before this day.","disabled":true},{"key":"page","value":"1","description":"Page number.","disabled":true},{"key":"per_page","value":"20","description":"Events per page. Default 20, maximum 100.","disabled":true}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"server","value":"nginx"},{"key":"content-type","value":"application/json"},{"key":"cache-control","value":"no-cache, private"},{"key":"date","value":"Sun, 09 Feb 2025 03:30:00 GMT"},{"key":"x-wp-total","value":"2"},{"key":"x-wp-totalpages","value":"1"}],"cookie":[],"responseTime":null,"body":"[\n    {\n        \"id\": \"67a8233e9f1c2b0a4d5e6f71\",\n        \"event_type\": \"updated\",\n        \"event_type_label\": \"Updated\",\n        \"object_type_id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n        \"object_id\": \"67a279056c513a164e0ca94e\",\n        \"object_label\": \"Steve Bruner\",\n        \"user_id\": 2,\n        \"user_name\": \"Steve Bruner\",\n        \"user_email\": \"sbruner@engineawesome.com\",\n        \"ip_address\": \"203.0.113.42\",\n        \"fields_edited\": [\n            \"type\"\n        ],\n        \"referrer\": null,\n        \"via_token\": \"My New Token\",\n        \"form_id\": null,\n        \"created_at\": \"2025-02-09T03:12:30+00:00\"\n    },\n    {\n        \"id\": \"67a1f0c29f1c2b0a4d5e6f70\",\n        \"event_type\": \"created\",\n        \"event_type_label\": \"Created\",\n        \"object_type_id\": \"aef3b3cc-31c1-40f5-8ab6-bdb3d8bb47f5\",\n        \"object_id\": \"67a279056c513a164e0ca94e\",\n        \"object_label\": \"Steve Bruner\",\n        \"user_id\": 2,\n        \"user_name\": \"Steve Bruner\",\n        \"user_email\": \"sbruner@engineawesome.com\",\n        \"ip_address\": \"203.0.113.42\",\n        \"fields_edited\": [\n            \"first_name\",\n            \"last_name\",\n            \"email\",\n            \"office_phone\",\n            \"company\",\n            \"type\",\n            \"status\"\n        ],\n        \"referrer\": \"https://dundermifflin.engineawesome.app/\",\n        \"via_token\": null,\n        \"form_id\": null,\n        \"created_at\": \"2025-02-04T20:31:01+00:00\"\n    }\n]"}],"_postman_id":"7ee35fba-d9ee-4284-a378-24635d332b90"}],"id":"b6af78d1-f802-4bc5-8a94-0a0814f2444f","description":"<p>Check how much of your plan your team is using, and who changed what.</p>\n","_postman_id":"b6af78d1-f802-4bc5-8a94-0a0814f2444f","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]},"isInherited":true,"source":{"_postman_id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","id":"52fadd8a-1a00-4a74-b816-ad8ffae0be7b","name":"Engine Awesome","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":"{{token}}"}]}},"event":[{"listen":"prerequest","script":{"type":"text/javascript","packages":{},"exec":[""],"id":"172577e8-cc10-42b3-814b-e1235ca49907"}},{"listen":"test","script":{"type":"text/javascript","packages":{},"exec":[""],"id":"2959d092-0783-4288-8990-9d5a03f07790"}}],"variable":[{"key":"upload_url","value":""},{"key":"upload_key","value":""},{"key":"preview_url","value":""},{"key":"upload_content_type","value":""},{"key":"upload_x_amz_acl","value":""},{"key":"upload_x_amz_meta_team","value":""},{"key":"upload_x_amz_meta_user","value":""},{"key":"upload_host","value":""},{"key":"webhookId","value":"","description":"A webhook ID, from List Webhooks."},{"key":"memberId","value":"","description":"A team member's user ID, from List Team Members."},{"key":"formId","value":"","description":"A form ID, from List Forms."},{"key":"viewId","value":"","description":"A view ID, from List Views."},{"key":"themeName","value":"","description":"A theme slug, such as navy, from List Themes."},{"key":"accessTokenId","value":"","description":"An access token ID, from List Your Access Tokens."},{"key":"date_field_slug","value":"","description":"The slug of a searchable date field, used by the Chart report."}]}