Vendasta Resource Operations API

Endpoints related to Resource Operations

Operations 8

GET /{namespace}/{resourceTypeCode}/meta/fields Get field schema #
GET /{namespace}/{resourceTypeCode}/meta/fields/{fieldId}/options Get field options #
PATCH /{namespace}/{resourceTypeCode} Upsert CRM Record #
POST /{namespace}/{resourceTypeCode} Create CRM Record #
GET /{namespace}/{resourceTypeCode}/{id} Get CRM Record #
DELETE /{namespace}/{resourceTypeCode}/{id} Delete CRM Record #
PATCH /{namespace}/{resourceTypeCode}/{id} Update CRM Record #
POST /list/{namespace}/{resourceTypeCode} List CRM Records #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/vendasta-resource-operations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

vendasta-resource-operations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: CRM Rest Resource Operations API
  version: '1.0'
  summary: ''
  description: Endpoints related to Resource Operations
servers:
- url: https://prod.apigateway.co/org
  description: Production
- url: https://demo.apigateway.co/org
  description: Demo
- url: http://localhost:11001/org
  description: Local
- url: '{local}/org'
  description: Local
security:
- OAuth2Demo:
  - customers
- OAuth2Prod:
  - customers
tags:
- name: Resource Operations
  description: Endpoints related to Resource Operations
paths:
  /{namespace}/{resourceTypeCode}/meta/fields:
    parameters:
    - schema:
        type: string
      name: namespace
      in: path
      required: true
      description: The namespace, PID/AGID
    - name: resourceTypeCode
      in: path
      required: true
      description: The resourceTypeCode, here contacts, companies or activities.
      schema:
        type: string
        enum:
        - activities
        - companies
        - contacts
        - callActivities
        - communicationActivities
        - emailActivities
        - meetingActivities
        - noteActivities
        - opportunityChangeActivities
        - recordChangeActivities
        - taskActivities
    get:
      summary: Get field schema
      tags:
      - Resource Operations
      responses:
        '200':
          description: This API follows [Open API schema](https://spec.openapis.org/oas/v3.1.0#schema-object) of structure for response.
          content:
            application/json:
              examples:
                contacts Resource:
                  value:
                    type: object
                    title: CRM FieldSchema of Contact
                    description: CRM Field Schema of resourceType Contact.
                    properties:
                      system__id:
                        type: string
                        description: The globaly unique id for this contact record
                      standard__first_name:
                        type: string
                        title: First Name
                        description: The given name of the contact
                      standard__last_name:
                        type: string
                        maxLength: 50
                      system__created_at:
                        type: string
                        format: date-time
                        readOnly: true
                      standard__email:
                        type: string
                        format: email
                      platform__contact_additional_salesperson_ids:
                        description: Identifiers for additional salespeople in the platform.
                        items:
                          type: string
                        title: Additional Salesperson IDs
                        type: array
                      platform__contact_salesperson_id:
                        description: Identifier for a salesperson in the platform.
                        title: Salesperson ID
                        type: string
                      platform__ssc_contact_id:
                        description: Identifies the SSC contact, which may be associated with zero or more account groups.
                        items:
                          type: string
                        readOnly: true
                        title: Platform SSC contact IDs
                        type: array
                      platform__user_id:
                        description: Identifier for contact's underlying IAM user.
                        readOnly: true
                        title: Platform user ID
                        type: string
                      standard__contact_birth_year:
                        description: Contact's birth year. E.g. '1980'
                        title: Birth Year
                        type: string
                      standard__contact_company_name:
                        description: Name of the contact's company. This may be set independently from the name property on the contact's associated company.
                        title: Company name
                        type: string
                      standard__contact_company_website:
                        description: Name of the contact's company website. This may be set independently from the name property on the contact's associated company.
                        title: Company website
                        type: string
                      standard__contact_gender:
                        description: Gender of the contact. E.g. 'male', 'female', 'other'
                        title: Gender
                        type: string
                      standard__contact_interests:
                        description: Contact's interests. E.g. 'Hiking', 'Skiing', 'Cooking', 'Paintball'
                        items:
                          type: string
                        title: Interests
                        type: array
                      standard__contact_job_title:
                        description: Job title of the contact.
                        title: Job title
                        type: string
                      standard__contact_lifecycle_stage:
                        description: Lifecycle stage of the contact. E.g. 'Lead'
                        title: Lifecycle stage
                        type: string
                      standard__contact_linkedin_url:
                        description: URL of the contact's LinkedIn profile.
                        title: LinkedIn URL
                        type: string
                      standard__contact_mobile_phone_number:
                        description: Mobile phone number of the contact.
                        title: Mobile phone number
                        type: string
                      standard__contact_next_task_due_date:
                        description: Date indicating when the next task of the contact is due for completion
                        format: date-time
                        title: Next task due date
                        type: string
                      standard__contact_next_task_id:
                        description: ID of the next task of the contact
                        title: Next task ID
                        type: string
                      standard__contact_primary_company_id:
                        description: The primary company associated with the contact.
                        readOnly: true
                        title: Primary Company
                        type: string
                      standard__contact_primary_location_city_locality:
                        description: City or locality of the contact's primary location.
                        title: City/locality
                        type: string
                      standard__contact_primary_location_country:
                        description: Country of the contact's primary location.
                        title: Country
                        type: string
                      standard__contact_primary_location_state_province_region:
                        description: State, province, or region of the contact's primary location.
                        title: State/province/region
                        type: string
                      standard__contact_primary_location_street_address_1:
                        description: Street address line 1 of the contact's primary location.
                        title: Street address line 1
                        type: string
                      standard__contact_primary_location_street_address_2:
                        description: Street address line 2 of the contact's primary location.
                        title: Street address line 2
                        type: string
                      standard__contact_primary_location_zip_postal_code:
                        description: Zip or postal code of the contact's primary location.
                        title: Zip/postal code
                        type: string
                      standard__contact_role:
                        description: Role of the contact.
                        title: Role
                        type: string
                      standard__contact_seniority:
                        description: Seniority of the contact.
                        title: Seniority
                        type: string
                      standard__contact_skills:
                        description: Contact's skills. E.g. 'Java', 'Python', 'Javascript'
                        items:
                          type: string
                        title: Skills
                        type: array
                      standard__contact_source_name:
                        description: Name of the app or external system that created the contact. E.g. 'Salesforce', 'Hubspot', 'Gmail'
                        title: Source name
                        type: string
                      standard__contact_timezone:
                        description: 'Timezone of the contact. This is a string representing the timezone like ''America/New_York''. '
                        title: Timezone
                        type: string
                      standard__phone_number:
                        title: Phone number
                        type: string
                      standard__tags:
                        description: Descriptive keywords that help you find and segment contacts.
                        title: Tags
                        type: string
                      system__contact_created:
                        description: When the record was created
                        format: date
                        readOnly: true
                        title: Created date
                        type: string
                      system__contact_external_id:
                        description: External identifier for the record, optional
                        readOnly: true
                        title: External ID
                        type: string
                      system__contact_group_id:
                        description: Group ID for the record, optional. Used for grouping records together, and authorization where users are restricted to selected groups.
                        readOnly: true
                        title: Group ID
                        type: string
                      system__contact_id:
                        description: unique identifier for the record
                        readOnly: true
                        title: ID
                        type: string
                      system__contact_last_activity_date:
                        description: Date and time of last activity
                        format: date-time
                        title: Last activity date
                        type: string
                      system__contact_owner_id:
                        description: Owner ID for the record.
                        readOnly: true
                        title: Owner ID
                        type: string
                      system__contact_updated:
                        description: When the record was last updated
                        format: date
                        readOnly: true
                        title: Updated date
                        type: string
                      yesware__contact_enrichment_vendor_id:
                        description: The ID of the enrichment vendor in Yesware. If the contact has not been enriched, this field will be unset.
                        title: Yesware enrichment vendor ID
                        type: string
                      yesware__contact_id:
                        description: The ID of the contact in Yesware.
                        title: Yesware contact ID
                        type: string
                      yesware__contact_last_enrichment_date:
                        description: The date of the last enrichment in Yesware. If the contact has not been enriched, this field will be unset.
                        format: date-time
                        title: Yesware last enrichment date
                        type: string
          headers: {}
        '404':
          description: User Not Found
      operationId: ListFieldSchema
      description: '[Status](https://developers.vendasta.com/platform/ZG9jOjEwMTU2NTYy-versioning): `Proposed`


        Retrieve field schema based on namespace.'
      x-lifecycle:
        status: proposed
  /{namespace}/{resourceTypeCode}/meta/fields/{fieldId}/options:
    parameters:
    - schema:
        type: string
      name: namespace
      in: path
      required: true
      description: The namespace, PID/AGID
    - name: resourceTypeCode
      in: path
      required: true
      description: The resourceTypeCode, here contacts, companies or activities.
      schema:
        type: string
        enum:
        - activities
        - companies
        - contacts
        - callActivities
        - communicationActivities
        - emailActivities
        - meetingActivities
        - noteActivities
        - opportunityChangeActivities
        - recordChangeActivities
        - taskActivities
    - schema:
        type: string
      name: fieldId
      in: path
      required: true
      description: Unique identifier for field
    get:
      summary: Get field options
      tags:
      - Resource Operations
      responses:
        '200':
          description: 'The list of valid options for the field. This can be used to create a dropdown list for your users. '
          content:
            application/json:
              examples:
                Get field options:
                  value:
                    options:
                    - value: Option 1
                      name: Option 1
                    - value: Option 2
                      name: Option 2
                    - value: Option 3
                      name: Option 3
              schema:
                type: object
                properties:
                  options:
                    type: array
                    x-stoplight:
                      id: jwikc0afwakmo
                    items:
                      x-stoplight:
                        id: 1jmcjoeuy5wm9
                      type: object
                      properties:
                        name:
                          type: string
                          x-stoplight:
                            id: 6hk1kskoxz8sj
                          description: The text to be displayed to users. Note this might be translated.
                        value:
                          type: string
                          x-stoplight:
                            id: qdy9hr51rggn0
                          description: The value to be saved in the database
        '400':
          description: Bad Request
      operationId: GetFieldOptions
      description: '[Status](https://developers.vendasta.com/platform/ZG9jOjEwMTU2NTYy-versioning): `Proposed`


        Retrieve the field options based on the given fieldId.'
      parameters:
      - schema:
          type: string
        in: query
        name: filter
        description: Filtering is an OPTIONAL parameter. It filters field option based on given filter value.
      - schema:
          type: string
        in: query
        name: paging
        description: Pagination to retrieve a specific page of results
      x-lifecycle:
        status: proposed
  /{namespace}/{resourceTypeCode}:
    patch:
      summary: Upsert CRM Record
      operationId: UpsertCrmRecord
      parameters:
      - schema:
          type: string
        name: namespace
        in: path
        required: true
        description: The namespace, PID/AGID
      - name: resourceTypeCode
        in: path
        required: true
        description: The resourceTypeCode, here contacts, companies or activities.
        schema:
          type: string
          enum:
          - activities
          - companies
          - contacts
          - callActivities
          - communicationActivities
          - emailActivities
          - meetingActivities
          - noteActivities
          - opportunityChangeActivities
          - recordChangeActivities
          - taskActivities
          - customObjects
      requestBody:
        content:
          application/json:
            schema:
              x-examples:
                Example 1:
                  subtype: ''
                  fields:
                  - id: externalId
                    value: example-first-name
                    operation: always_overwrite
                  - id: externalId
                    value: example-last-name
                    operation: always_overwrite
                  - id: externalId
                    value: crm@example.com
                    operation: always_overwrite
                  searchExisting:
                  - standard__email
                  returnFields:
                  - standard__email
                  - standard__first_name
              oneOf:
              - description: V1
                title: Body V1
                properties:
                  subtype:
                    type: string
                  fields:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        value:
                          type: string
                          description: 'Most values are passed as string. In the case of lists and tags you can add a ''['' and '']'' surrounding the values. In the case of geopoints, ''[]'' surrounding two numeric values (lat,long). In the case of currency values, this value accepts the format ''{ currencyCode : "USD", amount : 000 } where amount is a numeric value.'
                        operation:
                          type: string
                          description: The supported operation types are `always_overwrite`, `overwrite_if_empty`, `overwrite_if_newer` & `combine`.
                  searchExisting:
                    type: array
                    items:
                      type: string
                  returnFields:
                    type: array
                    description: A list of fields that should have their merged values returned in the response. If empty no fields will be returned.
                    items:
                      type: string
              - x-stoplight:
                  id: 40hjq3h4hwo2a
                description: V2
                title: Body V2
                properties:
                  subtype:
                    type: string
                  data:
                    $ref: '#/components/schemas/CRMObject'
                    x-stoplight:
                      id: fd8bicknxqstx
                  searchExisting:
                    type: array
                    x-stoplight:
                      id: cljd7ngnz4sj9
                    items:
                      x-stoplight:
                        id: 2mp0l0b686d6t
                      type: string
                  returnFields:
                    type: array
                    x-stoplight:
                      id: y0c8br6d066lg
                    items:
                      x-stoplight:
                        id: awbzvw8b72sq3
                      type: string
              type: object
            examples:
              Request body:
                value:
                  subtype: ''
                  fields:
                  - id: standard__first_name
                    value: example-first-name
                    operation: always_overwrite
                  - id: standard__last_name
                    value: example-last-name
                    operation: always_overwrite
                  - id: standard__email
                    value: crm@example.com
                    operation: always_overwrite
                  searchExisting:
                  - standard__email
                  returnFields:
                  - standard__email
                  - standard__first_name
          application/xml:
            schema:
              type: object
              properties:
                subtype:
                  type: string
                fields:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      value:
                        type: string
                      operation:
                        type: string
                search_existing:
                  type: array
                  items:
                    type: string
                return_fields:
                  type: array
                  items:
                    type: string
            examples:
              Example:
                value: '{"subtype": "",

                  "fields": [

                  {

                  "Id": "externalId",

                  "value": "example-first-name",

                  "Operation": "always_overwrite"

                  },

                  {

                  "Id": "externalId",

                  "value": "example-last-name",

                  "Operation": "always_overwrite"

                  },

                  {

                  "Id": "externalId",

                  "value": "crm@example.com",

                  "Operation": "always_overwrite"

                  }

                  ],

                  "search_existing": [

                  "standard__email"

                  ],

                  "return_fields": [

                  "standard__email",

                  "standard__first_name"

                  ]

                  }'
        description: ''
      responses:
        '200':
          description: This API follows [Open API schema](https://spec.openapis.org/oas/v3.1.0#schema-object) of structure for response.
          content:
            application/json:
              schema:
                type: object
              examples:
                Response Body:
                  value:
                    fields:
                    - id: standard__first_name
                      value: Bob
                    - id: standard__email
                      value: crm@example.com
        '400':
          description: Bad Request
      tags:
      - Resource Operations
      x-stoplight:
        id: 1de3f0654bc17
      x-lifecycle:
        status: Trusted Tester
      description: "[Status](https://developers.vendasta.com/platform/ZG9jOjEwMTU2NTYy-versioning): \n\nv1: `Trusted Tester`\n\nv2: `Proposed`\n\n**v1 Description:**\n\nCreate/update CRM contacts, companies or activities records.\n\nDefault rules will be used to match existing records. You may specificy your own fields that contain unique values in `searchExisting`.\n\nIf a match is found the records will be merged using the always_overwrite, overwrite_if_empty, overwrite_if_newer & combine stratagy"
    post:
      summary: Create CRM Record
      operationId: CreateCrmRecord
      parameters:
      - schema:
          type: string
        name: namespace
        in: path
        required: true
        description: The namespace, PID/AGID
      - name: resourceTypeCode
        in: path
        required: true
        description: The resourceTypeCode, here contacts, companies or activities.
        schema:
          type: string
          enum:
          - activities
          - companies
          - contacts
          - callActivities
          - communicationActivities
          - emailActivities
          - meetingActivities
          - noteActivities
          - opportunityChangeActivities
          - recordChangeActivities
          - taskActivities
      responses:
        '200':
          description: Successful
        '400':
          description: Bad Request
      tags:
      - Resource Operations
      x-stoplight:
        id: j1bhs5sbm6rw4
      description: "[Status](https://developers.vendasta.com/platform/ZG9jOjEwMTU2NTYy-versioning): `Proposed`\n\nCreate a new CRM record. \nTip: Use Upsert CRM Record to automatically check for existing records to merge the provided data into."
  /{namespace}/{resourceTypeCode}/{id}:
    get:
      summary: Get CRM Record
      operationId: GetCrmRecord
      parameters:
      - schema:
          type: string
        name: namespace
        in: path
        required: true
        description: The account or partner ID
      - name: resourceTypeCode
        in: path
        required: true
        schema:
          type: string
          enum:
          - activities
          - callActivities
          - communicationActivities
          - companies
          - contacts
          - emailActivities
          - meetingActivities
          - noteActivities
          - opportunityChangeActivities
          - recordChangeActivities
          - taskActivities
        description: The type of object being worked on
      - schema:
          type: string
        name: id
        in: path
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                  id:
                    type: string
                  attributes:
                    $ref: '#/components/schemas/CRMObject'
      tags:
      - Resource Operations
      description: '[Status](https://developers.vendasta.com/platform/ZG9jOjEwMTU2NTYy-versioning): `Proposed`'
    delete:
      summary: Delete CRM Record
      operationId: DeleteCrmRecord
      parameters:
      - schema:
          type: string
        name: namespace
        in: path
        required: true
        description: The account or partner ID
      - name: resourceTypeCode
        in: path
        required: true
        schema:
          type: string
          enum:
          - activities
          - callActivities
          - communicationActivities
          - companies
          - contacts
          - emailActivities
          - meetingActivities
          - noteActivities
          - opportunityChangeActivities
          - recordChangeActivities
          - taskActivities
        description: The type of object being worked on
      - schema:
          type: string
        name: id
        in: path
        required: true
      responses:
        '200':
          description: Successful
        '400':
          description: Bad Request
      tags:
      - Resource Operations
      description: '[Status](https://developers.vendasta.com/platform/ZG9jOjEwMTU2NTYy-versioning): `Proposed`'
    patch:
      summary: Update CRM Record
      operationId: UpdateCrmRecord
      parameters:
      - schema:
          type: string
        name: namespace
        in: path
        required: true
        description: The account or partner ID
      - name: resourceTypeCode
        in: path
        required: true
        schema:
          type: string
          enum:
          - activities
          - callActivities
          - communicationActivities
          - companies
          - contacts
          - emailActivities
          - meetingActivities
          - noteActivities
          - opportunityChangeActivities
          - recordChangeActivities
          - taskActivities
        description: The type of object being worked on
      - schema:
          type: string
        name: id
        in: path
        required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                data:
                  $ref: '#/components/schemas/CRMObject'
      responses:
        '200':
          description: Successful
          content: {}
        '400':
          description: Bad Request
      tags:
      - Resource Operations
      description: '[Status](https://developers.vendasta.com/platform/ZG9jOjEwMTU2NTYy-versioning): `Proposed`'
  /list/{namespace}/{resourceTypeCode}:
    post:
      operationId: ListCrmRecords
      summary: List CRM Records
      parameters:
      - schema:
          type: string
        name: namespace
        in: path
        required: true
        description: The namespace, PID/AGID
      - schema:
          type: string
        name: resourceTypeCode
        in: path
        required: true
        description: The resourceTypeCode, here contacts, companies or activities.
      requestBody:
        description: ''
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                subtype:
                  type: string
                fields:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      value:
                        description: For date and time use a string in the RFC 3339 format
                        oneOf:
                        - type: string
                        - type: boolean
                        - type: integer
                        - type: number
                        - type: array
                          items:
                            oneOf:
                            - type: string
                            - type: boolean
                            - type: integer
                            - type: number
                      operation:
                        type: string
                        nullable: true
                        description: "The list will filter the results based on the operation applied over the field regarding the value. \n\nOperations available depend on the type of field : \n\n**string**: [  \"IS\",  \"IS_NOT\",  \"IS_EMPTY\",  \"IS_NOT_EMPTY\",  \"IS_ANY\",  \"IS_NOT_ANY\"] \n\n**string_list**: [  \"IS_EMPTY\",  \"IS_NOT_EMPTY\",  \"IS_ANY\",  \"IS_NOT_ANY\",  \"IS_ALL\",  \"IS_NOT_ALL\"] \n\n**boolean**: [  \"IS\",  \"IS_EMPTY\",  \"IS_NOT_EMPTY\"] \n\n**date**: [  \"IS\",  \"IS_NOT\",  \"IS_EMPTY\",  \"IS_NOT_EMPTY\",  \"IS_BEFORE\",  \"IS_BEFORE_OR_ON\",  \"IS_AFTER\",  \"IS_AFTER_OR_ON\",  \"IS_BETWEEN\",  \"IS_NOT_BETWEEN\"] \n\n**integer**: [  \"IS_EQUAL_TO\",  \"IS_NOT_EQUAL_TO\",  \"IS_EMPTY\",  \"IS_NOT_EMPTY\",  \"IS_GREATER_THAN\",  \"IS_GREATER_THAN_OR_EQUAL_TO\",  \"IS_LESS_THAN\",  \"IS_LESS_THAN_OR_EQUAL_TO\",  \"IS_BETWEEN\",  \"IS_NOT_BETWEEN\"] \n\n**phone** [  \"IS\",  \"IS_NOT\",  \"IS_EMPTY\",  \"IS_NOT_EMPTY\",  \"IS_VALID\",  \"IS_NOT_VALID\"] \n\n**tag** [  \"IS_EMPTY\",  \"IS_NOT_EMPTY\",  \"IS_ANY\",  \"IS_NOT_ANY\",  \"IS_ALL\",  \"IS_NOT_ALL\"] \n\nDefault: **\"IS\"**"
                        enum:
                        - IS
                        - IS_NOT
                        - IS_EMPTY
                        - IS_NOT_EMPTY
                        - IS_ANY
                        - IS_NOT_ANY
                        - IS_ALL
                        - IS_NOT_ALL
                        - CONTAINS
                        - DOES_NOT_CONTAIN
                        - IS_EQUAL_TO
                        - IS_NOT_EQUAL_TO
                        - IS_GREATER_THAN
                        - IS_GREATER_THAN_OR_EQUAL_TO
                        - IS_LESS_THAN
                        - IS_LESS_THAN_OR_EQUAL_TO
                        - IS_BEFORE
                        - IS_BEFORE_OR_ON
                        - IS_AFTER
                        - IS_AFTER_OR_ON
                        - IS_BETWEEN
                        - IS_NOT_BETWEEN
                returnFields:
                  type: array
                  description: A list of fields that should have their values returned in the response. If empty all fields will be returned.
                  items:
                    type: string
                page:
                  type: object
                  description: Parameters for pagination of results
                  properties:
                    cursor:
                      type: string
                    limit:
                      type: integer
              x-examples:
                Example 1:
                  subtype: ''
                  fields:
                  - id: externalId
                    value: ex

# --- truncated at 32 KB (111 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vendasta/refs/heads/main/openapi/vendasta-resource-operations-api-openapi.yml