### Create Task Request Body Example Source: https://help.withmoxie.com/en/articles/8160423-create-task This is an example of the JSON request body used to create a new task. Ensure all required fields are populated and optional fields are correctly formatted. ```json { "name": "", "clientName": "", "projectName": "", "status": "", "description": "", "dueDate": "2023-07-20", "startDate": "2023-07-20", "priority": 1, "tasks": [ "One", "Two", "Three" ], "assignedTo": [ "user1@withmoxie.com", "user2@withmoxie.com" ], "customValues": { "Field1 name": "Field value", "Field2 name": "Field value" } } ``` -------------------------------- ### Example Redirect URL with Parameters Source: https://help.withmoxie.com/en/articles/5886666-how-to-use-the-hectic-meeting-scheduler This URL demonstrates how meeting details can be appended as URL parameters when redirecting users to a custom confirmation page on your website. ```url https://www.mysite.com/confirm?id=123&start=2022-01-01T13:00:00Z&duration=30&location=Zoom&email=invitee@email.com&name=John+Doe ``` -------------------------------- ### GET /action/projects/search Source: https://help.withmoxie.com/en/articles/8260204-search-projects Retrieves a list of active projects. You can filter the results by client name. ```APIDOC ## GET /action/projects/search ### Description Retrieves a list of active projects. You can filter the results by client name. ### Method GET ### Endpoint /action/projects/search ### Parameters #### Query Parameters - **query** (string) - Optional - Client name filter if you only want projects for a specific client ### Response #### Success Response (200) - **id** (string) - The unique identifier of the project. - **accountId** (integer) - The identifier of the account associated with the project. - **sampleData** (boolean) - Indicates if the project is sample data. - **clientId** (string) - The identifier of the client associated with the project. - **name** (string) - The name of the project. - **description** (string) - A description of the project. - **active** (boolean) - Indicates if the project is active. - **startDate** (string) - The start date of the project (YYYY-MM-DD). - **dueDate** (string) - The due date of the project (YYYY-MM-DD). - **dateCreated** (string) - The date and time the project was created (ISO 8601 format). - **client** (object) - Information about the client associated with the project. - **accountId** (integer) - The identifier of the account associated with the client. - **sampleData** (boolean) - Indicates if the client data is sample data. - **id** (string) - The unique identifier of the client. - **clientType** (string) - The type of the client. - **name** (string) - The name of the client. - **initials** (string) - The initials of the client. - **locality** (string) - The locality of the client. - **country** (string) - The country of the client. - **color** (string) - The color associated with the client. - **hourlyAmount** (number) - The hourly amount for the client. - **archive** (boolean) - Indicates if the client is archived. - **currency** (string) - The currency used by the client. - **logo** (string) - The URL of the client's logo. - **leadSource** (string) - The lead source for the client. - **contact** (object) - Contact information for the client. - **id** (string) - The unique identifier of the contact. - **accountId** (integer) - The identifier of the account associated with the contact. - **clientId** (string) - The identifier of the client associated with the contact. - **clientPortalUserId** (integer) - The identifier of the client portal user. - **firstName** (string) - The first name of the contact. - **lastName** (string) - The last name of the contact. - **role** (string) - The role of the contact. - **phone** (string) - The phone number of the contact. - **email** (string) - The email address of the contact. - **mobile** (string) - The mobile number of the contact. - **notes** (string) - Notes about the contact. - **defaultContact** (boolean) - Indicates if this is the default contact. - **invoiceContact** (boolean) - Indicates if this is the invoice contact. - **portalAccess** (boolean) - Indicates if the contact has portal access. - **importRecordId** (string) - The import record ID for the contact. - **sampleData** (boolean) - Indicates if the contact data is sample data. - **leadGenArchived** (boolean) - Indicates if the lead generation is archived. - **feeSchedule** (object) - Information about the project's fee schedule. - **feeType** (string) - The type of fee (e.g., HOURLY). - **amount** (number) - The fee amount. - **retainerSchedule** (string) - The retainer schedule (e.g., WEEKLY). - **estimateMax** (number) - The maximum estimate for the fee. - **estimateMin** (number) - The minimum estimate for the fee. - **retainerStart** (string) - The start date of the retainer (YYYY-MM-DD). - **retainerTiming** (string) - The timing of the retainer (e.g., ADVANCED). - **retainerOverageRate** (number) - The overage rate for the retainer. - **taxable** (boolean) - Indicates if the fee is taxable. - **fromProposalId** (string) - The ID of the proposal from which the fee was derived. - **fromProposalSignedDate** (string) - The date the proposal was signed (ISO 8601 format). - **updatedDate** (string) - The date the fee schedule was last updated (ISO 8601 format). - **updatedBy** (string) - The user who last updated the fee schedule. - **proposalId** (string) - The ID of the associated proposal. - **proposalName** (string) - The name of the associated proposal. - **hexColor** (string) - The hex color code associated with the project. - **portalAccess** (string) - The level of portal access for the project (e.g., FULL). - **showTimeWorkedInPortal** (boolean) - Indicates if time worked should be shown in the portal. #### Response Example ```json [ { "id": "", "accountId": 0, "sampleData": false, "clientId": "", "name": "", "description": "", "active": false, "startDate": "2023-08-15", "dueDate": "2023-08-15", "dateCreated": "2023-08-15T07:34:25.36-04:00", "client": { "accountId": 0, "sampleData": false, "id": "", "clientType": "Client", "name": "", "initials": "", "locality": "", "country": "", "color": "", "hourlyAmount": 0, "archive": false, "currency": "", "logo": "", "leadSource": "", "contact": { "id": "", "accountId": 0, "clientId": "", "clientPortalUserId": 0, "firstName": "", "lastName": "", "role": "", "phone": "", "email": "", "mobile": "", "notes": "", "defaultContact": false, "invoiceContact": false, "portalAccess": false, "importRecordId": "", "sampleData": false } }, "leadGenArchived": false, "feeSchedule": { "feeType": "HOURLY", "amount": 0, "retainerSchedule": "WEEKLY", "estimateMax": 0, "estimateMin": 0, "retainerStart": "2023-08-15", "retainerTiming": "ADVANCED", "retainerOverageRate": 0, "taxable": false, "fromProposalId": "", "fromProposalSignedDate": "2023-08-15T07:34:25.371-04:00", "updatedDate": "2023-08-15T07:34:25.371-04:00", "updatedBy": "" }, "proposalId": "", "proposalName": "", "hexColor": "", "portalAccess": "FULL", "showTimeWorkedInPortal": false } ] ``` ``` -------------------------------- ### Approve Deliverable Request Body Example Source: https://help.withmoxie.com/en/articles/8160466-approve-deliverable Use this JSON structure to send a request to approve a deliverable. Ensure all required properties are accurately provided. ```json { "clientName": "", "projectName": "", "deliverableName": "" } ``` -------------------------------- ### Create Contact Request Body Example Source: https://help.withmoxie.com/en/articles/8160213-create-contact Use this JSON structure to create a new contact. The clientName property is optional and used to associate the contact with an existing client. ```json { "first": "", "last": "", "email": "", "phone": "", "notes": "", "clientName": "", "defaultContact": false, "portalAccess": false, "invoiceContact": false } ``` -------------------------------- ### Constructing a Public API Request Source: https://help.withmoxie.com/en/articles/8154735-public-api-fundamentals Example of an HTTP POST request to a Moxie Public API endpoint, including necessary headers like Host, Content-Type, and the custom X-API-KEY. ```http POST /api/public/clients/create HTTP/1.1 Host: pod00.withmoxie.dev Accept: application/json Content-Type: application/json X-API-KEY: 64ba9e39d08e4e5e247ff0ad.4d89b3d32510cbf593fe661a4eb1389eab455 ``` -------------------------------- ### Create Expense Request Body Example Source: https://help.withmoxie.com/en/articles/8160223-create-expense Use this JSON structure to create a new expense record. Ensure all required fields are populated and optional fields are used as needed. ```json { "date": "2023-07-20T00:00:00.000+00:00", "amount": 0.00, "currency": "USD", "paid": false, "reimbursable": false, "markupPercentage": 0.00, "category": "", "billNo": "", "description": "", "notes": "", "vendor": "", "clientName": "" } ``` -------------------------------- ### Create Project API Source: https://help.withmoxie.com/en/collections/5482062-public-api-endpoints Creates a new project. ```APIDOC ## POST /api/projects ### Description Creates a new project. ### Method POST ### Endpoint /api/projects ``` -------------------------------- ### Create Client API Source: https://help.withmoxie.com/en/collections/5482062-public-api-endpoints Creates a new client. ```APIDOC ## POST /api/clients ### Description Creates a new client. ### Method POST ### Endpoint /api/clients ``` -------------------------------- ### GET /action/contacts/search Source: https://help.withmoxie.com/en/articles/8259974-search-contacts Search for contacts in the workspace by name or email. ```APIDOC ## GET /action/contacts/search ### Description Search contacts in your workspace based on a query string. ### Method GET ### Endpoint /action/contacts/search ### Parameters #### Query Parameters - **query** (string) - Optional - Search string that can match first, last, or email ### Response #### Success Response (200) - **Array of objects** - A list of contact records matching the search criteria. #### Response Example [ { "id": "", "accountId": 0, "clientId": "", "clientPortalUserId": 0, "firstName": "", "lastName": "", "role": "", "phone": "", "email": "", "mobile": "", "notes": "", "defaultContact": false, "invoiceContact": false, "portalAccess": false, "importRecordId": "", "sampleData": false } ] ``` -------------------------------- ### GET /action/emailTemplates/list Source: https://help.withmoxie.com/en/articles/8260211-list-email-templates Retrieves a list of all email template names in a workspace. ```APIDOC ## GET /action/emailTemplates/list ### Description Retrieve a list of all email template names in a workspace. ### Method GET ### Endpoint /action/emailTemplates/list ### Response #### Success Response (200) - **Array** (string) - A list of email template names. #### Response Example [ "Email Template Name 1", "Email Template Name 2" ] ``` -------------------------------- ### GET /action/users/list Source: https://help.withmoxie.com/en/articles/8260260-list-workspace-users Retrieves a list of all users and their associated permissions in the Moxie workspace. ```APIDOC ## GET /action/users/list ### Description List all users and permissions in the Moxie workspace. ### Method GET ### Endpoint /action/users/list ### Response #### Success Response (200) - **userType** (string) - The role of the user (OWNER, FULL_USER, RESTRICTED_ACCESS, COLLABORATOR). - **user** (object) - User profile details including userId, name, email, and phone information. - **projectAccess** (object) - Project access details, populated if userType is COLLABORATOR. - **featureAccess** (object) - Feature access permissions, populated if userType is RESTRICTED_ACCESS. #### Response Example { "userType": "OWNER", "user": { "userId": 0, "firstName": "", "lastName": "", "email": "", "phone": "", "phoneVerified": false, "uuid": "", "profilePicture": "", "uploadedPicture": false, "pricingVersion": 0 }, "projectAccess": { "projects": [ { "grantedAt": "2023-08-15T09:28:17.852-04:00", "projectId": "" } ] }, "featureAccess": { "projects": false, "invoices": false, "accounting": false, "pipeline": false, "agreements": false, "settings": false, "timesheets": false, "tickets": false } } ``` -------------------------------- ### POST /action/opportunities/create Source: https://help.withmoxie.com/en/articles/8160471-create-opportunity Create a new opportunity in your sales pipeline with basic opportunity information and custom values. ```APIDOC ## POST /action/opportunities/create ### Description Create a new opportunity in your sales pipeline with basic opportunity information and custom values. ### Method POST ### Endpoint /action/opportunities/create ### Request Body - **name** (string) - Required - Opportunity Name - **description** (string) - Optional - Description of the opportunity - **clientName** (string) - Optional - Exact match of a client name in the CRM - **stageName** (string) - Optional - If provided, must match an exact stage name in your pipeline - **value** (number) - Optional - The value of the opportunity - **estCloseDate** (string) - Optional - Estimated close date in YYYY-MM-DD format - **leadInfo** (object) - Optional - Information about the lead - **firstName** (string) - Optional - **lastName** (string) - Optional - **email** (string) - Optional - **phone** (string) - Optional - **role** (string) - Optional - **businessName** (string) - Optional - **website** (string) - Optional - **address1** (string) - Optional - **address2** (string) - Optional - **city** (string) - Optional - **locality** (string) - Optional - **postal** (string) - Optional - **country** (string) - Optional - **sourceUrl** (string) - Optional - **leadSource** (string) - Optional - **answers** (array) - Optional - Array of answer objects to capture additional questions and answers. - **fieldKey** (string) - Required - used as the property on the field for reporting and token mapping - **question** (string) - Required - the question text associated with this answer object - **answer** (string) - Required - the answer the person provided to your question - **toDos** (array) - Optional - List of to-do items for the opportunity - **item** (string) - Required - The to-do item description - **complete** (boolean) - Optional - Whether the to-do is complete - **dueDate** (string) - Optional - Due date in YYYY-MM-DD format - **customValues** (object) - Optional - Map of custom fields. The left side of the map must match exactly to fields specified in your pipeline settings custom fields setup. ### Request Example ```json { "name": "New Business Deal", "description": "A potential new client", "clientName": "Acme Corp", "stageName": "Prospecting", "value": 15000.00, "estCloseDate": "2023-12-31", "leadInfo": { "firstName": "John", "lastName": "Doe", "email": "john.doe@example.com", "phone": "123-456-7890", "businessName": "Acme Corp", "website": "https://acmecorp.com", "address1": "123 Main St", "city": "Anytown", "postal": "12345", "country": "USA", "leadSource": "Website Inquiry", "answers": [ { "fieldKey": "budget", "question": "What is your budget?", "answer": "$10,000 - $20,000" } ] }, "toDos": [ { "item": "Schedule follow-up call", "dueDate": "2023-11-15" } ], "customValues": { "Industry": "Technology", "Region": "North America" } } ``` ### Response #### Success Response (200) - **opportunityId** (string) - The ID of the newly created opportunity. - **message** (string) - A success message. #### Response Example ```json { "opportunityId": "opp_12345abc", "message": "Opportunity created successfully." } ``` ``` -------------------------------- ### GET /action/vendors/list Source: https://help.withmoxie.com/en/articles/8260220-list-vendor-names Retrieves a list of all vendor names currently stored in the system. ```APIDOC ## GET /action/vendors/list ### Description Returns a list of all vendor names. ### Method GET ### Endpoint /action/vendors/list ### Response #### Success Response (200) - **body** (array) - A list of strings representing vendor names. #### Response Example [ "Vendor 1", "Vendor 2" ] ``` -------------------------------- ### Create Ticket Comment Request Body Source: https://help.withmoxie.com/en/articles/9367926-create-comment-on-ticket Example JSON payload for the /action/tickets/comments/create endpoint. ```json { "userEmail": "user@email.com", "ticketNumber": 10005, "privateComment": false, "comment": "This is going to be some rad comment here that is really awesome." } ``` -------------------------------- ### POST /action/projects/create Source: https://help.withmoxie.com/en/articles/8160400-create-project Creates a new project record in the Moxie CRM associated with a specific client. ```APIDOC ## POST /action/projects/create ### Description Create a new project record in your Moxie CRM associated with a specific client. ### Method POST ### Endpoint /action/projects/create ### Parameters #### Request Body - **name** (string) - Required - Project Name - **clientName** (string) - Required - Exact match of a client record that exists in the CRM - **templateName** (string) - Optional - The name of a template that should be used to create the project. All settings from the template including tasks will be generated. - **startDate** (string) - Optional - Start date of the project (YYYY-MM-DD) - **dueDate** (string) - Optional - Due date of the project (YYYY-MM-DD) - **portalAccess** (string) - Optional - One of: None, Overview, Full access, or Read only (default Read Only) - **showTimeWorkedInPortal** (boolean) - Optional - Is time worked on this project visible in client portal - **feeSchedule** (object) - Required when not using Template - Monetization settings for the project - **feeType** (string) - One of: Hourly, Fixed Price, Retainer, Per Item - **amount** (number) - Optional - Monetary amount - **retainerSchedule** (string) - Optional - The cadence of a Retainer project: WEEKLY, BI_WEEKLY, MONTHLY, QUARTERLY, BI_ANNUALLY, ANNUALLY - **estimateMax** (number) - Optional - Maximum estimate - **estimateMin** (number) - Optional - Minimum estimate - **retainerStart** (string) - Optional - Start date for retainer (YYYY-MM-DD) - **retainerTiming** (string) - Optional - Either ADVANCED or ARREARS - **retainerOverageRate** (number) - Optional - Overage rate - **taxable** (boolean) - Optional - Whether the fee is taxable ### Request Example { "name": "", "clientName": "", "templateName": "", "startDate": "2023-07-20", "dueDate": "2023-07-20", "portalAccess": "Full access", "showTimeWorkedInPortal": true, "feeSchedule": { "feeType": "Hourly", "amount": 0.00, "retainerSchedule": "WEEKLY", "estimateMax": 0, "estimateMin": 0, "retainerStart": "2023-07-20", "retainerTiming": "ADVANCED", "retainerOverageRate": 0.00, "taxable": false } } ``` -------------------------------- ### POST /action/payment/create Source: https://help.withmoxie.com/en/articles/8213724-apply-payment-to-invoice Apply a payment to an open invoice within Moxie. ```APIDOC ## POST /action/payment/create ### Description Apply a payment to an open invoice within Moxie. ### Method POST ### Endpoint /action/payment/create ### Parameters #### Request Body - **date** (string) - Required - The date that the payment was made on the invoice. In multi-currency environments this date is important as it will determine the exchange rate for the transaction. - **amount** (number) - Required - The amount of the payment. Must not be greater than the amount currently owed on the invoice. - **invoiceNumber** (string) - Required - The invoice number within Moxie. - **clientName** (string) - Optional - This field is required only if you have invoice numbering schemes which create duplicate invoice numbers between clients. - **paymentType** (string) - Optional - One of the following: STRIPE, CHECK, BANK_TRANSFER, CASH, VENMO, PAYPAL, ZELLE, APP_PAYOUT, CREDIT_CARD, OTHER. Defaults to OTHER. - **referenceNumber** (string) - Optional - Informational reference number that appears in payment history. - **memo** (string) - Optional - Notes for the payment. ### Request Example { "date": "2023-08-03", "amount": 13675.00, "invoiceNumber": "E-2023-79", "clientName": "Client Name", "paymentType": "BANK_TRANSFER", "referenceNumber": "123", "memo": "API Payment" } ``` -------------------------------- ### GET /action/payableInvoices/search Source: https://help.withmoxie.com/en/articles/8260252-search-payable-invoices Retrieves a list of payable invoices. Supports filtering by client name. ```APIDOC ## GET /action/payableInvoices/search ### Description Find invoices in the CRM that are currently in a payable state. ### Method GET ### Endpoint /action/payableInvoices/search ### Parameters #### Query Parameters - **query** (string) - Optional - client name filter if you only want invoices for a specific client ### Response #### Success Response (200) - **id** (string) - Invoice ID - **invoiceNumber** (integer) - Invoice number - **invoiceNumberFormatted** (string) - Formatted invoice number - **accountId** (integer) - Account ID associated with the invoice - **clientId** (string) - Client ID associated with the invoice - **dateCreated** (string) - Date the invoice was created (YYYY-MM-DD) - **dateSent** (string) - Date the invoice was sent (YYYY-MM-DD) - **dateDue** (string) - Date the invoice is due (YYYY-MM-DD) - **dateDueCalculated** (string) - Calculated due date (YYYY-MM-DD) - **datePaid** (string) - Date the invoice was paid (YYYY-MM-DD) - **clientInfo** (object) - Information about the client - **id** (string) - Client ID - **name** (string) - Client name - **initials** (string) - Client initials - **address1** (string) - Client address line 1 - **address2** (string) - Client address line 2 - **city** (string) - Client city - **locality** (string) - Client locality - **postal** (string) - Client postal code - **country** (string) - Client country - **phone** (string) - Client phone number - **color** (string) - Client color code - **taxId** (string) - Client tax ID - **website** (string) - Client website - **contact** (object) - Primary contact information for the client - **id** (string) - Contact ID - **accountId** (integer) - Account ID - **clientId** (string) - Client ID - **clientPortalUserId** (integer) - Client portal user ID - **firstName** (string) - Contact first name - **lastName** (string) - Contact last name - **role** (string) - Contact role - **phone** (string) - Contact phone number - **email** (string) - Contact email address - **mobile** (string) - Contact mobile number - **notes** (string) - Notes about the contact - **defaultContact** (boolean) - Indicates if this is the default contact - **invoiceContact** (boolean) - Indicates if this is the invoice contact - **portalAccess** (boolean) - Indicates if the contact has portal access - **importRecordId** (string) - Import record ID - **sampleData** (boolean) - Indicates if this is sample data - **roundingIncrement** (integer) - Rounding increment for amounts - **customInfo** (boolean) - Indicates custom information - **status** (string) - Current status of the invoice (e.g., SENT, PAID) - **invoiceType** (string) - Type of invoice (e.g., STANDARD) - **subTotal** (number) - Subtotal amount of the invoice - **convenienceFee** (number) - Convenience fee applied - **lateFee** (number) - Late fee applied - **discountAmount** (number) - Discount amount - **creditApplied** (number) - Credit applied to the invoice - **tax** (number) - Tax amount - **total** (number) - Total amount of the invoice - **localTotal** (number) - Total amount in local currency - **paymentTotal** (number) - Total amount paid - **localPaymentTotal** (number) - Total amount paid in local currency - **amountDue** (number) - Amount due - **localAmountDue** (number) - Amount due in local currency - **currency** (string) - Currency of the invoice - **integrationKeys** (object) - Integration keys for external systems - **quickbooksId** (string) - QuickBooks integration ID - **xeroId** (string) - Xero integration ID - **viewOnlineUrl** (string) - URL to view the invoice online - **payments** (array) - List of payments made for the invoice - **id** (string) - Payment ID - **amount** (number) - Payment amount - **pending** (boolean) - Indicates if the payment is pending - **paidBy** (string) - Method or entity that paid - **paymentProvider** (string) - The payment provider used (e.g., STRIPE) - **currency** (string) - Currency of the payment - **referenceNumber** (string) - Reference number for the payment - **memo** (string) - Memo for the payment - **datePaid** (string) - Date the payment was made (YYYY-MM-DD) - **timestamp** (string) - Timestamp of the payment (ISO 8601 format) - **integratedPayment** (boolean) - Indicates if it was an integrated payment - **forcePaidInFull** (boolean) - Indicates if payment was forced to full - **integrationKeys** (object) - Integration keys for the payment - **quickbooksId** (string) - QuickBooks integration ID - **xeroId** (string) - Xero integration ID - **isFailedPayment** (boolean) - Indicates if the payment failed - **localAmount** (number) - Payment amount in local currency ### Request Example ```json { "query": "Example Client Name" } ``` ### Response Example ```json [ { "id": "inv_12345", "invoiceNumber": 1001, "invoiceNumberFormatted": "INV-001001", "accountId": 101, "clientId": "cli_abcde", "dateCreated": "2023-08-15", "dateSent": "2023-08-16", "dateDue": "2023-09-14", "dateDueCalculated": "2023-09-14", "datePaid": null, "clientInfo": { "id": "cli_abcde", "name": "Example Client Name", "initials": "ECN", "address1": "123 Main St", "address2": "Suite 100", "city": "Anytown", "locality": "CA", "postal": "90210", "country": "USA", "phone": "555-123-4567", "color": "#FF5733", "taxId": "12-3456789", "website": "http://example.com", "contact": { "id": "con_xyz789", "accountId": 101, "clientId": "cli_abcde", "clientPortalUserId": 501, "firstName": "John", "lastName": "Doe", "role": "Primary", "phone": "555-987-6543", "email": "john.doe@example.com", "mobile": "555-111-2222", "notes": "Prefers email communication.", "defaultContact": true, "invoiceContact": true, "portalAccess": true, "importRecordId": "imp_98765", "sampleData": false }, "roundingIncrement": 0, "customInfo": false }, "status": "SENT", "invoiceType": "STANDARD", "subTotal": 1000.00, "convenienceFee": 0.00, "lateFee": 0.00, "discountAmount": 50.00, "creditApplied": 0.00, "tax": 80.00, "total": 1030.00, "localTotal": 1030.00, "paymentTotal": 0.00, "localPaymentTotal": 0.00, "amountDue": 1030.00, "localAmountDue": 1030.00, "currency": "USD", "integrationKeys": { "quickbooksId": "qb_123", "xeroId": "xero_456" }, "viewOnlineUrl": "https://moxie.com/invoices/view/inv_12345", "payments": [] } ] ```