Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: everyaction-8 Signups API
version: '1.0'
servers:
- url: https://api.securevan.com/v4
security:
- sec0: []
tags:
- name: Signups
paths:
/signups:
get:
summary: /signups
description: 'Use this endpoint to find all of a Person’s Signups (across all Events) or to find all of the Signups for a specific Event.
Either the `eventId` parameter, or the `vanId` parameter, *must* be specified.
If `vanId` is specified but the Person is not accessible, this endpoint will return an error with HTTP Status Code `403 Forbidden`.
If `vanId` is specified but the Person does not exist, this endpoint will return an error with HTTP Status Code `404 Not Found`.
If `eventId` is specified but the Event does not exist, this endpoint will return an error with HTTP Status Code `404 Not Found`.'
operationId: signups-1
parameters:
- name: eventId
in: query
description: Unique identifier for an Event. Required if `vanId` is not specified.
schema:
type: integer
format: int32
- name: vanId
in: query
description: Unique identifier for a Person. Required if `eventId` is not specified.
schema:
type: string
default: '100476252'
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"items\": [\n {\n \"eventSignupId\": 2452,\n \"person\": {\n \"vanId\": 100476252,\n \"firstName\": \"James\",\n \"middleName\": \"Worthington\",\n \"lastName\": \"Gordon\"\n },\n \"event\": {\n \"eventId\": 1370,\n \"name\": \"Neighbors Calling Neighbors\",\n \"shortName\": \"NeighborCall\"\n },\n \"shift\": {\n \"eventShiftId\": 2162,\n \"name\": null\n },\n \"role\": {\n \"roleId\": 111687,\n \"name\": \"Host\"\n },\n \"status\": {\n \"statusId\": 4,\n \"name\": \"Invited\"\n },\n \"location\": {\n \"locationId\": 272,\n \"name\": \"Campaign HQ\",\n \"displayName\": \"Campaign HQ, 48 Grove St Somerville, MA 02144-2500 \"\n },\n \"startTimeOverride\": \"2015-06-01T15:00:00-04:00\",\n \"endTimeOverride\": \"2015-06-01T16:00:00-04:00\",\n }\n ],\n \"nextPageLink\": null,\n \"count\": 1\n}"
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"Error code\",\n \"text\": \"Error description\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: Error code
text:
type: string
example: Error description
'403':
description: '403'
content:
application/json:
examples:
Result:
value: "{\n \"errors\":[\n {\n \"code\":\"FORBIDDEN\"\n \"text\":\"Access to this action is restricted\"\n }\n ]\n}"
'404':
description: '404'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"NOT_FOUND\",\n \"text\": \"The specified resource cannot be found.\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: NOT_FOUND
text:
type: string
example: The specified resource cannot be found.
deprecated: false
tags:
- Signups
post:
summary: /signups
description: 'Use this endpoint to record a Person’s participation at an Event. Because it’s not easy to know whether a Person is already signed up for an Event, this endpoint will create a new Signup only if a Signup with the same Person, Event, Role, and Shift does not already exist. If a Signup does exist, it will override the existing Signup’s Status, Start Time, End Time, and (if specified) Location. A record of this change is displayed in the VAN UI.
When a Signup is created or updated, a canvass response is generated to represent the signup interaction. The *Input Type* is *API*, the *Date Canvassed* is the current date, the *Canvasser* is the API user associated with the current context, and the *Result Code* corresponds to a result most appropriate for the given Status (e.g., *Scheduled* → *Canvassed*). Consult the VAN UI for a detailed mapping.
This endpoint accepts a standard Signup object with simple types and no read-only values specified.
If successful, the endpoint responds with HTTP Status Code `201 Created` (even if it matched and updated an existing Signup) and the integer ID of the created Signup in the response body. It also sets the **Location** header to the location of the newly created Signup.'
operationId: signups-2
requestBody:
content:
application/json:
schema:
type: object
properties:
person:
type: object
properties:
vanId:
type: string
default: '100476252'
event:
type: object
properties:
eventId:
type: integer
default: 1370
format: int32
shift:
type: object
properties:
eventShiftId:
type: integer
default: 2162
format: int32
role:
type: object
properties:
roleId:
type: integer
default: 111687
format: int32
status:
type: object
properties:
statusId:
type: integer
default: 4
format: int32
location:
type: object
properties:
locationId:
type: integer
default: 272
format: int32
responses:
'201':
description: '201'
content:
application/json:
examples:
Result:
value: "{\n \"eventSignupId\": 2452,\n \"person\": {\n \"vanId\": 100476252,\n \"firstName\": \"James\",\n \"middleName\": \"Worthington\",\n \"lastName\": \"Gordon\"\n },\n \"event\": {\n \"eventId\": 1370,\n \"name\": \"Neighbors Calling Neighbors\",\n \"shortName\": \"NeighborCall\"\n },\n \"shift\": {\n \"eventShiftId\": 2162,\n \"name\": null\n },\n \"role\": {\n \"roleId\": 111687,\n \"name\": \"Host\"\n },\n \"status\": {\n \"statusId\": 4,\n \"name\": \"Invited\"\n },\n \"location\": {\n \"locationId\": 272,\n \"name\": \"Campaign HQ\",\n \"displayName\": \"Campaign HQ, 48 Grove St Somerville, MA 02144-2500\"\n },\n \"startTimeOverride\": \"2015-06-01T15:00:00-04:00\",\n \"endTimeOverride\": \"2015-06-01T16:00:00-04:00\"\n}"
schema:
type: object
properties:
eventSignupId:
type: integer
example: 2452
default: 0
person:
type: object
properties:
vanId:
type: integer
example: 100476252
default: 0
firstName:
type: string
example: James
middleName:
type: string
example: Worthington
lastName:
type: string
example: Gordon
event:
type: object
properties:
eventId:
type: integer
example: 1370
default: 0
name:
type: string
example: Neighbors Calling Neighbors
shortName:
type: string
example: NeighborCall
shift:
type: object
properties:
eventShiftId:
type: integer
example: 2162
default: 0
name: {}
role:
type: object
properties:
roleId:
type: integer
example: 111687
default: 0
name:
type: string
example: Host
status:
type: object
properties:
statusId:
type: integer
example: 4
default: 0
name:
type: string
example: Invited
location:
type: object
properties:
locationId:
type: integer
example: 272
default: 0
name:
type: string
example: Campaign HQ
displayName:
type: string
example: Campaign HQ, 48 Grove St Somerville, MA 02144-2500
startTimeOverride:
type: string
example: '2015-06-01T15:00:00-04:00'
endTimeOverride:
type: string
example: '2015-06-01T16:00:00-04:00'
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"Error code\",\n \"text\": \"Error description\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: Error code
text:
type: string
example: Error description
deprecated: false
tags:
- Signups
/signups/statuses:
get:
summary: /signups/statuses
description: 'Use this endpoint to retrieve all valid Signup Statuses for a given Event or for any Event of a given Event Type.
The information returned by this endpoint changes only as frequently as an Event Type changes (which is typically not very often in production). Consider caching the results of this endpoint.'
operationId: signupsstatuses
parameters:
- name: eventId
in: query
description: Filters Statuses to just those available to this Event (based on its Event Type). Required if `eventTypeId` is not specified.
schema:
type: integer
format: int32
- name: eventTypeId
in: query
description: Optional; Filters Statuses to just those available to this Event Type. Required if `eventId` is not specified.
schema:
type: integer
format: int32
default: 143856
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "[\n {\n \"statusId\": 2,\n \"name\": \"Completed\"\n },\n {\n \"statusId\": 11,\n \"name\": \"Confirmed\"\n },\n {\n \"statusId\": 3,\n \"name\": \"Declined\"\n },\n {\n \"statusId\": 4,\n \"name\": \"Invited\"\n },\n {\n \"statusId\": 1,\n \"name\": \"Scheduled\"\n },\n {\n \"statusId\": 15,\n \"name\": \"Walk In\"\n }\n]"
schema:
type: array
items:
type: object
properties:
statusId:
type: integer
example: 2
default: 0
name:
type: string
example: Completed
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"Error code\",\n \"text\": \"Error description\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: Error code
text:
type: string
example: Error description
deprecated: false
tags:
- Signups
/signups/{eventSignupId}:
get:
summary: /signups/{eventSignupId}
description: 'Use this endpoint to retrieve a specific Event Signup.
This endpoint returns a standard Signup object, if found.
If the specified Signup does not exist, this endpoint will return an error with HTTP Status Code `404 Not Found`.'
operationId: signupseventsignupid-1
parameters:
- name: eventSignupId
in: path
description: Required; Unique identifier of an existing event shift
schema:
type: integer
format: int32
default: 2452
required: true
- name: IncludePhoneAndEmail
in: query
description: True / False; By default, phone and email data is not returned.
schema:
type: string
default: 'true'
responses:
'200':
description: '200'
content:
application/json:
examples:
Result:
value: "{\n \"eventSignupId\": 2452,\n \"person\": {\n \"vanId\": 100476252,\n \"firstName\": \"James\",\n \"middleName\": \"Worthington\",\n \"lastName\": \"Gordon\"\n },\n \"event\": {\n \"eventId\": 1370,\n \"name\": \"Neighbors Calling Neighbors\",\n \"shortName\": \"NeighborCall\"\n },\n \"shift\": {\n \"eventShiftId\": 2162,\n \"name\": null\n },\n \"role\": {\n \"roleId\": 111687,\n \"name\": \"Host\"\n },\n \"status\": {\n \"statusId\": 4,\n \"name\": \"Invited\"\n },\n \"location\": {\n \"locationId\": 272,\n \"name\": \"Campaign HQ\",\n \"displayName\": \"Campaign HQ, 48 Grove St Somerville, MA 02144-2500\"\n },\n \"startTimeOverride\": \"2015-06-01T15:00:00-04:00\",\n \"endTimeOverride\": \"2015-06-01T16:00:00-04:00\"\n}"
schema:
type: object
properties:
eventSignupId:
type: integer
example: 2452
default: 0
person:
type: object
properties:
vanId:
type: integer
example: 100476252
default: 0
firstName:
type: string
example: James
middleName:
type: string
example: Worthington
lastName:
type: string
example: Gordon
event:
type: object
properties:
eventId:
type: integer
example: 1370
default: 0
name:
type: string
example: Neighbors Calling Neighbors
shortName:
type: string
example: NeighborCall
shift:
type: object
properties:
eventShiftId:
type: integer
example: 2162
default: 0
name: {}
role:
type: object
properties:
roleId:
type: integer
example: 111687
default: 0
name:
type: string
example: Host
status:
type: object
properties:
statusId:
type: integer
example: 4
default: 0
name:
type: string
example: Invited
location:
type: object
properties:
locationId:
type: integer
example: 272
default: 0
name:
type: string
example: Campaign HQ
displayName:
type: string
example: Campaign HQ, 48 Grove St Somerville, MA 02144-2500
startTimeOverride:
type: string
example: '2015-06-01T15:00:00-04:00'
endTimeOverride:
type: string
example: '2015-06-01T16:00:00-04:00'
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"Error code\",\n \"text\": \"Error description\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: Error code
text:
type: string
example: Error description
'404':
description: '404'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"NOT_FOUND\",\n \"text\": \"The specified resource cannot be found.\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: NOT_FOUND
text:
type: string
example: The specified resource cannot be found.
deprecated: false
tags:
- Signups
put:
summary: /signups/{eventSignupId}
description: 'Use this endpoint to update a specific existing Signup. A record of this change is displayed in the VAN UI.
A Signup’s Event and Person properties are immutable after creation. If you want to sign up a Person for a different Event, first delete the existing Signup and create a new one.
If you do not know the `eventSignupId`, consider using the create or modify endpoint.
When a Signup is updated, a canvass response is generated to represent the signup interaction. The *Input Type* is API, the *Date Canvassed* is the current date, the *Canvasser* is the API user associated with the current context, and the *Result Code* corresponds to a result most appropriate for the given Status (e.g., *Scheduled* → *Canvassed*). Consult the VAN UI for a detailed mapping.'
operationId: signupseventsignupid
parameters:
- name: eventSignupId
in: path
description: Required; Unique identifier of an existing Signup
schema:
type: integer
format: int32
default: 2452
required: true
requestBody:
content:
application/json:
schema:
type: object
properties:
eventSignupId:
type: integer
default: 2452
format: int32
person:
type: object
properties:
vanId:
type: string
default: '100476252'
event:
type: object
properties:
eventId:
type: integer
default: 1370
format: int32
shift:
type: object
properties:
eventShiftId:
type: integer
default: 2162
format: int32
role:
type: object
properties:
roleId:
type: integer
default: 111687
format: int32
status:
type: object
properties:
statusId:
type: integer
default: 4
format: int32
location:
type: object
properties:
locationId:
type: integer
default: 272
format: int32
responses:
'204':
description: '204'
content:
application/json:
examples:
Result:
value: ''
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"Error code\",\n \"text\": \"Error description\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: Error code
text:
type: string
example: Error description
'404':
description: '404'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"NOT_FOUND\",\n \"text\": \"The specified resource cannot be found.\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: NOT_FOUND
text:
type: string
example: The specified resource cannot be found.
deprecated: false
tags:
- Signups
delete:
summary: /signups/{eventSignupId}
description: 'This endpoint deletes an existing Signup. Use with caution as this this action is irreversible and a record of this change is not display in the VAN UI.
Typically it’s more appropriate to update an existing Signup with a Status of Declined or No Show rather than to delete the record entirely.
Deleting a Signup does not delete any canvass responses associated with actions taken on the Signup.
If the specified Signup does not exist, this endpoint will return an error with HTTP Status Code `404 Not Found`.
If successful, the endpoint responds with HTTP Status Code `204 No Content` and an empty response body.'
operationId: signupseventsignupid-2
parameters:
- name: eventSignupId
in: path
description: Required; Unique identifier of an existing Signup
schema:
type: integer
format: int32
default: 2423
required: true
responses:
'204':
description: '204'
content:
application/json:
examples:
Result:
value: ''
'400':
description: '400'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"Error code\",\n \"text\": \"Error description\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: Error code
text:
type: string
example: Error description
'404':
description: '404'
content:
application/json:
examples:
Result:
value: "{\n \"errors\": [\n {\n \"code\": \"NOT_FOUND\",\n \"text\": \"The specified resource cannot be found.\"\n }\n ]\n}"
schema:
type: object
properties:
errors:
type: array
items:
type: object
properties:
code:
type: string
example: NOT_FOUND
text:
type: string
example: The specified resource cannot be found.
deprecated: false
tags:
- Signups
components:
securitySchemes:
sec0:
type: http
scheme: basic
x-readme-fauxas: true
x-provenance:
method: searched
source: https://docs.everyaction.com/reference
harvested: '2026-10-14'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://docs.everyaction.com/reference/activistcodes-activistcodeid.md
- https://docs.everyaction.com/reference/activistcodes.md
- https://docs.everyaction.com/reference/ballotrequesttypes-ballotrequesttypeid.md
- https://docs.everyaction.com/reference/ballotrequesttypes.md
- https://docs.everyaction.com/reference/ballotreturnstatuses-ballotreturnstatusid.md
- https://docs.everyaction.com/reference/ballotreturnstatuses.md
- https://docs.everyaction.com/reference/ballottypes-ballottypeid.md
- https://docs.everyaction.com/reference/ballottypes.md
- https://docs.everyaction.com/reference/bargainingunits-bargainingunitid.md
- https://docs.everyaction.com/reference/bargainingunits.md
- https://docs.everyaction.com/reference/bulkimportjobs-jobid.md
- https://docs.everyaction.com/reference/bulkimportjobs-resources.md
- https://docs.everyaction.com/reference/bulkimportjobs.md
- https://docs.everyaction.com/reference/bulkimportmappingtypes-mappingtypename-fieldname-values.md
- https://docs.everyaction.com/reference/bulkimportmappingtypes-mappingtypename.md
- https://docs.everyaction.com/reference/bulkimportmappingtypes.md
- https://docs.everyaction.com/reference/canvassfilereqeusts-canvassfilerequestid.md
- https://docs.everyaction.com/reference/canvassfilerequests.md
- https://docs.everyaction.com/reference/canvassresponses-contacttypes.md
- https://docs.everyaction.com/reference/canvassresponses-inputtypes.md
- https://docs.everyaction.com/reference/canvassresponses-resultcodes.md
- https://docs.everyaction.com/reference/changedentityexportjobs-changetypes-resourcetype.md
- https://docs.everyaction.com/reference/changedentityexportjobs-exportjobid.md
- https://docs.everyaction.com/reference/changedentityexportjobs-fields-resourcetype.md
- https://docs.everyaction.com/reference/changedentityexportjobs-resources.md
- https://docs.everyaction.com/reference/changedentityexportjobs.md
- https://docs.everyaction.com/reference/codes-batch.md
- https://docs.everyaction.com/reference/codes-codeid.md
- https://docs.everyaction.com/reference/codes-supportedentities.md
- https://docs.everyaction.com/reference/codesextendedsourcecodes.md
- https://docs.everyaction.com/reference/codetypes.md
- https://docs.everyaction.com/reference/commitments-commitmentid.md
- https://docs.everyaction.com/reference/commitments-recurringpayments.md
- https://docs.everyaction.com/reference/commitments.md
- https://docs.everyaction.com/reference/contributions-alternateidtype-alternateid.md
- https://docs.everyaction.com/reference/contributions-attribution-types.md
- https://docs.everyaction.com/reference/contributions-contributionid-adjustments.md
- https://docs.everyaction.com/reference/contributions-contributionid-attributions-vanid.md
- https://docs.everyaction.com/reference/contributions-contributionid.md
- https://docs.everyaction.com/reference/contributions-payments.md
- https://docs.everyaction.com/reference/contributionsrecentcontributions.md
- https://docs.everyaction.com/reference/create-surveyquestion.md
- https://docs.everyaction.com/reference/customfields-customfieldid.md
- https://docs.everyaction.com/reference/customfields.md
- https://docs.everyaction.com/reference/delete-codes-codeid.md
- https://docs.everyaction.com/reference/delete-codes.md
- https://docs.everyaction.com/reference/delete-contributions-contributionid-attributions-vanid.md
- https://docs.everyaction.com/reference/delete-events-eventid.md
- https://docs.everyaction.com/reference/delete-people-vanid-myactivistflags.md
- https://docs.everyaction.com/reference/departments-departmentid.md
- https://docs.everyaction.com/reference/designations-designationid.md
- https://docs.everyaction.com/reference/disbursements-disbursementid.md
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bonterra-fka-everyaction/refs/heads/main/openapi/bonterra-fka-everyaction-signups-api-openapi.yml