Schematic · Capability

Schematic API — companies

Schematic API — companies. 36 operations. Lead operation: List companies. Self-contained Naftiko capability covering one Schematic business surface.

Run with Naftiko Schematiccompanies

What You Can Do

GET
Listcompanies — List companies
/v1/companies
POST
Upsertcompany — Upsert company
/v1/companies
GET
Countcompanies — Count companies
/v1/companies/count
POST
Createcompany — Create company
/v1/companies/create
POST
Deletecompanybykeys — Delete company by keys
/v1/companies/delete
GET
Lookupcompany — Lookup company
/v1/companies/lookup
GET
Getcompany — Get company
/v1/companies/{company-id}
DELETE
Deletecompany — Delete company
/v1/companies/{company-id}
GET
Listcompanymemberships — List company memberships
/v1/company-memberships
POST
Getorcreatecompanymembership — Get or create company membership
/v1/company-memberships
DELETE
Deletecompanymembership — Delete company membership
/v1/company-memberships/{company-membership-id}
GET
Getactivecompanysubscription — Get active company subscription
/v1/company-subscriptions
POST
Upsertcompanytrait — Upsert company trait
/v1/company-traits
GET
Listentitykeydefinitions — List entity key definitions
/v1/entity-key-definitions
GET
Countentitykeydefinitions — Count entity key definitions
/v1/entity-key-definitions/count
GET
Listentitytraitdefinitions — List entity trait definitions
/v1/entity-trait-definitions
POST
Getorcreateentitytraitdefinition — Get or create entity trait definition
/v1/entity-trait-definitions
GET
Countentitytraitdefinitions — Count entity trait definitions
/v1/entity-trait-definitions/count
GET
Getentitytraitdefinition — Get entity trait definition
/v1/entity-trait-definitions/{entity-trait-definition-id}
PUT
Updateentitytraitdefinition — Update entity trait definition
/v1/entity-trait-definitions/{entity-trait-definition-id}
GET
Getentitytraitvalues — Get entity trait values
/v1/entity-trait-values
GET
Listplanchanges — List plan changes
/v1/plan-changes
GET
Getplanchange — Get plan change
/v1/plan-changes/{plan-change-id}
GET
Listplantraits — List plan traits
/v1/plan-traits
POST
Updateplantraitsbulk — Update plan traits bulk
/v1/plan-traits/bulk
GET
Countplantraits — Count plan traits
/v1/plan-traits/count
GET
Getplantrait — Get plan trait
/v1/plan-traits/{plan-trait-id}
POST
Upsertusertrait — Upsert user trait
/v1/user-traits
GET
Listusers — List users
/v1/users
POST
Upsertuser — Upsert user
/v1/users
GET
Countusers — Count users
/v1/users/count
POST
Createuser — Create user
/v1/users/create
POST
Deleteuserbykeys — Delete user by keys
/v1/users/delete
GET
Lookupuser — Lookup user
/v1/users/lookup
GET
Getuser — Get user
/v1/users/{user-id}
DELETE
Deleteuser — Delete user
/v1/users/{user-id}

MCP Tools

list-companies

List companies

read-only idempotent
upsert-company

Upsert company

count-companies

Count companies

read-only idempotent
create-company

Create company

delete-company-keys

Delete company by keys

lookup-company

Lookup company

read-only idempotent
get-company

Get company

read-only idempotent
delete-company

Delete company

idempotent
list-company-memberships

List company memberships

read-only idempotent
get-create-company-membership

Get or create company membership

read-only
delete-company-membership

Delete company membership

idempotent
get-active-company-subscription

Get active company subscription

read-only idempotent
upsert-company-trait

Upsert company trait

list-entity-key-definitions

List entity key definitions

read-only idempotent
count-entity-key-definitions

Count entity key definitions

read-only idempotent
list-entity-trait-definitions

List entity trait definitions

read-only idempotent
get-create-entity-trait-definition

Get or create entity trait definition

read-only
count-entity-trait-definitions

Count entity trait definitions

read-only idempotent
get-entity-trait-definition

Get entity trait definition

read-only idempotent
update-entity-trait-definition

Update entity trait definition

idempotent
get-entity-trait-values

Get entity trait values

read-only idempotent
list-plan-changes

List plan changes

read-only idempotent
get-plan-change

Get plan change

read-only idempotent
list-plan-traits

List plan traits

read-only idempotent
update-plan-traits-bulk

Update plan traits bulk

count-plan-traits

Count plan traits

read-only idempotent
get-plan-trait

Get plan trait

read-only idempotent
upsert-user-trait

Upsert user trait

list-users

List users

read-only idempotent
upsert-user

Upsert user

count-users

Count users

read-only idempotent
create-user

Create user

delete-user-keys

Delete user by keys

lookup-user

Lookup user

read-only idempotent
get-user

Get user

read-only idempotent
delete-user

Delete user

idempotent

Capability Spec

schematic-companies.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Schematic API — companies
  description: 'Schematic API — companies. 36 operations. Lead operation: List companies. Self-contained Naftiko capability
    covering one Schematic business surface.'
  tags:
  - Schematic
  - companies
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    SCHEMATIC_API_KEY: SCHEMATIC_API_KEY
capability:
  consumes:
  - type: http
    namespace: schematic-companies
    baseUri: https://api.schematichq.com
    description: Schematic API — companies business capability. Self-contained, no shared references.
    resources:
    - name: companies
      path: /companies
      operations:
      - name: listcompanies
        method: GET
        description: List companies
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: credit_type_ids
          in: query
          type: array
          description: Filter companies by one or more credit type IDs (each ID starts with bcrd_)
        - name: has_scheduled_downgrade
          in: query
          type: boolean
          description: Filter companies that have a pending scheduled downgrade
        - name: ids
          in: query
          type: array
          description: Filter companies by multiple company IDs (starts with comp_)
        - name: monetized_subscriptions
          in: query
          type: boolean
          description: Filter companies that have monetized subscriptions
        - name: plan_id
          in: query
          type: string
          description: Filter companies by plan ID (starts with plan_)
        - name: plan_ids
          in: query
          type: array
          description: Filter companies by one or more plan IDs (each ID starts with plan_)
        - name: plan_version_id
          in: query
          type: string
          description: Filter companies by plan version ID (starts with plvr_)
        - name: q
          in: query
          type: string
          description: Search for companies by name, keys or string traits
        - name: sort_order_column
          in: query
          type: string
          description: Column to sort by (e.g. name, created_at, last_seen_at)
        - name: sort_order_direction
          in: query
          type: string
          description: Direction to sort by (asc or desc)
        - name: subscription_statuses
          in: query
          type: array
          description: Filter companies by one or more subscription statuses
        - name: subscription_types
          in: query
          type: array
          description: Filter companies by one or more subscription types
        - name: with_entitlement_for
          in: query
          type: string
          description: Filter companies that have an entitlement (plan entitlement or company override) for the specified
            feature ID
        - name: without_feature_override_for
          in: query
          type: string
          description: Filter out companies that already have a company override for the specified feature ID
        - name: without_plan
          in: query
          type: boolean
          description: Filter out companies that have a plan
        - name: without_subscription
          in: query
          type: boolean
          description: Filter out companies that have a subscription
        - name: with_subscription
          in: query
          type: boolean
          description: Filter companies that have a subscription
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: upsertcompany
        method: POST
        description: Upsert company
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: companies-count
      path: /companies/count
      operations:
      - name: countcompanies
        method: GET
        description: Count companies
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: credit_type_ids
          in: query
          type: array
          description: Filter companies by one or more credit type IDs (each ID starts with bcrd_)
        - name: has_scheduled_downgrade
          in: query
          type: boolean
          description: Filter companies that have a pending scheduled downgrade
        - name: ids
          in: query
          type: array
          description: Filter companies by multiple company IDs (starts with comp_)
        - name: monetized_subscriptions
          in: query
          type: boolean
          description: Filter companies that have monetized subscriptions
        - name: plan_id
          in: query
          type: string
          description: Filter companies by plan ID (starts with plan_)
        - name: plan_ids
          in: query
          type: array
          description: Filter companies by one or more plan IDs (each ID starts with plan_)
        - name: plan_version_id
          in: query
          type: string
          description: Filter companies by plan version ID (starts with plvr_)
        - name: q
          in: query
          type: string
          description: Search for companies by name, keys or string traits
        - name: sort_order_column
          in: query
          type: string
          description: Column to sort by (e.g. name, created_at, last_seen_at)
        - name: sort_order_direction
          in: query
          type: string
          description: Direction to sort by (asc or desc)
        - name: subscription_statuses
          in: query
          type: array
          description: Filter companies by one or more subscription statuses
        - name: subscription_types
          in: query
          type: array
          description: Filter companies by one or more subscription types
        - name: with_entitlement_for
          in: query
          type: string
          description: Filter companies that have an entitlement (plan entitlement or company override) for the specified
            feature ID
        - name: without_feature_override_for
          in: query
          type: string
          description: Filter out companies that already have a company override for the specified feature ID
        - name: without_plan
          in: query
          type: boolean
          description: Filter out companies that have a plan
        - name: without_subscription
          in: query
          type: boolean
          description: Filter out companies that have a subscription
        - name: with_subscription
          in: query
          type: boolean
          description: Filter companies that have a subscription
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: companies-create
      path: /companies/create
      operations:
      - name: createcompany
        method: POST
        description: Create company
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: companies-delete
      path: /companies/delete
      operations:
      - name: deletecompanybykeys
        method: POST
        description: Delete company by keys
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: companies-lookup
      path: /companies/lookup
      operations:
      - name: lookupcompany
        method: GET
        description: Lookup company
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: keys
          in: query
          type: object
          description: Key/value pairs
          required: true
    - name: companies-company_id
      path: /companies/{company_id}
      operations:
      - name: getcompany
        method: GET
        description: Get company
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_id
          in: path
          type: string
          description: company_id
          required: true
      - name: deletecompany
        method: DELETE
        description: Delete company
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_id
          in: path
          type: string
          description: company_id
          required: true
        - name: cancel_subscription
          in: query
          type: boolean
        - name: prorate
          in: query
          type: boolean
    - name: company-memberships
      path: /company-memberships
      operations:
      - name: listcompanymemberships
        method: GET
        description: List company memberships
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_id
          in: query
          type: string
        - name: user_id
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: getorcreatecompanymembership
        method: POST
        description: Get or create company membership
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: company-memberships-company_membership_id
      path: /company-memberships/{company_membership_id}
      operations:
      - name: deletecompanymembership
        method: DELETE
        description: Delete company membership
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_membership_id
          in: path
          type: string
          description: company_membership_id
          required: true
    - name: company-subscriptions
      path: /company-subscriptions
      operations:
      - name: getactivecompanysubscription
        method: GET
        description: Get active company subscription
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_id
          in: query
          type: string
        - name: company_ids
          in: query
          type: array
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: company-traits
      path: /company-traits
      operations:
      - name: upsertcompanytrait
        method: POST
        description: Upsert company trait
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: entity-key-definitions
      path: /entity-key-definitions
      operations:
      - name: listentitykeydefinitions
        method: GET
        description: List entity key definitions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: entity_type
          in: query
          type: string
        - name: ids
          in: query
          type: array
        - name: q
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: entity-key-definitions-count
      path: /entity-key-definitions/count
      operations:
      - name: countentitykeydefinitions
        method: GET
        description: Count entity key definitions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: entity_type
          in: query
          type: string
        - name: ids
          in: query
          type: array
        - name: q
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: entity-trait-definitions
      path: /entity-trait-definitions
      operations:
      - name: listentitytraitdefinitions
        method: GET
        description: List entity trait definitions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: entity_type
          in: query
          type: string
        - name: ids
          in: query
          type: array
        - name: q
          in: query
          type: string
        - name: trait_type
          in: query
          type: string
        - name: trait_types
          in: query
          type: array
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: getorcreateentitytraitdefinition
        method: POST
        description: Get or create entity trait definition
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: entity-trait-definitions-count
      path: /entity-trait-definitions/count
      operations:
      - name: countentitytraitdefinitions
        method: GET
        description: Count entity trait definitions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: entity_type
          in: query
          type: string
        - name: ids
          in: query
          type: array
        - name: q
          in: query
          type: string
        - name: trait_type
          in: query
          type: string
        - name: trait_types
          in: query
          type: array
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: entity-trait-definitions-entity_trait_definition_id
      path: /entity-trait-definitions/{entity_trait_definition_id}
      operations:
      - name: getentitytraitdefinition
        method: GET
        description: Get entity trait definition
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: entity_trait_definition_id
          in: path
          type: string
          description: entity_trait_definition_id
          required: true
      - name: updateentitytraitdefinition
        method: PUT
        description: Update entity trait definition
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: entity_trait_definition_id
          in: path
          type: string
          description: entity_trait_definition_id
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: entity-trait-values
      path: /entity-trait-values
      operations:
      - name: getentitytraitvalues
        method: GET
        description: Get entity trait values
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: definition_id
          in: query
          type: string
          required: true
        - name: q
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: plan-changes
      path: /plan-changes
      operations:
      - name: listplanchanges
        method: GET
        description: List plan changes
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: action
          in: query
          type: string
        - name: base_plan_action
          in: query
          type: string
        - name: company_id
          in: query
          type: string
        - name: company_ids
          in: query
          type: array
        - name: plan_ids
          in: query
          type: array
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: plan-changes-plan_change_id
      path: /plan-changes/{plan_change_id}
      operations:
      - name: getplanchange
        method: GET
        description: Get plan change
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: plan_change_id
          in: path
          type: string
          description: plan_change_id
          required: true
    - name: plan-traits
      path: /plan-traits
      operations:
      - name: listplantraits
        method: GET
        description: List plan traits
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: ids
          in: query
          type: array
        - name: plan_id
          in: query
          type: string
        - name: trait_id
          in: query
          type: string
        - name: trait_ids
          in: query
          type: array
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: plan-traits-bulk
      path: /plan-traits/bulk
      operations:
      - name: updateplantraitsbulk
        method: POST
        description: Update plan traits bulk
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: plan-traits-count
      path: /plan-traits/count
      operations:
      - name: countplantraits
        method: GET
        description: Count plan traits
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: ids
          in: query
          type: array
        - name: plan_id
          in: query
          type: string
        - name: trait_id
          in: query
          type: string
        - name: trait_ids
          in: query
          type: array
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: plan-traits-plan_trait_id
      path: /plan-traits/{plan_trait_id}
      operations:
      - name: getplantrait
        method: GET
        description: Get plan trait
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: plan_trait_id
          in: path
          type: string
          description: plan_trait_id
          required: true
    - name: user-traits
      path: /user-traits
      operations:
      - name: upsertusertrait
        method: POST
        description: Upsert user trait
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: users
      path: /users
      operations:
      - name: listusers
        method: GET
        description: List users
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_id
          in: query
          type: string
          description: Filter users by company ID (starts with comp_)
        - name: ids
          in: query
          type: array
          description: Filter users by multiple user IDs (starts with user_)
        - name: plan_id
          in: query
          type: string
          description: Filter users by plan ID (starts with plan_)
        - name: q
          in: query
          type: string
          description: Search for users by name, keys or string traits
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
      - name: upsertuser
        method: POST
        description: Upsert user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: users-count
      path: /users/count
      operations:
      - name: countusers
        method: GET
        description: Count users
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: company_id
          in: query
          type: string
          description: Filter users by company ID (starts with comp_)
        - name: ids
          in: query
          type: array
          description: Filter users by multiple user IDs (starts with user_)
        - name: plan_id
          in: query
          type: string
          description: Filter users by plan ID (starts with plan_)
        - name: q
          in: query
          type: string
          description: Search for users by name, keys or string traits
        - name: limit
          in: query
          type: integer
          description: Page limit (default 100)
        - name: offset
          in: query
          type: integer
          description: Page offset (default 0)
    - name: users-create
      path: /users/create
      operations:
      - name: createuser
        method: POST
        description: Create user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: users-delete
      path: /users/delete
      operations:
      - name: deleteuserbykeys
        method: POST
        description: Delete user by keys
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: users-lookup
      path: /users/lookup
      operations:
      - name: lookupuser
        method: GET
        description: Lookup user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: keys
          in: query
          type: object
          description: Key/value pairs
          required: true
    - name: users-user_id
      path: /users/{user_id}
      operations:
      - name: getuser
        method: GET
        description: Get user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: user_id
          in: path
          type: string
          description: user_id
          required: true
      - name: deleteuser
        method: DELETE
        description: Delete user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: user_id
          in: path
          type: string
          description: user_id
          required: true
    authentication:
      type: apikey
      key: X-Schematic-Api-Key
      value: '{{env.SCHEMATIC_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: schematic-companies-rest
    port: 8080
    description: REST adapter for Schematic API — companies. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/companies
      name: companies
      description: REST surface for companies.
      operations:
      - method: GET
        name: listcompanies
        description: List companies
        call: schematic-companies.listcompanies
        with:
          credit_type_ids: rest.credit_type_ids
          has_scheduled_downgrade: rest.has_scheduled_downgrade
          ids: rest.ids
          monetized_subscriptions: rest.monetized_subscriptions
          plan_id: rest.plan_id
          plan_ids: rest.plan_ids
          plan_version_id: rest.plan_version_id
          q: rest.q
          sort_order_column: rest.sort_order_column
          sort_order_direction: rest.sort_order_direction
          subscription_statuses: rest.subscription_statuses
          subscription_types: rest.subscription_types
          with_entitlement_for: rest.with_entitlement_for
          without_feature_override_for: rest.without_feature_override_for
          without_plan: rest.without_plan
          without_subscription: rest.without_subscription
          with_subscription: rest.with_subscription
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: upsertcompany
        description: Upsert company
        call: schematic-companies.upsertcompany
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/companies/count
      name: companies-count
      description: REST surface for companies-count.
      operations:
      - method: GET
        name: countcompanies
        description: Count companies
        call: schematic-companies.countcompanies
        with:
          credit_type_ids: rest.credit_type_ids
          has_scheduled_downgrade: rest.has_scheduled_downgrade
          ids: rest.ids
          monetized_subscriptions: rest.monetized_subscriptions
          plan_id: rest.plan_id
          plan_ids: rest.plan_ids
          plan_version_id: rest.plan_version_id
          q: rest.q
          sort_order_column: rest.sort_order_column
          sort_order_direction: rest.sort_order_direction
          subscription_statuses: rest.subscription_statuses
          subscription_types: rest.subscription_types
          with_entitlement_for: rest.with_entitlement_for
          without_feature_override_for: rest.without_feature_override_for
          without_plan: rest.without_plan
          without_subscription: rest.without_subscription
          with_subscription: rest.with_subscription
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/companies/create
      name: companies-create
      description: REST surface for companies-create.
      operations:
      - method: POST
        name: createcompany
        description: Create company
        call: schematic-companies.createcompany
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/companies/delete
      name: companies-delete
      description: REST surface for companies-delete.
      operations:
      - method: POST
        name: deletecompanybykeys
        description: Delete company by keys
        call: schematic-companies.deletecompanybykeys
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/companies/lookup
      name: companies-lookup
      description: REST surface for companies-lookup.
      operations:
      - method: GET
        name: lookupcompany
        description: Lookup company
        call: schematic-companies.lookupcompany
        with:
          keys: rest.keys
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/companies/{company-id}
      name: companies-company-id
      description: REST surface for companies-company_id.
      operations:
      - method: GET
        name: getcompany
        description: Get company
        call: schematic-companies.getcompany
        with:
          company_id: rest.company_id
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deletecompany
        description: Delete company
        call: schematic-companies.deletecompany
        with:
          company_id: rest.company_id
          cancel_subscription: rest.cancel_subscription
          prorate: rest.prorate
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/company-memberships
      name: company-memberships
      description: REST surface for company-memberships.
      operations:
      - method: GET
        name: listcompanymemberships
        description: List company memberships
        call: schematic-companies.listcompanymemberships
        with:
          company_id: rest.company_id
          user_id: rest.user_id
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: getorcreatecompanymembership
        description: Get or create company membership
        call: schematic-companies.getorcreatecompanymembership
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/

# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/schematic/refs/heads/main/capabilities/schematic-companies.yaml