naftiko: 1.0.0-alpha2 info: label: ActiveCampaign API v3 — Custom Objects description: 'ActiveCampaign API v3 — Custom Objects. 13 operations. Lead operation: ActiveCampaign List Records by Schema. Self-contained Naftiko capability covering one Activecampaign business surface.' tags: - Activecampaign - Custom Objects created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: ACTIVECAMPAIGN_API_KEY: ACTIVECAMPAIGN_API_KEY capability: consumes: - type: http namespace: v3-custom-objects baseUri: https://{yourAccountName}.api-us1.com/api/3 description: ActiveCampaign API v3 — Custom Objects business capability. Self-contained, no shared references. resources: - name: customObjects-records-schemaId path: /customObjects/records/{schemaId} operations: - name: listrecordscreatedfromaschema method: GET description: ActiveCampaign List Records by Schema outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: schemaId in: path type: string description: ID of schema required: true - name: limit in: query type: integer description: The number of records to return for each call. Maximum value is 100. - name: offset in: query type: integer description: Offset index of records to return - name: filters in: query type: array description: Use ?filters[relationships.{your-contact-relationship}][eq]={contactId} to filter records to a specific contact. - name: createorupdaterecord method: POST description: ActiveCampaign Create or Update Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: schemaId in: path type: string description: ID of schema required: true - name: body in: body type: object description: Request body (JSON). required: false - name: customObjects-records-schemaId-external-externalId path: /customObjects/records/{schemaId}/external/{externalId} operations: - name: deletearecordbyexternalid method: DELETE description: ActiveCampaign Delete a Record by External ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: schemaId in: path type: string description: ID of schema required: true - name: externalId in: path type: string description: External ID of record required: true - name: customObjects-records-schemaId-recordId path: /customObjects/records/{schemaId}/{recordId} operations: - name: getasinglerecord method: GET description: ActiveCampaign Get a Record by Id outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: schemaId in: path type: string description: ID of schema required: true - name: recordId in: path type: string description: ID of record required: true - name: deletearecord method: DELETE description: ActiveCampaign Delete a Record by Id outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: schemaId in: path type: string description: ID of schema required: true - name: recordId in: path type: string description: ID of record required: true - name: customObjects-schemas path: /customObjects/schemas operations: - name: listallschemas method: GET description: ActiveCampaign List All Schemas outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: The number of schemas to retrieve for each API call. Maximum value is 100. - name: offset in: query type: integer description: Offset index of items to return - name: orders in: query type: array description: Array of sorting criteria to fetch items - name: filters in: query type: string description: Filters schemas by different criteria - name: showFields in: query type: string description: Toggle which fields are shown in the response body of a schema (if there hidden due to e.g. recently being deleted). Omit this parameter entirely to hide fields - name: createaschema method: POST description: ActiveCampaign Create a Schema outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: customObjects-schemas-public path: /customObjects/schemas/public operations: - name: createapublicschema method: POST description: ActiveCampaign Create a Public Schema outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: customObjects-schemas-id path: /customObjects/schemas/{id} operations: - name: retrieveaschema method: GET description: ActiveCampaign Retrieve a Schema outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Id of the Schema required: true - name: showFields in: query type: string description: Toggle which fields are shown in the response body of a schema (if there hidden due to e.g. recently being deleted). Omit this parameter entirely to hide fields - name: deleteaschema method: DELETE description: ActiveCampaign Delete a Schema outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Id of schema to delete required: true - name: customObjects-schemas-id-child path: /customObjects/schemas/{id}/child operations: - name: createachildschema method: POST description: ActiveCampaign Create a Child Schema outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Id of the parent schema the new child schema will extend required: true - name: customObjects-schemas-schemaId path: /customObjects/schemas/{schemaId} operations: - name: updateaschema method: PUT description: ActiveCampaign Update a Schema outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: schemaId in: path type: string description: Id of Schema being updated required: true - name: validateOnly in: header type: boolean description: When set to `true` the API will validate the schema update without saving changes - name: showFields in: query type: string description: Toggle which fields are shown in the response body of a schema (if there hidden due to e.g. recently being deleted). Omit this parameter entirely to hide fields - name: body in: body type: object description: Request body (JSON). required: false - name: customObjects-schemas-schemaId-fields-fieldId path: /customObjects/schemas/{schemaId}/fields/{fieldId} operations: - name: deleteafield1 method: DELETE description: ActiveCampaign Delete a Field outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: schemaId in: path type: string description: Schema ID of the field to be deleted required: true - name: fieldId in: path type: string description: Field ID of the field to be deleted required: true - name: showFields in: query type: string description: Toggle which fields are shown in the response body of a schema (if there hidden due to e.g. recently being deleted). Omit this parameter entirely to hide fields authentication: type: apikey key: Api-Token value: '{{env.ACTIVECAMPAIGN_API_KEY}}' placement: header exposes: - type: rest namespace: v3-custom-objects-rest port: 8080 description: REST adapter for ActiveCampaign API v3 — Custom Objects. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/customobjects/records/{schemaid} name: customobjects-records-schemaid description: REST surface for customObjects-records-schemaId. operations: - method: GET name: listrecordscreatedfromaschema description: ActiveCampaign List Records by Schema call: v3-custom-objects.listrecordscreatedfromaschema with: schemaId: rest.schemaId limit: rest.limit offset: rest.offset filters: rest.filters outputParameters: - type: object mapping: $. - method: POST name: createorupdaterecord description: ActiveCampaign Create or Update Record call: v3-custom-objects.createorupdaterecord with: schemaId: rest.schemaId body: rest.body outputParameters: - type: object mapping: $. - path: /v1/customobjects/records/{schemaid}/external/{externalid} name: customobjects-records-schemaid-external-externalid description: REST surface for customObjects-records-schemaId-external-externalId. operations: - method: DELETE name: deletearecordbyexternalid description: ActiveCampaign Delete a Record by External ID call: v3-custom-objects.deletearecordbyexternalid with: schemaId: rest.schemaId externalId: rest.externalId outputParameters: - type: object mapping: $. - path: /v1/customobjects/records/{schemaid}/{recordid} name: customobjects-records-schemaid-recordid description: REST surface for customObjects-records-schemaId-recordId. operations: - method: GET name: getasinglerecord description: ActiveCampaign Get a Record by Id call: v3-custom-objects.getasinglerecord with: schemaId: rest.schemaId recordId: rest.recordId outputParameters: - type: object mapping: $. - method: DELETE name: deletearecord description: ActiveCampaign Delete a Record by Id call: v3-custom-objects.deletearecord with: schemaId: rest.schemaId recordId: rest.recordId outputParameters: - type: object mapping: $. - path: /v1/customobjects/schemas name: customobjects-schemas description: REST surface for customObjects-schemas. operations: - method: GET name: listallschemas description: ActiveCampaign List All Schemas call: v3-custom-objects.listallschemas with: limit: rest.limit offset: rest.offset orders: rest.orders filters: rest.filters showFields: rest.showFields outputParameters: - type: object mapping: $. - method: POST name: createaschema description: ActiveCampaign Create a Schema call: v3-custom-objects.createaschema with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/customobjects/schemas/public name: customobjects-schemas-public description: REST surface for customObjects-schemas-public. operations: - method: POST name: createapublicschema description: ActiveCampaign Create a Public Schema call: v3-custom-objects.createapublicschema with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/customobjects/schemas/{id} name: customobjects-schemas-id description: REST surface for customObjects-schemas-id. operations: - method: GET name: retrieveaschema description: ActiveCampaign Retrieve a Schema call: v3-custom-objects.retrieveaschema with: id: rest.id showFields: rest.showFields outputParameters: - type: object mapping: $. - method: DELETE name: deleteaschema description: ActiveCampaign Delete a Schema call: v3-custom-objects.deleteaschema with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/customobjects/schemas/{id}/child name: customobjects-schemas-id-child description: REST surface for customObjects-schemas-id-child. operations: - method: POST name: createachildschema description: ActiveCampaign Create a Child Schema call: v3-custom-objects.createachildschema with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/customobjects/schemas/{schemaid} name: customobjects-schemas-schemaid description: REST surface for customObjects-schemas-schemaId. operations: - method: PUT name: updateaschema description: ActiveCampaign Update a Schema call: v3-custom-objects.updateaschema with: schemaId: rest.schemaId validateOnly: rest.validateOnly showFields: rest.showFields body: rest.body outputParameters: - type: object mapping: $. - path: /v1/customobjects/schemas/{schemaid}/fields/{fieldid} name: customobjects-schemas-schemaid-fields-fieldid description: REST surface for customObjects-schemas-schemaId-fields-fieldId. operations: - method: DELETE name: deleteafield1 description: ActiveCampaign Delete a Field call: v3-custom-objects.deleteafield1 with: schemaId: rest.schemaId fieldId: rest.fieldId showFields: rest.showFields outputParameters: - type: object mapping: $. - type: mcp namespace: v3-custom-objects-mcp port: 9090 transport: http description: MCP adapter for ActiveCampaign API v3 — Custom Objects. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: activecampaign-list-records-schema description: ActiveCampaign List Records by Schema hints: readOnly: true destructive: false idempotent: true call: v3-custom-objects.listrecordscreatedfromaschema with: schemaId: tools.schemaId limit: tools.limit offset: tools.offset filters: tools.filters outputParameters: - type: object mapping: $. - name: activecampaign-create-update-record description: ActiveCampaign Create or Update Record hints: readOnly: false destructive: false idempotent: false call: v3-custom-objects.createorupdaterecord with: schemaId: tools.schemaId body: tools.body outputParameters: - type: object mapping: $. - name: activecampaign-delete-record-external-id description: ActiveCampaign Delete a Record by External ID hints: readOnly: false destructive: true idempotent: true call: v3-custom-objects.deletearecordbyexternalid with: schemaId: tools.schemaId externalId: tools.externalId outputParameters: - type: object mapping: $. - name: activecampaign-get-record-id description: ActiveCampaign Get a Record by Id hints: readOnly: true destructive: false idempotent: true call: v3-custom-objects.getasinglerecord with: schemaId: tools.schemaId recordId: tools.recordId outputParameters: - type: object mapping: $. - name: activecampaign-delete-record-id description: ActiveCampaign Delete a Record by Id hints: readOnly: false destructive: true idempotent: true call: v3-custom-objects.deletearecord with: schemaId: tools.schemaId recordId: tools.recordId outputParameters: - type: object mapping: $. - name: activecampaign-list-all-schemas description: ActiveCampaign List All Schemas hints: readOnly: true destructive: false idempotent: true call: v3-custom-objects.listallschemas with: limit: tools.limit offset: tools.offset orders: tools.orders filters: tools.filters showFields: tools.showFields outputParameters: - type: object mapping: $. - name: activecampaign-create-schema description: ActiveCampaign Create a Schema hints: readOnly: false destructive: false idempotent: false call: v3-custom-objects.createaschema with: body: tools.body outputParameters: - type: object mapping: $. - name: activecampaign-create-public-schema description: ActiveCampaign Create a Public Schema hints: readOnly: false destructive: false idempotent: false call: v3-custom-objects.createapublicschema with: body: tools.body outputParameters: - type: object mapping: $. - name: activecampaign-retrieve-schema description: ActiveCampaign Retrieve a Schema hints: readOnly: true destructive: false idempotent: true call: v3-custom-objects.retrieveaschema with: id: tools.id showFields: tools.showFields outputParameters: - type: object mapping: $. - name: activecampaign-delete-schema description: ActiveCampaign Delete a Schema hints: readOnly: false destructive: true idempotent: true call: v3-custom-objects.deleteaschema with: id: tools.id outputParameters: - type: object mapping: $. - name: activecampaign-create-child-schema description: ActiveCampaign Create a Child Schema hints: readOnly: false destructive: false idempotent: false call: v3-custom-objects.createachildschema with: id: tools.id outputParameters: - type: object mapping: $. - name: activecampaign-update-schema description: ActiveCampaign Update a Schema hints: readOnly: false destructive: false idempotent: true call: v3-custom-objects.updateaschema with: schemaId: tools.schemaId validateOnly: tools.validateOnly showFields: tools.showFields body: tools.body outputParameters: - type: object mapping: $. - name: activecampaign-delete-field description: ActiveCampaign Delete a Field hints: readOnly: false destructive: true idempotent: true call: v3-custom-objects.deleteafield1 with: schemaId: tools.schemaId fieldId: tools.fieldId showFields: tools.showFields outputParameters: - type: object mapping: $.