swagger: "2.0" info: version: 0.3.0 title: "members" description: "Membership Microservice" termsOfService: "https://salesforcedevops.net/terms/" contact: email: "vern@vernonkeenan.com" license: name: "Proprietary - Copyright (c) 2018-2023 by Vernon Keenan" securityDefinitions: ApiKeyAuth: type: "apiKey" in: "header" name: "X-API-Key" schemes: - "http" basePath: "/v1" host: "members.vernonkeenan.com:8080" consumes: - "application/json" produces: - "application/json" parameters: AttendeeRequest: description: An array of new Attendee records in: body name: attendeeRequest required: true schema: $ref: "#/definitions/AttendeeRequest" CertificateRequest: description: An array of new Certificate records in: body name: certificateRequest required: true schema: $ref: "#/definitions/CertificateRequest" CourseLessonRequest: description: An array of new CourseLesson records in: body name: courselessonRequest required: true schema: $ref: "#/definitions/CourseLessonRequest" clusterIdQuery: description: Record Id of a Cluster in: query name: clusterId required: false type: string ClusterRequest: description: An array of Cluster records in: body name: ClusterRequest required: true schema: $ref: "#/definitions/ClusterRequest" CourseRequest: description: An array of new Course records in: body name: courseRequest required: true schema: $ref: "#/definitions/CourseRequest" CourseSectionRequest: description: An array of new CourseSection records in: body name: coursesectionRequest required: true schema: $ref: "#/definitions/CourseSectionRequest" EnrollmentRequest: description: An array of new Enrollment records in: body name: enrollmentRequest required: true schema: $ref: "#/definitions/EnrollmentRequest" EventCategoryAssignmentRequest: description: An array of new EventCategoryAssignment records in: body name: eventcategoryassignmentRequest required: true schema: $ref: "#/definitions/EventCategoryAssignmentRequest" EventCategoryRequest: description: An array of new EventCategory records in: body name: eventcategoryRequest required: true schema: $ref: "#/definitions/EventCategoryRequest" EventRequest: description: An array of new Event records in: body name: eventRequest required: true schema: $ref: "#/definitions/EventRequest" FavoriteRequest: description: An array of new Favorite records in: body name: favoriteRequest required: true schema: $ref: "#/definitions/FavoriteRequest" InvoiceRequest: description: An array of new Invoice records in: body name: invoiceRequest required: true schema: $ref: "#/definitions/InvoiceRequest" IssuedCertificateRequest: description: An array of new IssuedCertificate records in: body name: issuedcertificateRequest required: true schema: $ref: "#/definitions/IssuedCertificateRequest" LessonProgressRequest: description: An array of new LessonProgress records in: body name: lessonprogressRequest required: true schema: $ref: "#/definitions/LessonProgressRequest" OrderRequest: description: An array of new Order records in: body name: orderRequest required: true schema: $ref: "#/definitions/OrderRequest" PaymentMethodRequest: description: An array of new PaymentMethod records in: body name: paymentmethodRequest required: true schema: $ref: "#/definitions/PaymentMethodRequest" ResearchProjectCompanyRequest: description: An array of new ResearchProjectCompany records in: body name: researchprojectcompanyRequest required: true schema: $ref: "#/definitions/ResearchProjectCompanyRequest" ResearchProjectRequest: description: An array of new ResearchProject records in: body name: researchprojectRequest required: true schema: $ref: "#/definitions/ResearchProjectRequest" ResearchProjectTopicRequest: description: An array of new ResearchProjectTopic records in: body name: researchprojecttopicRequest required: true schema: $ref: "#/definitions/ResearchProjectTopicRequest" templateIdQuery: description: Template ID in: query name: templateId type: string TemplateRequest: description: An array of Template records in: body name: TemplateRequest required: true schema: $ref: "#/definitions/TemplateRequest" tenantIdQuery: description: Record Id of a Tenant in: query name: tenantId required: false type: string tenantRequest: description: An array of Tenant records in: body name: TenantRequest required: true schema: $ref: "#/definitions/TenantRequest" TicketRequest: description: An array of new Ticket records in: body name: ticketRequest required: true schema: $ref: "#/definitions/TicketRequest" TransactionRequest: description: An array of new Transaction records in: body name: transactionRequest required: true schema: $ref: "#/definitions/TransactionRequest" UserRequest: description: An array of User records in: body name: UserRequest required: true schema: $ref: "#/definitions/UserRequest" WebhookClerkRequest: description: An array of new WebhookClerk records in: body name: webhookclerkRequest required: true schema: $ref: "#/definitions/WebhookClerkRequest" activeQuery: description: Retrieve active records only? in: query name: active required: false type: boolean auth0UserIdQuery: description: External Auth0 User ID in: query name: auth0UserId required: false type: string userIdQuery: description: Internal User ID in: query name: userId required: false type: string contactIdQuery: description: Internal Contact ID (links to Account) in: query name: contactId required: false type: string databaseIdQuery: description: Record Id of a Database in: query name: databaseId type: string required: true databaseRequest: description: An array of Database records in: body name: DatabaseRequest required: true schema: $ref: "#/definitions/DatabaseRequest" emailQuery: description: Email address in: query name: email required: false type: string idQuery: description: Unique Record ID in: query name: id required: false type: string objectTypeQuery: description: Object Type Name in: query name: objectType type: string isMasterQuery: description: Is Master Template? in: query name: isMaster type: boolean limitQuery: description: How many objects to return at one time format: int64 in: query name: limit required: false type: integer offsetQuery: description: How many objects to skip? format: int64 in: query name: offset required: false type: integer responses: AccessForbidden: description: Access forbidden, account lacks access headers: Access-Control-Allow-Origin: type: string schema: $ref: "#/definitions/Error" AttendeeResponse: description: Attendee Response Object schema: $ref: "#/definitions/AttendeeResponse" CertificateResponse: description: Certificate Response Object schema: $ref: "#/definitions/CertificateResponse" ClusterResponse: description: Response with Cluster objects schema: $ref: "#/definitions/ClusterResponse" CourseLessonResponse: description: CourseLesson Response Object schema: $ref: "#/definitions/CourseLessonResponse" CourseResponse: description: Course Response Object schema: $ref: "#/definitions/CourseResponse" CourseSectionResponse: description: CourseSection Response Object schema: $ref: "#/definitions/CourseSectionResponse" DatabaseResponse: headers: Access-Control-Allow-Origin: type: string description: Response with Database objects schema: $ref: "#/definitions/DatabaseResponse" EnrollmentResponse: description: Enrollment Response Object schema: $ref: "#/definitions/EnrollmentResponse" EventCategoryAssignmentResponse: description: EventCategoryAssignment Response Object schema: $ref: "#/definitions/EventCategoryAssignmentResponse" EventCategoryResponse: description: EventCategory Response Object schema: $ref: "#/definitions/EventCategoryResponse" EventResponse: description: Event Response Object schema: $ref: "#/definitions/EventResponse" FavoriteResponse: description: Favorite Response Object schema: $ref: "#/definitions/FavoriteResponse" InvoiceResponse: description: Invoice Response Object schema: $ref: "#/definitions/InvoiceResponse" IssuedCertificateResponse: description: IssuedCertificate Response Object schema: $ref: "#/definitions/IssuedCertificateResponse" LessonProgressResponse: description: LessonProgress Response Object schema: $ref: "#/definitions/LessonProgressResponse" NotFound: description: Resource was not found headers: Access-Control-Allow-Origin: type: string schema: $ref: "#/definitions/Error" OrderResponse: description: Order Response Object schema: $ref: "#/definitions/OrderResponse" PaymentMethodResponse: description: PaymentMethod Response Object schema: $ref: "#/definitions/PaymentMethodResponse" ResearchProjectCompanyResponse: description: ResearchProjectCompany Response Object schema: $ref: "#/definitions/ResearchProjectCompanyResponse" ResearchProjectResponse: description: ResearchProject Response Object schema: $ref: "#/definitions/ResearchProjectResponse" ResearchProjectTopicResponse: description: ResearchProjectTopic Response Object schema: $ref: "#/definitions/ResearchProjectTopicResponse" ServerError: description: Server Internal Error headers: Access-Control-Allow-Origin: type: string schema: $ref: "#/definitions/Error" TenantResponse: headers: Access-Control-Allow-Origin: type: string description: Response with Tenant objects schema: $ref: "#/definitions/TenantResponse" TemplateResponse: description: Response with Template objects schema: $ref: "#/definitions/TemplateResponse" TicketResponse: description: Ticket Response Object schema: $ref: "#/definitions/TicketResponse" TransactionResponse: description: Transaction Response Object schema: $ref: "#/definitions/TransactionResponse" Unauthorized: description: Access Unauthorized, invalid API-KEY was used schema: $ref: "#/definitions/Error" UnprocessableEntity: description: Unprocessable Entity, likely a bad parameter schema: $ref: "#/definitions/Error" UserResponse: description: Response with User objects schema: $ref: "#/definitions/UserResponse" WebhookClerkResponse: description: WebhookClerk Response Object schema: $ref: "#/definitions/WebhookClerkResponse" paths: /attendees: delete: operationId: deleteAttendee parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Attendee tags: - Attendees get: operationId: getAttendees parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of Attendees tags: - Attendees post: operationId: createAttendee parameters: - $ref: "#/parameters/AttendeeRequest" responses: "201": description: Created summary: Create a new Attendee tags: - Attendees put: operationId: updateAttendee parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Attendee tags: - Attendees /certificates: delete: operationId: deleteCertificate parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Certificate tags: - Certificates get: operationId: getCertificates parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of Certificates tags: - Certificates post: operationId: createCertificate parameters: - $ref: "#/parameters/CertificateRequest" responses: "201": description: Created summary: Create a new Certificate tags: - Certificates put: operationId: updateCertificate parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Certificate tags: - Certificates /clusters: get: description: Return a list of Cluster records from the datastore operationId: getClusters parameters: - $ref: "#/parameters/clusterIdQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": $ref: "#/responses/ClusterResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Get a list Clusters tags: - Clusters post: description: Create Clusters in Taxnexus operationId: postClusters parameters: - $ref: "#/parameters/ClusterRequest" responses: "200": $ref: "#/responses/ClusterResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Create new Clusters tags: - Clusters put: description: Update Cluster in Taxnexus operationId: putClusters parameters: - $ref: "#/parameters/ClusterRequest" responses: "200": $ref: "#/responses/ClusterResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Update Clustera tags: - Clusters /courselessons: delete: operationId: deleteCourseLesson parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a CourseLesson tags: - CourseLessons get: operationId: getCourseLessons parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of CourseLessons tags: - CourseLessons post: operationId: createCourseLesson parameters: - $ref: "#/parameters/CourseLessonRequest" responses: "201": description: Created summary: Create a new CourseLesson tags: - CourseLessons put: operationId: updateCourseLesson parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing CourseLesson tags: - CourseLessons /courses: delete: operationId: deleteCourse parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Course tags: - Courses get: operationId: getCourses parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of Courses tags: - Courses post: operationId: createCourse parameters: - $ref: "#/parameters/CourseRequest" responses: "201": description: Created summary: Create a new Course tags: - Courses put: operationId: updateCourse parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Course tags: - Courses /coursesections: delete: operationId: deleteCourseSection parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a CourseSection tags: - CourseSections get: operationId: getCourseSections parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of CourseSections tags: - CourseSections post: operationId: createCourseSection parameters: - $ref: "#/parameters/CourseSectionRequest" responses: "201": description: Created summary: Create a new CourseSection tags: - CourseSections put: operationId: updateCourseSection parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing CourseSection tags: - CourseSections /databases: get: description: Return a list of Database records from the datastore operationId: getDatabases parameters: - $ref: "#/parameters/databaseIdQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": $ref: "#/responses/DatabaseResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Get a list Databases tags: - Databases post: description: Create Databases in Taxnexus operationId: postDatabases parameters: - $ref: "#/parameters/databaseRequest" responses: "200": $ref: "#/responses/DatabaseResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Create new Databases tags: - Databases put: description: Update Database in Taxnexus operationId: putDatabases parameters: - $ref: "#/parameters/databaseRequest" responses: "200": $ref: "#/responses/DatabaseResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Update Databases tags: - Databases /enrollments: delete: operationId: deleteEnrollment parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Enrollment tags: - Enrollments get: operationId: getEnrollments parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of Enrollments tags: - Enrollments post: operationId: createEnrollment parameters: - $ref: "#/parameters/EnrollmentRequest" responses: "201": description: Created summary: Create a new Enrollment tags: - Enrollments put: operationId: updateEnrollment parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Enrollment tags: - Enrollments /eventcategories: delete: operationId: deleteEventCategory parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a EventCategory tags: - EventCategories get: operationId: getEventCategorys parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of EventCategories tags: - EventCategories post: operationId: createEventCategory parameters: - $ref: "#/parameters/EventCategoryRequest" responses: "201": description: Created summary: Create a new EventCategory tags: - EventCategories put: operationId: updateEventCategory parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing EventCategory tags: - EventCategories /eventcategoryassignments: delete: operationId: deleteEventCategoryAssignment parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a EventCategoryAssignment tags: - EventCategoryAssignments get: operationId: getEventCategoryAssignments parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of EventCategoryassignments tags: - EventCategoryAssignments post: operationId: createEventCategoryAssignment parameters: - $ref: "#/parameters/EventCategoryAssignmentRequest" responses: "201": description: Created summary: Create a new EventCategoryAssignment tags: - EventCategoryAssignments put: operationId: updateEventCategoryAssignment parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing EventCategoryAssignment tags: - EventCategoryAssignments /events: delete: operationId: deleteEvent parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Event tags: - Events get: operationId: getEvents parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of Events tags: - Events post: operationId: createEvent parameters: - $ref: "#/parameters/EventRequest" responses: "201": description: Created summary: Create a new Event tags: - Events put: operationId: updateEvent parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Event tags: - Events /favorites: delete: operationId: deleteFavorite parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Favorite tags: - Favorites get: operationId: getFavorites parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of Favorites tags: - Favorites post: operationId: createFavorite parameters: - $ref: "#/parameters/FavoriteRequest" responses: "201": description: Created summary: Create a new Favorite tags: - Favorites put: operationId: updateFavorite parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Favorite tags: - Favorites /invoices: delete: operationId: deleteInvoice parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Invoice tags: - Invoices get: operationId: getInvoices parameters: - $ref: "#/parameters/idQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": description: OK summary: Get a list of Invoices tags: - Invoices post: operationId: createInvoice parameters: - $ref: "#/parameters/InvoiceRequest" responses: "201": description: Created summary: Create a new Invoice tags: - Invoices put: operationId: updateInvoice parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Invoice tags: - Invoices /issuedcertificates: delete: operationId: deleteIssuedCertificate parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a IssuedCertificate tags: - IssuedCertificates get: operationId: getIssuedCertificates parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of IssuedCertificates tags: - IssuedCertificates post: operationId: createIssuedCertificate parameters: - $ref: "#/parameters/IssuedCertificateRequest" responses: "201": description: Created summary: Create a new IssuedCertificate tags: - IssuedCertificates put: operationId: updateIssuedCertificate parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing IssuedCertificate tags: - IssuedCertificates /lessonprogress: delete: operationId: deleteLessonProgress parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a LessonProgress tags: - LessonProgress get: operationId: getLessonProgress parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of LessonProgress tags: - LessonProgress post: operationId: createLessonProgress parameters: - $ref: "#/parameters/LessonProgressRequest" responses: "201": description: Created summary: Create a new LessonProgress tags: - LessonProgress put: operationId: updateLessonProgress parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing LessonProgress tags: - LessonProgress /orders: delete: operationId: deleteOrder parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Order tags: - Orders get: operationId: getOrders parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of Orders tags: - Orders post: operationId: createOrder parameters: - $ref: "#/parameters/OrderRequest" responses: "201": description: Created summary: Create a new Order tags: - Orders put: operationId: updateOrder parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Order tags: - Orders /paymentmethods: delete: operationId: deletePaymentMethod parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a PaymentMethod tags: - PaymentMethods get: operationId: getPaymentMethods parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of PaymentMethods tags: - PaymentMethods post: operationId: createPaymentMethod parameters: - $ref: "#/parameters/PaymentMethodRequest" responses: "201": description: Created summary: Create a new PaymentMethod tags: - PaymentMethods put: operationId: updatePaymentMethod parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing PaymentMethod tags: - PaymentMethods /researchprojectcompanys: delete: operationId: deleteResearchProjectCompany parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a ResearchProjectCompany tags: - ResearchProjectCompanies get: operationId: getResearchProjectCompanies parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of ResearchProjectCompanies tags: - ResearchProjectCompanies post: operationId: createResearchProjectCompany parameters: - $ref: "#/parameters/ResearchProjectCompanyRequest" responses: "201": description: Created summary: Create a new ResearchProjectCompany tags: - ResearchProjectCompanies put: operationId: updateResearchProjectCompany parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing ResearchProjectCompany tags: - ResearchProjectCompanies /researchprojects: delete: operationId: deleteResearchProject parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a ResearchProject tags: - ResearchProjects get: operationId: getResearchProjects parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of ResearchProjects tags: - ResearchProjects post: operationId: createResearchProject parameters: - $ref: "#/parameters/ResearchProjectRequest" responses: "201": description: Created summary: Create a new ResearchProject tags: - ResearchProjects put: operationId: updateResearchProject parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing ResearchProject tags: - ResearchProjects /researchprojecttopics: delete: operationId: deleteResearchProjectTopic parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a ResearchProjectTopic tags: - ResearchProjectTopics get: operationId: getResearchProjectTopics parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of ResearchProjectTopics tags: - ResearchProjectTopics post: operationId: createResearchProjectTopic parameters: - $ref: "#/parameters/ResearchProjectTopicRequest" responses: "201": description: Created summary: Create a new ResearchProjectTopic tags: - ResearchProjectTopics put: operationId: updateResearchProjectTopic parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing ResearchProjectTopic tags: - ResearchProjectTopics /tenants: get: description: Return a list of Tenant records from the datastore operationId: getTenants parameters: - $ref: "#/parameters/tenantIdQuery" - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" responses: "200": $ref: "#/responses/TenantResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Get a list Tenants tags: - Tenants post: description: Create Tenants in Taxnexus operationId: postTenants parameters: - $ref: "#/parameters/tenantRequest" responses: "200": $ref: "#/responses/TenantResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Create new Tenants tags: - Tenants put: description: Update Tenant in Taxnexus operationId: putTenants parameters: - $ref: "#/parameters/tenantRequest" responses: "200": $ref: "#/responses/TenantResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Update Tenants tags: - Tenants /templates: get: description: Return a list of Templates from the datastore operationId: getTemplates parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/activeQuery" - $ref: "#/parameters/templateIdQuery" - $ref: "#/parameters/isMasterQuery" - $ref: "#/parameters/objectTypeQuery" responses: "200": $ref: "#/responses/TemplateResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Get a list Templates tags: - Templates post: description: Create new Templates operationId: postTemplates parameters: - $ref: "#/parameters/TemplateRequest" responses: "200": $ref: "#/responses/TemplateResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Create new Templates tags: - Templates /tickets: delete: operationId: deleteTicket parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Ticket tags: - Tickets get: operationId: getTickets parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of Tickets tags: - Tickets post: operationId: createTicket parameters: - $ref: "#/parameters/TicketRequest" responses: "201": description: Created summary: Create a new Ticket tags: - Tickets put: operationId: updateTicket parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Ticket tags: - Tickets /transactions: delete: operationId: deleteTransaction parameters: - $ref: "#/parameters/idQuery" responses: "204": description: No Content summary: Delete a Transaction tags: - Transactions get: operationId: getTransactions parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Get a list of Transactions tags: - Transactions post: operationId: createTransaction parameters: - $ref: "#/parameters/TransactionRequest" responses: "201": description: Created summary: Create a new Transaction tags: - Transactions put: operationId: updateTransaction parameters: - $ref: "#/parameters/idQuery" responses: "200": description: OK summary: Update an existing Transaction tags: - Transactions /users/onboard: post: description: Async onboard new users operationId: postUsersOnboard parameters: - $ref: "#/parameters/UserRequest" responses: "200": $ref: "#/responses/UserResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Async onboard new users tags: - Users /webhooks/clerk: post: description: Clerk webhook operationId: postWebhooksClerk parameters: - $ref: "#/parameters/WebhookClerkRequest" responses: "201": $ref: "#/responses/WebhookClerkResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" summary: Clerk webhook tags: - Webhooks /users: get: description: Return a list of User records from the datastore operationId: getUsers parameters: - $ref: "#/parameters/limitQuery" - $ref: "#/parameters/offsetQuery" - $ref: "#/parameters/emailQuery" - $ref: "#/parameters/auth0UserIdQuery" - $ref: "#/parameters/userIdQuery" - $ref: "#/parameters/contactIdQuery" responses: "200": $ref: "#/responses/UserResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Get a list Users tags: - Users post: description: Create new Users operationId: postUsers parameters: - $ref: "#/parameters/UserRequest" responses: "200": $ref: "#/responses/UserResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Create new Users tags: - Users put: description: Update existing users operationId: putUsers parameters: - $ref: "#/parameters/UserRequest" responses: "200": $ref: "#/responses/UserResponse" "401": $ref: "#/responses/Unauthorized" "403": $ref: "#/responses/AccessForbidden" "404": $ref: "#/responses/NotFound" "422": $ref: "#/responses/UnprocessableEntity" "500": $ref: "#/responses/ServerError" security: - ApiKeyAuth: [] summary: Update existing users tags: - Users definitions: Address: properties: City: description: City type: string Country: description: Country full name type: string CountryCode: description: Country Code type: string PostalCode: description: Postal Code type: string State: description: State full name type: string StateCode: description: State Code type: string Street: description: Street number and name type: string type: object Attendee: properties: CheckinStatus: type: integer CreatedDate: type: string x-nullable: true EventID: type: string ID: type: string LastModifiedDate: type: string x-nullable: true TicketID: type: string UserID: type: string type: object AttendeeRequest: description: An array of Attendee objects properties: Data: items: $ref: "#/definitions/Attendee" type: array type: object AttendeeResponse: description: An array of Attendee objects properties: Data: items: $ref: "#/definitions/Attendee" type: array type: object Certificate: properties: CertificateTemplate: type: string CourseID: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true Description: type: string x-nullable: true ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true Title: type: string type: object CertificateRequest: description: An array of Certificate objects properties: Data: items: $ref: "#/definitions/Certificate" type: array type: object CertificateResponse: description: An array of Certificate objects properties: Data: items: $ref: "#/definitions/Certificate" type: array type: object Cluster: properties: CreatedByID: description: Created By type: string CreatedDate: description: Created Date type: string Description: description: Description type: string Environment: description: Environment type: string Gateway: description: Gateway type: string ID: description: Record Id type: string IPAddress: description: IP Address type: string LastModifiedByID: description: Last Modified By type: string LastModifiedDate: description: Last Modified Date type: string Name: description: Cluster Name type: string OwnerID: description: Owner type: string Ref: description: External Reference type: string Status: description: Status type: string Subnet: description: Subnet type: string TenantID: description: The ID of the tenant who owns this Database type: string Type: description: Type type: string Zone: description: Zone type: string type: object ClusterRequest: properties: Data: items: $ref: "#/definitions/Cluster" type: array type: object ClusterResponse: description: An array of cluster objects properties: Data: items: $ref: "#/definitions/Cluster" type: array Meta: $ref: "#/definitions/ResponseMeta" type: object Course: properties: CreatedByID: type: string CreatedDate: type: string x-nullable: true Description: type: string Fulldescription: type: string ID: type: string InstructorID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true Price: type: number Title: type: string type: object CourseLesson: properties: Content: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true Order: type: integer SectionID: type: string Title: type: string VideoURL: type: string type: object CourseLessonRequest: description: An array of CourseLesson objects properties: Data: items: $ref: "#/definitions/CourseLesson" type: array type: object CourseLessonResponse: description: An array of CourseLesson objects properties: Data: items: $ref: "#/definitions/CourseLesson" type: array type: object CourseRequest: description: An array of Course objects properties: Data: items: $ref: "#/definitions/Course" type: array type: object CourseResponse: description: An array of Course objects properties: Data: items: $ref: "#/definitions/Course" type: array type: object CourseSection: properties: CourseID: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true Description: type: string ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true Order: type: integer Title: type: string type: object CourseSectionRequest: description: An array of CourseSection objects properties: Data: items: $ref: "#/definitions/CourseSection" type: array type: object CourseSectionResponse: description: An array of CourseSection objects properties: Data: items: $ref: "#/definitions/CourseSection" type: array type: object Database: description: A Database provisioned and owned by a Tenant properties: Active: description: Is this database active? type: boolean ClusterID: description: The ID of the Cluster in which this database is deployed type: string CreatedByID: description: Created By type: string CreatedDate: description: Created Date type: string DSN: description: Database connection string type: string DatabaseName: description: The name of the physical database in the cluster type: string ID: description: Record Id type: string LastModifiedByID: description: Last Modified By type: string LastModifiedDate: description: Last Modifed Date type: string Status: description: The current status of this Tenant type: string TenantID: description: The ID of the tenant who owns this Database type: string Type: description: The type of Database (mysql, etc) type: string type: object DatabaseRequest: description: An array of Database objects properties: Data: items: $ref: "#/definitions/Database" type: array type: object DatabaseResponse: description: An array of Database objects properties: Data: items: $ref: "#/definitions/Database" type: array Meta: $ref: "#/definitions/ResponseMeta" type: object Enrollment: properties: Completed: type: integer CourseID: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true EnrollmentDate: type: string ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true UserID: type: string type: object EnrollmentRequest: description: An array of Enrollment objects properties: Data: items: $ref: "#/definitions/Enrollment" type: array type: object EnrollmentResponse: description: An array of Enrollment objects properties: Data: items: $ref: "#/definitions/Enrollment" type: array type: object Error: properties: code: format: int64 type: integer fields: type: string message: type: string type: object Event: properties: Capacity: type: integer x-nullable: true Createdat: type: string x-nullable: true Description: type: string x-nullable: true EndDate: type: string ID: type: string Location: type: string OrganizeruserID: type: string StartDate: type: string Title: type: string UpDatedat: type: string x-nullable: true type: object EventCategory: properties: CreatedDate: type: string x-nullable: true ID: type: string LastModifiedDate: type: string x-nullable: true Name: type: string type: object EventCategoryAssignment: properties: Createdat: type: string x-nullable: true EventCategoryID: type: string EventID: type: string ID: type: string UpDatedat: type: string x-nullable: true type: object EventCategoryAssignmentRequest: description: An array of EventCategoryAssignment objects properties: Data: items: $ref: "#/definitions/EventCategoryAssignment" type: array type: object EventCategoryAssignmentResponse: description: An array of EventCategoryAssignment objects properties: Data: items: $ref: "#/definitions/EventCategoryAssignment" type: array type: object EventCategoryRequest: description: An array of EventCategory objects properties: Data: items: $ref: "#/definitions/EventCategory" type: array type: object EventCategoryResponse: description: An array of EventCategory objects properties: Data: items: $ref: "#/definitions/EventCategory" type: array type: object EventRequest: description: An array of Event objects properties: Data: items: $ref: "#/definitions/Event" type: array type: object EventResponse: description: An array of Event objects properties: Data: items: $ref: "#/definitions/Event" type: array type: object Favorite: properties: CreatedByID: type: string CreatedDate: type: string x-nullable: true Description: type: string FavoriteID: type: string Favoritetype: type: string x-nullable: true ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true Name: type: string Path: type: string TenantID: type: string UserID: type: string type: object FavoriteRequest: description: An array of Favorite objects properties: Data: items: $ref: "#/definitions/Favorite" type: array type: object FavoriteResponse: description: An array of Favorite objects properties: Data: items: $ref: "#/definitions/Favorite" type: array type: object Invoice: properties: Amount: type: number CourseID: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true Currency: type: string DueDate: type: string ID: type: string Invoicenumber: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true Status: type: string TransactionID: type: string UserID: type: string type: object InvoiceRequest: description: An array of Invoice objects properties: Data: items: $ref: "#/definitions/Invoice" type: array type: object InvoiceResponse: description: An array of Invoice objects properties: Data: items: $ref: "#/definitions/Invoice" type: array type: object IssuedCertificate: properties: CertificateID: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true EnrollmentID: type: string ExpirationDate: type: string x-nullable: true ID: type: string IssueDate: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true UserID: type: string VerificationCode: type: string type: object IssuedCertificateRequest: description: An array of IssuedCertificate objects properties: Data: items: $ref: "#/definitions/IssuedCertificate" type: array type: object IssuedCertificateResponse: description: An array of IssuedCertificate objects properties: Data: items: $ref: "#/definitions/IssuedCertificate" type: array type: object LessonProgress: properties: Completed: type: integer Completedat: type: string x-nullable: true CreatedByID: type: string CreatedDate: type: string x-nullable: true EnrollmentID: type: string ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true LessonID: type: string UserID: type: string type: object LessonProgressRequest: description: An array of LessonProgress objects properties: Data: items: $ref: "#/definitions/LessonProgress" type: array type: object LessonProgressResponse: description: An array of LessonProgress objects properties: Data: items: $ref: "#/definitions/LessonProgress" type: array type: object Message: properties: Message: type: string Ref: type: string Status: type: integer type: object Order: properties: AmountpaID: type: number x-nullable: true Createdat: type: string x-nullable: true EventID: type: string ID: type: string OrderStatus: type: string PaymentMethod: type: string x-nullable: true TicketID: type: string UpDatedat: type: string x-nullable: true UserID: type: string type: object OrderRequest: description: An array of Order objects properties: Data: items: $ref: "#/definitions/Order" type: array type: object OrderResponse: description: An array of Order objects properties: Data: items: $ref: "#/definitions/Order" type: array type: object Pagination: properties: Limit: format: int64 type: integer POffset: format: int64 type: integer PageSize: format: int64 type: integer SetSize: format: int64 type: integer type: object PaymentMethod: properties: CardHolderName: type: string CardNumber: type: string CardType: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true ExpirationMonth: type: integer ExpirationYear: type: integer ID: type: string Isdefault: type: integer LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true UserID: type: string type: object PaymentMethodRequest: description: An array of PaymentMethod objects properties: Data: items: $ref: "#/definitions/PaymentMethod" type: array type: object PaymentMethodResponse: description: An array of PaymentMethod objects properties: Data: items: $ref: "#/definitions/PaymentMethod" type: array type: object RequestMeta: properties: TaxnexusAccount: description: Account Number of the Reseller or OEM type: string required: - TaxnexusAccount type: object ResearchProject: properties: AccountID: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true Description: type: string ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true Name: type: string TenantID: type: string UserID: type: string type: object ResearchProjectCompany: properties: AccountID: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true ResearchProjectID: type: string TenantID: type: string type: object ResearchProjectCompanyRequest: description: An array of ResearchProjectCompany objects properties: Data: items: $ref: "#/definitions/ResearchProjectCompany" type: array type: object ResearchProjectCompanyResponse: description: An array of ResearchProjectCompany objects properties: Data: items: $ref: "#/definitions/ResearchProjectCompany" type: array type: object ResearchProjectRequest: description: An array of ResearchProject objects properties: Data: items: $ref: "#/definitions/ResearchProject" type: array type: object ResearchProjectResponse: description: An array of ResearchProject objects properties: Data: items: $ref: "#/definitions/ResearchProject" type: array type: object ResearchProjectTopic: properties: CreatedByID: type: string CreatedDate: type: string x-nullable: true ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true ResearchProjectID: type: string TenantID: type: string TopicID: type: string type: object ResearchProjectTopicRequest: description: An array of ResearchProjectTopic objects properties: Data: items: $ref: "#/definitions/ResearchProjectTopic" type: array type: object ResearchProjectTopicResponse: description: An array of ResearchProjectTopic objects properties: Data: items: $ref: "#/definitions/ResearchProjectTopic" type: array type: object ResponseMeta: properties: Contact: description: Microservice Contact Info type: string Copyright: description: Copyright Info type: string License: description: License Information and Restrictions type: string OperationID: description: Operation ID type: string Pagination: $ref: "#/definitions/Pagination" RequestIP: description: Request IP Address type: string RequestType: description: Request Type type: string RequestURL: description: Request URL type: string ServerInfo: description: Data Server Info type: string ServerResponseTime: description: Data Server Response Time (ms) type: string ServerTimestamp: description: Backend Server Timestamp type: string TaxnexusAccount: description: Account Number used for recording transactions type: string type: object TenantUser: description: Relationship object that connects users to a tenant properties: AccessLevel: description: The makeTenantUser access level for this User type: string AccountID: description: Account ID type: string Auth0UserID: description: Auth0 User ID type: string CompanyName: description: Account Name type: string ContactID: description: Contact ID type: string TaxnexusAccount: description: Account type: string TenantActive: description: Tenant active? type: boolean TenantID: description: The Tenant ID type: string TenantName: description: Tenant Name type: string TenantStatus: description: Tenant Status type: string TenantType: description: Tenant type type: string TenantVersion: description: Tenant Version type: string UserEmail: description: User Email Address type: string UserFullName: description: User Full Name type: string UserID: description: The User ID type: string Username: description: Username type: string type: object Role: description: A functional role within a Tenant properties: Auth0RoleID: description: The corresponding Auth0 Role type: string CreatedByID: description: Created By type: string CreatedDate: description: Created Date type: string Description: description: Role Description type: string ID: description: Record Id type: string LastModifiedByID: description: Last Modified By type: string LastModifiedDate: description: Last Modifed Date type: string RoleName: description: The name of this role type: string TenantID: description: The ID of the Tenant that owns this Role type: string type: object RoleRequest: description: An array of Role objects properties: Date: items: $ref: "#/definitions/Role" type: array type: object RoleResponse: description: An array of Role objects properties: Data: items: $ref: "#/definitions/Role" type: array Meta: $ref: "#/definitions/ResponseMeta" type: object Template: properties: CompanyID: description: Company type: string CreatedByID: type: string CreatedDate: type: string Description: description: Description type: string HTML: description: HTML Body format: byte type: string ID: description: Record Id type: string IsActive: description: Active? type: boolean IsMaster: description: Master Template? type: boolean LastModifiedByID: type: string LastModifiedDate: type: string Name: description: Template Name type: string ObjectType: description: Object type: string RecordTypeName: description: Record Type Name type: string TenantID: description: Tenant that owns this object instance type: string Type: description: Type type: string URL: description: URL type: string type: object TemplateRequest: description: An array of Templates properties: Data: items: $ref: "#/definitions/Template" type: array type: object TemplateResponse: description: An array of Templates properties: Data: items: $ref: "#/definitions/Template" type: array Meta: $ref: "#/definitions/ResponseMeta" type: object Tenant: description: Account Tenant properties: AccountID: description: The Account that owns this Tenant type: string Active: description: Is this Tenant currently active? type: boolean CreatedByID: description: Created By type: string CreatedDate: description: Created Date type: string Databases: items: $ref: "#/definitions/Database" type: array ID: description: Record Id type: string LastModifiedByID: description: Last Modified By type: string LastModifiedDate: description: Last Modifed Date type: string Roles: items: $ref: "#/definitions/Role" type: array Status: description: The current status of this Tenant type: string TenantName: description: Name of the Tenant Resource type: string TenantUsers: items: $ref: "#/definitions/TenantUser" type: array Type: description: The type of Tenant type: string Version: description: The version number of the Tenant Onboarding system used to create this tenant type: string type: object TenantRequest: description: An array of Tenant objects properties: Data: items: $ref: "#/definitions/Tenant" type: array type: object TenantResponse: description: An array of Tenant objects properties: Data: items: $ref: "#/definitions/Tenant" type: array Meta: $ref: "#/definitions/ResponseMeta" type: object Ticket: properties: CreatedDate: type: string x-nullable: true EventID: type: string ID: type: string LastModifiedDate: type: string x-nullable: true Price: type: number x-nullable: true Quantity: type: integer Tickettype: type: string type: object TicketRequest: description: An array of Ticket objects properties: Data: items: $ref: "#/definitions/Ticket" type: array type: object TicketResponse: description: An array of Ticket objects properties: Data: items: $ref: "#/definitions/Ticket" type: array type: object Transaction: properties: Amount: type: number CourseID: type: string CreatedByID: type: string CreatedDate: type: string x-nullable: true Currency: type: string EnrollmentID: type: string ID: type: string LastModifiedByID: type: string LastModifiedDate: type: string x-nullable: true PaymentMethodID: type: string Status: type: string x-nullable: true TransactionDate: type: string UserID: type: string type: object TransactionRequest: description: An array of Transaction objects properties: Data: items: $ref: "#/definitions/Transaction" type: array type: object TransactionResponse: description: An array of Transaction objects properties: Data: items: $ref: "#/definitions/Transaction" type: array type: object User: properties: APIKey: description: API Key type: string AboutMe: description: About Me type: string AccountID: description: Account ID type: string Address: $ref: "#/definitions/Address" Alias: description: Alias type: string Auth0UserID: description: Auth0 User Id type: string CommunityNickname: description: Nickname type: string CompanyName: description: Company Name type: string ContactID: description: Contact type: string CreatedByID: description: Created User ID type: string CreatedDate: description: Date Created type: string DelegatedApproverID: description: Delegated Approver type: string Department: description: Department type: string Division: description: Division type: string Email: description: Email address type: string EmployeeNumber: description: Employee Number type: string EndOfDay: description: Time day ends type: string Environment: description: Environment type: string Extension: description: Extension type: string FabricAPIKey: description: Fabric API Key type: string Fax: description: Fax type: string FirstName: description: The first name type: string ForecastEnabled: description: Allow Forecasting type: boolean FullPhotoURL: description: Full Photo URL type: string ID: description: Record ID type: string IsActive: description: Active type: boolean IsPortalEnabled: description: Is the user enabled for Communities? type: boolean IsProphilePhotoActive: description: Has Profile Photo type: boolean IsSystemControlled: type: boolean LastIP: description: IP address of last login type: string LastLogin: description: Last login time type: string LastModifiedByID: description: Last Modified User ID type: string LastModifiedDate: description: Last Modified Date type: string LastName: description: The Last Name type: string LoginCount: description: Number of times user has logged in format: int64 type: number ManagerID: description: Manager type: string MobilePhone: description: Mobile type: string Name: description: Name type: string OutOfOfficeMessage: description: Out of office message type: string Phone: description: Phone type: string PortalRole: description: Portal Role Level type: string ProfileID: description: Profile type: string ReceivesAdminEmails: description: Info Emails type: boolean ReceivesAdminInfoEmails: description: Admin Info Emails type: boolean SenderEmail: description: Email Sender Address type: string SenderName: description: Email Sender Name type: string Signature: description: Email Signature type: string SmallPhotoURL: description: Small Photo URL type: string StartOfDay: description: The time day starts type: string Status: description: Onboarding Status type: string TaxnexusAccount: description: Account type: string TenantID: description: Tenant ID associated with this user type: string TenantUsers: items: $ref: "#/definitions/TenantUser" type: array TimeZone: description: Time Zone type: string Title: description: Title type: string UserRoleID: description: Role type: string UserRoles: items: $ref: "#/definitions/UserRole" type: array UserType: description: User Type type: string Username: description: Username type: string type: object UserRequest: properties: Data: items: $ref: "#/definitions/User" type: array type: object UserResponse: description: An array of Print-Ready ingest Objects properties: Data: items: $ref: "#/definitions/User" type: array Meta: $ref: "#/definitions/ResponseMeta" type: object UserRole: description: Relationship object that connects user to a role properties: AccountID: description: Account Id type: string Auth0RoleID: description: Linked role ID type: string Auth0UserID: description: Auth0 User ID type: string CompanyName: description: Company Name type: string ContactID: description: Contact ID type: string RoleDescription: description: Role description type: string RoleID: description: The Role ID type: string RoleName: description: Role Name type: string TaxnexusAccount: description: Account Number type: string UserEmail: description: User Email Address type: string UserFullName: description: User Full Name type: string UserID: description: The User ID type: string Username: description: Username type: string type: object WebhookClerkRequest: description: Clerk webhook object properties: object: type: string type: description: Clerk Name type: string data: type: object type: object ClerkUser: description: Clerk user object type: object properties: external_id: type: string description: |- The ID of the user as used in your external systems or your previous authentication solution. Must be unique across your instance. first_name: type: string description: The first name to assign to the user last_name: type: string description: The last name to assign to the user email_address: type: array items: type: string description: |- Email addresses to add to the user. Must be unique across your instance. The first email address will be set as the user's primary email address. phone_number: type: array items: type: string description: |- Phone numbers to add to the user. Must be unique across your instance. The first phone number will be set as the user's primary phone number. web3_wallet: type: array items: type: string description: |- Web3 wallets to add to the user. Must be unique across your instance. The first wallet will be set as the user's primary wallet. username: type: string description: |- The username to give to the user. It must be unique across your instance. password: type: string description: |- The plaintext password to give the user. Must be at least 8 characters long, and can not be in any list of hacked passwords. password_digest: type: string description: |- In case you already have the password digests and not the passwords, you can use them for the newly created user via this property. The digests should be generated with one of the supported algorithms. The hashing algorithm can be specified using the `password_hasher` property. password_hasher: type: string description: |- The hashing algorithm that was used to generate the password digest. The algorithms we support at the moment are [bcrypt](https://en.wikipedia.org/wiki/Bcrypt), md5, pbkdf2_sha256, [pbkdf2_sha256_django](https://docs.djangoproject.com/en/4.0/topics/auth/passwords/), [scrypt_firebase](https://firebaseopensource.com/projects/firebase/scrypt/) and 2 [argon2](https://argon2.online/) variants, argon2i and argon2id. Each of the above expects the incoming digest to be of a particular format. More specifically: **bcrypt:** The digest should be of the following form: `$$$` **md5:** The digest should follow the regular form e.g.: `5f4dcc3b5aa765d61d8327deb882cf99` **pbkdf2_sha256:** This is the PBKDF2 algorithm using the SHA256 hashing function. The format should be as follows: `pbkdf2_sha256$$$` Note: Both the salt and the hash are expected to be base64-encoded. **pbkdf2_sha256_django:** This is the Django-specific variant of PBKDF2 and the digest should have the following format (as exported from Django): `pbkdf2_sha256$$$` Note: The salt is expected to be un-encoded, the hash is expected base64-encoded. **pbkdf2_sha1:** This is similar to pkbdf2_sha256_django, but with two differences: 1. uses sha1 instead of sha256 2. accepts the hash as a hex-encoded string The format is the following: `pbkdf2_sha1$$$` **scrypt_firebase:** The Firebase-specific variant of scrypt. The value is expected to have 6 segments separated by the $ character and include the following information: _hash:_ The actual Base64 hash. This can be retrieved when exporting the user from Firebase. _salt:_ The salt used to generate the above hash. Again, this is given when exporting the user. _signer key:_ The base64 encoded signer key. _salt separator:_ The base64 encoded salt separator. _rounds:_ The number of rounds the algorithm needs to run. _memory cost:_ The cost of the algorithm run The first 2 (hash and salt) are per user and can be retrieved when exporting the user from Firebase. The other 4 values (signer key, salt separator, rounds and memory cost) are project-wide settings and can be retrieved from the project's password hash parameters. Once you have all these, you can combine it in the following format and send this as the digest in order for Clerk to accept it: `$$$$$` **argon2i:** Algorithms in the argon2 family generate digests that encode the following information: _version (v):_ The argon version, version 19 is assumed _memory (m):_ The memory used by the algorithm (in kibibytes) _iterations (t):_ The number of iterations to perform _parallelism (p):_ The number of threads to use Parts are demarcated by the `$` character, with the first part identifying the algorithm variant. The middle part is a comma-separated list of the encoding options (memory, iterations, parallelism). The final part is the actual digest. `$argon2i$v=19$m=4096,t=3,p=1$4t6CL3P7YiHBtwESXawI8Hm20zJj4cs7/4/G3c187e0$m7RQFczcKr5bIR0IIxbpO2P0tyrLjf3eUW3M3QSwnLc` **argon2id:** See the previous algorithm for an explanation of the formatting. For the argon2id case, the value of the algorithm in the first part of the digest is `argon2id`: `$argon2id$v=19$m=64,t=4,p=8$Z2liZXJyaXNo$iGXEpMBTDYQ8G/71tF0qGjxRHEmR3gpGULcE93zUJVU` If you need support for any particular hashing algorithm, [please let us know](https://clerk.com/support). enum: - bcrypt - md5 - pbkdf2_sha256 - pbkdf2_sha256_django - pbkdf2_sha1 - scrypt_firebase - argon2i - argon2id skip_password_checks: type: boolean description: |- When set to `true` all password checks are skipped. It is recommended to use this method only when migrating plaintext passwords to Clerk. Upon migration the user base should be prompted to pick stronger password. skip_password_requirement: type: boolean description: |- When set to `true`, `password` is not required anymore when creating the user and can be omitted. This is useful when you are trying to create a user that doesn't have a password, in an instance that is using passwords. Please note that you cannot use this flag if password is the only way for a user to sign into your instance. totp_secret: type: string description: |- In case TOTP is configured on the instance, you can provide the secret to enable it on the newly created user without the need to reset it. Please note that currently the supported options are: * Period: 30 seconds * Code length: 6 digits * Algorithm: SHA1 backup_codes: type: array items: type: string description: |- If Backup Codes are configured on the instance, you can provide them to enable it on the newly created user without the need to reset them. You must provide the backup codes in plain format or the corresponding bcrypt digest. public_metadata: type: object description: Metadata saved on the user, that is visible to both your Frontend and Backend APIs private_metadata: type: object description: Metadata saved on the user, that is only visible to your Backend API unsafe_metadata: type: object description: |- Metadata saved on the user, that can be updated from both the Frontend and Backend APIs. Note: Since this data can be modified from the frontend, it is not guaranteed to be safe. created_at: type: string description: A custom date/time denoting _when_ the user signed up to the application, specified in RFC3339 format (e.g. `2012-10-20T07:15:20.902Z`). WebhookClerkResponse: description: Clerk webhook object properties: object: type: string type: description: Clerk Name type: string data: type: object type: object