Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
04e8c2a
new ticketsauce actions and source
sergio-eliot-rodriguez Oct 16, 2025
94760df
new ticket components: catches by coderabit
sergio-eliot-rodriguez Oct 17, 2025
46e2542
new ticket components: lint fixes
sergio-eliot-rodriguez Oct 17, 2025
3418247
Update components/ticketsauce/actions/get-orders/get-orders.mjs
GTFalcao Oct 17, 2025
6039bcd
Merge remote-tracking branch 'upstream/master' into ticketsauce-compo…
sergio-eliot-rodriguez Oct 18, 2025
f12bbae
Update components/ticketsauce/actions/get-orders/get-orders.mjs
GTFalcao Oct 17, 2025
74418a1
Merge remote-tracking branch 'upstream/master' into ticketsauce-compo…
sergio-eliot-rodriguez Oct 19, 2025
3e107bc
Merge branch 'ticketsauce-components' of https://github.com/sergio-el…
sergio-eliot-rodriguez Oct 19, 2025
cf31f14
Update components/ticketsauce/actions/get-events/get-events.mjs
sergio-eliot-rodriguez Oct 19, 2025
73f21d3
Update components/ticketsauce/actions/get-events/get-events.mjs
sergio-eliot-rodriguez Oct 19, 2025
1d1cee5
Update components/ticketsauce/actions/get-event-details/get-event-det…
sergio-eliot-rodriguez Oct 19, 2025
7fbf1d0
new ticketsauce actions and source
sergio-eliot-rodriguez Oct 16, 2025
4053425
new ticket components: catches by coderabit
sergio-eliot-rodriguez Oct 17, 2025
38b7217
new ticket components: lint fixes
sergio-eliot-rodriguez Oct 17, 2025
442c587
Update components/ticketsauce/actions/get-orders/get-orders.mjs
GTFalcao Oct 17, 2025
deb15cf
Update components/ticketsauce/actions/get-events/get-events.mjs
sergio-eliot-rodriguez Oct 19, 2025
4d59e81
Update components/ticketsauce/actions/get-events/get-events.mjs
sergio-eliot-rodriguez Oct 19, 2025
59b8e40
Update components/ticketsauce/actions/get-event-details/get-event-det…
sergio-eliot-rodriguez Oct 19, 2025
bd77627
new ticketsauce components: addressing reivew comments by Guilherm
sergio-eliot-rodriguez Oct 19, 2025
92856bc
new ticketsauce components: addressing review comments by Guilherme
sergio-eliot-rodriguez Oct 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import ticketsauce from "../../ticketsauce.app.mjs";

export default {
key: "ticketsauce-get-event-details",
name: "Get Event Details",
description: "Get details for a specified event. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#event-details)",
version: "0.0.1",
type: "action",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: true,
},
props: {
ticketsauce,
partnerId: {
type: "string",
label: "Partner ID",
description: "Including this ID will limit the event selection to the specific partner.",
optional: true,
},
organizationId: {
type: "string",
label: "Organization ID",
description: "Including this ID will limit the event selection to the specific organization.",
optional: true,
},
eventId: {
propDefinition: [
ticketsauce,
"eventId",
(c) => ({
partnerId: c.partnerId,
organizationId: c.organizationId,
}),
],
},
photos: {
type: "string",
label: "Photos",
description: "Whether or not to return the event's photo gallery records.",
optional: true,
default: "0",
options: [
"0",
"1",
],
},
includePerformers: {
type: "boolean",
label: "Include Performers",
description: "Returns any associated performers/artists with the event.",
optional: true,
default: false,
},
},
async run() {
const params = {
photos: this.photos,
include_performers: this.includePerformers,
};

return this.ticketsauce.getEventDetails({
eventId: this.eventId,
params,
});
},
};
104 changes: 104 additions & 0 deletions components/ticketsauce/actions/get-events/get-events.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
import ticketsauce from "../../ticketsauce.app.mjs";

export default {
key: "ticketsauce-get-events",
name: "Get Events",
description: "Get a list of all events owned by the authenticated account. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#list-of-events)",
version: "0.0.1",
type: "action",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: true,
},
props: {
ticketsauce,
partnerId: {
type: "string",
label: "Partner ID",
description: "Including this ID will limit the result set to the specific partner.",
optional: true,
},
organizationId: {
type: "string",
label: "Organization ID",
description: "Including this ID will limit the result set to the specific organization.",
optional: true,
},
startAfter: {
type: "string",
label: "Start After",
description: "Only retrieve events that start AFTER the specified UTC date (format: YYYY-MM-DD).",
optional: true,
},
endBefore: {
type: "string",
label: "End Before",
description: "Only retrieve events that end BEFORE the specified UTC date (format: YYYY-MM-DD).",
optional: true,
},
activeOnly: {
type: "boolean",
label: "Active Only",
description: "Leaving this as true will restrict retrieved events to only 'active' events. Setting to false will allow the retrieval of both active and inactive events.",
optional: true,
default: true,
},
privacyType: {
type: "string",
label: "Privacy Type",
description: "By default, this will restrict events to only those that are public. Changing to 'all' will remove all restriction, or changing to 'unlisted' will make it only pull those events that are set to unlisted.",
optional: true,
default: "public",
options: [
"public",
"all",
"unlisted",
],
},
sortBy: {
type: "string",
label: "Sort By",
description: "Which field to sort by. By default ('date'), will sort events by their start date. Other options are 'name' (event name) or 'city' (the city where the event is located).",
optional: true,
options: [
"date",
"name",
"city",
],
},
sortDir: {
type: "string",
label: "Sort Direction",
description: "Which direction you'd like to sort - either ascending ('asc' - the default) or descending ('desc').",
optional: true,
options: [
"asc",
"desc",
],
},
includePerformers: {
type: "boolean",
label: "Include Performers",
description: "Returns any associated performers/artists with an event",
optional: true,
},
},
async run() {
const params = {
partner_id: this.partnerId,
organization_id: this.organizationId,
start_after: this.startAfter,
end_before: this.endBefore,
active_only: this.activeOnly,
privacy_type: this.privacyType,
sort_by: this.sortBy,
sort_dir: this.sortDir,
include_performers: this.includePerformers,
};

return this.ticketsauce.listEvents({
params,
});
},
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import ticketsauce from "../../ticketsauce.app.mjs";

export default {
key: "ticketsauce-get-order-details",
name: "Get Order Details",
description: "Get details for the specified order. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#order-details)",
version: "0.0.1",
type: "action",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: true,
},
props: {
ticketsauce,
partnerId: {
type: "string",
label: "Partner ID",
description: "Including this ID will limit the event selection to the specific partner.",
optional: true,
},
organizationId: {
type: "string",
label: "Organization ID",
description: "Including this ID will limit the event selection to the specific organization.",
optional: true,
},
eventId: {
propDefinition: [
ticketsauce,
"eventId",
(c) => ({
partnerId: c.partnerId,
organizationId: c.organizationId,
}),
],
},
orderId: {
propDefinition: [
ticketsauce,
"orderId",
(c) => ({
eventId: c.eventId,
}),
],
},
},
async run() {
return this.ticketsauce.getOrderDetails({
orderId: this.orderId,
});
},
};
158 changes: 158 additions & 0 deletions components/ticketsauce/actions/get-orders/get-orders.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
import ticketsauce from "../../ticketsauce.app.mjs";

export default {
key: "ticketsauce-get-orders",
name: "Get Orders",
description: "Get a list of orders from the specified event. [See documentation](https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#orders)",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Use a stable docs URL (avoid query keys in the link).

The speca URL includes a ?key=... parameter that may be temporary. Link to the canonical page to prevent future link rot.


🌐 Web query:

What is the canonical public documentation URL for the Ticketsauce Orders endpoint (without a temporary key parameter)?

💡 Result:

Do you mean the TicketSauce API "Orders" documentation page (their public API docs)? If so, please confirm — I couldn't find a clear canonical Orders-docs URL and will search again once you confirm.


I'll perform a more targeted search to find Ticketsauce's official API documentation structure.

Let me search more specifically for Ticketsauce's official developer documentation.

Let me search specifically for information about speca.io and its URL structure.

Update the URL to remove the temporary query parameter.

The ?key=... parameter is not part of standard Speca.io documentation URLs and should be removed. Speca is an API design and documentation platform, and its canonical URL format is https://speca.io/[owner]/[api-name] without query parameters.

Change the link from:

https://speca.io/ticketsauce/ticketsauce-public-api?key=204000d6bda66da78315e721920f43aa#orders

To:

https://speca.io/ticketsauce/ticketsauce-public-api#orders
🤖 Prompt for AI Agents
components/ticketsauce/actions/get-orders/get-orders.mjs around line 6: the
documentation URL in the description includes a temporary query parameter
(?key=...) which should be removed; update the link to
https://speca.io/ticketsauce/ticketsauce-public-api#orders so it follows the
canonical speca.io format without the query string and retains the #orders
fragment.

version: "0.0.1",
type: "action",
annotations: {
destructiveHint: false,
openWorldHint: true,
readOnlyHint: true,
},
props: {
ticketsauce,
partnerId: {
type: "string",
label: "Partner ID",
description: "Including this ID will limit the event selection to the specific partner.",
optional: true,
},
organizationId: {
type: "string",
label: "Organization ID",
description: "Including this ID will limit the event selection to the specific organization.",
optional: true,
},
eventId: {
propDefinition: [
ticketsauce,
"eventId",
(c) => ({
partnerId: c.partnerId,
organizationId: c.organizationId,
}),
],
},
perPage: {
type: "string",
label: "Per Page",
description: "How many results to retrieve (per page). Max 500.",
optional: true,
default: "100",
},
page: {
type: "string",
label: "Page",
description: "Which page to return. For example, if per_page is 20, and page is 3, the results would show 41-60.",
optional: true,
default: "1",
},
q: {
type: "string",
label: "Search Query",
description: "Exact email address or last name attached to an order.",
optional: true,
},
returnQuestionnaires: {
type: "boolean",
label: "Return Questionnaires",
description: "Whether or not to return the question responses from questionnaires (will include attendee responses as well IF tickets are returned)",
optional: true,
},
returnTickets: {
type: "boolean",
label: "Return Tickets",
description: "Whether or not to return the tickets for each order as well.",
optional: true,
},
returnLineItemFees: {
type: "boolean",
label: "Return Line Item Fees",
description: "Whether or not to return the itemized line item fees for each order (if they exist).",
optional: true,
},
orderedAfter: {
type: "string",
label: "Ordered After",
description: "Only retrieve orders that were ordered AFTER the specified date/time (format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).",
optional: true,
},
orderedBefore: {
type: "string",
label: "Ordered Before",
description: "Only retrieve orders that were ordered BEFORE the specified date/time (format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).",
optional: true,
},
modifiedAfter: {
type: "string",
label: "Modified After",
description: "Only retrieve orders that were modified AFTER the specified date/time (format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).",
optional: true,
},
modifiedBefore: {
type: "string",
label: "Modified Before",
description: "Only retrieve orders that were modified BEFORE the specified date/time (format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS).",
optional: true,
},
sortBy: {
type: "string",
label: "Sort By",
description: "Which field to sort by. By default ('date'), this will sort orders by their ordered date. Or 'name' to order by last name.",
optional: true,
default: "date",
options: [
"date",
"name",
],
},
sortDir: {
type: "string",
label: "Sort Direction",
description: "Which direction you'd like to sort - either ascending ('asc' - the default) or descending ('desc').",
optional: true,
default: "asc",
options: [
"asc",
"desc",
],
},
totalAbove: {
type: "string",
label: "Total Above",
description: "Return only orders who's order total is greater than this value.",
optional: true,
},
totalBelow: {
type: "string",
label: "Total Below",
description: "Return only orders who's order total is less than this value.",
optional: true,
},
},
async run() {
const params = {
per_page: this.perPage,
page: this.page,
q: this.q,
return_questionnaires: this.returnQuestionnaires,
return_tickets: this.returnTickets,
return_line_item_fees: this.returnLineItemFees,
ordered_after: this.orderedAfter,
ordered_before: this.orderedBefore,
modified_after: this.modifiedAfter,
modified_before: this.modifiedBefore,
sort_by: this.sortBy,
sort_dir: this.sortDir,
total_above: this.totalAbove,
total_below: this.totalBelow,
};

return this.ticketsauce.listOrders({
eventId: this.eventId,
params,
});
},
};
Loading
Loading