Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the Swagger Internal Transfer request - OpenAPI 3.0, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fmypuma.net%2Fmypuma" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fmypuma.net%2Fmypuma" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with Swagger Internal Transfer request - OpenAPI 3.0 API.
Exchange a client_id and client_secret for a bearer access_token with its expires_in value through POST /auth/token
Submit a batch of internal transfer requests, each tying an so_number and article to a factory_code, through POST /chatbot/internal-transfer
Record who changed a transfer with the updated_by email and updated_at date on each item
Read field-level validation errors keyed by path, such as payload.0.season, to fix a rejected batch
GET STARTED
Patterns agents use Swagger Internal Transfer request - OpenAPI 3.0 API for, with concrete tasks.
★ Agent-submitted factory transfers through Jentic
A sourcing coordinator asks an agent, connected through Jentic, to move several sales order lines to a different factory. The agent builds one array item per line with so_number, article, season, factory_code, purchase_requisition, request_id, and the coordinator's updated_by email, then submits the batch in a single call and reports the status and message from the response.
Call POST /chatbot/internal-transfer with an array containing one item: request_id='2945245', purchase_requisition='3004718909', season='202611', article='406887 05', so_number='0123296842', factory_code='FCNRF', updated_at='2026-11-09', updated_by='coordinator@example.com'
Fixing a rejected transfer batch
When a batch fails, the service returns HTTP 422 with an error and a details array, where each entry names the failing field by path, such as payload.1.factory_code, and gives a readable message. An agent reads those paths, corrects the matching items, for example padding a season to six digits ending in 11 or 21, and resubmits only once the batch is clean.
Submit the batch to POST /chatbot/internal-transfer, and on a 422 response read each details[].field and details[].error, correct the named items, and resubmit
Token handling for the sourcing service
Calls to the transfer endpoint carry a bearer access token. The token operation takes a client_id and client_secret and returns an access_token with token_type Bearer and an expires_in value, which the caller reuses until it expires instead of requesting a new token for every batch.
Call POST /auth/token with client_id and client_secret, store access_token and expires_in, and use the token on POST /chatbot/internal-transfer until it expires
2 endpoints — the puma internal transfer request api submits batches of internal transfer requests to puma's sourcing automation service, moving a sales order line to a factory.
METHOD
PATH
DESCRIPTION
/chatbot/internal-transfer
Submit internal transfer requests
/auth/token
Request an access token
/chatbot/internal-transfer
Submit internal transfer requests
/auth/token
Request an access token
What agents get from Jentic-routed access to this vendor.
Setup
Wiring this API by hand means exchanging a client_id and client_secret for a bearer token, tracking expires_in, choosing the production or staging host, and matching the season, article, and so_number patterns. Through Jentic you install once, import it from the API Directory, store the client credentials once, and your agent calls it.
Permission scoping
This API carries the sales order and factory inside the request body, so rules bound which operations your agent may call, not which factory or order. Limit the agent to the operations it needs, such as submitting transfer requests.
Credential isolation
Your PUMA client secret and bearer token are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'submit an internal transfer request' or 'move a sales order to a factory', and Jentic returns the matching operation with its input schema so the agent calls the right endpoint without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using Swagger Internal Transfer request - OpenAPI 3.0 API through Jentic.
What authentication does the PUMA Internal Transfer Request API use?
Per its OpenAPI spec, the API declares a JWT bearer scheme, sent as Authorization: Bearer. POST /auth/token takes a client_id and client_secret in the request body and returns an access_token, a token_type of Bearer, and expires_in. Through Jentic, the client secret and token are stored once by your own Jentic One instance and injected at call time.
What does each internal transfer request contain?
POST /chatbot/internal-transfer takes an array, so one call can carry several requests. Each item has request_id, purchase_requisition, season, article, so_number, factory_code, updated_at, and updated_by. The spec patterns require season to be six digits, so_number to be digits only, and article to end in a space and two digits, as in 406887 05, and updated_by must be an email address.
What happens when a transfer request fails validation?
The service returns HTTP 422 with an error string and a details array. Each detail gives a field path such as payload.0.so_number and a message, for example that the season must end in 11 for spring or 21 for autumn, or that factory_code must be a non-empty string.
What are the rate limits for the PUMA Internal Transfer Request API?
The OpenAPI spec does not specify rate limits. It lists a production host at sourcing-automation.pdss.mypuma.net and a staging host at sourcing-automation.pdssstage.mypuma.net; test batches against staging and check with the PUMA sourcing team that issued your client credentials for current limits.
How do I submit a transfer request through Jentic?
Install Jentic One with `curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh`, import the API from the API Directory, and store your client credentials once. Your agent searches for 'submit an internal transfer request', gets the transfer operation with its input schema, and calls POST /chatbot/internal-transfer with the batch. To run it on your own infrastructure, install Jentic One from its GitHub repo.
Can I limit what my agent is allowed to do with the PUMA Internal Transfer Request API?
Yes. A rule can allow POST /chatbot/internal-transfer and leave out POST /auth/token, so your Jentic One instance handles the token and the agent only submits transfers. Because the factory and sales order travel in the request body, a rule cannot restrict which factory_code the agent sends.
Know of an official OpenAPI document? Contribute it →
For Agents
Submit validated batches of PUMA internal transfer requests that move a sales order article to a factory code, after exchanging client credentials for a bearer token.
Use for: Submit an internal transfer for sales order 0123296842 to factory FCNRF, Request an access token for the sourcing automation service, Send a batch of transfer requests for the spring season, Check why a transfer batch failed validation
Not supported: Does not create or look up sales orders, track shipments, or report stock levels. Use for submitting PUMA internal transfer requests only.
The PUMA Internal Transfer Request API submits batches of internal transfer requests to PUMA's sourcing automation service, moving a sales order line to a factory. Each request in the array carries a request_id, purchase_requisition, season, article, so_number, factory_code, updated_at, and updated_by. The service validates every item and returns field-level errors, such as an so_number that is not all digits or a season that does not end in 11 for spring or 21 for autumn. A separate token operation exchanges a client_id and client_secret for a bearer access token.
This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.
Base layer of spec validity and structural soundness.
Aggregated quality score from linter diagnostics, weighted by severity.
Percentage of `$ref` references that resolve successfully.
Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).
Structural correctness score based on schema issues using logarithmic dampening.
Clarity, completeness, and ingestion readiness for developers and tooling.
How richly the API is illustrated with examples.
Percentage of examples that conform to their schemas.
Percentage of operations with complete response definitions (success, client error, server error).
Health of API ingestion, bundling, and resolution within Jentic pipelines.
Semantic breadth, depth, and agent comprehension for AI systems.
Coverage of descriptions across API elements.
Coverage of RFC 9457 Problem Details for error responses.
Coverage, uniqueness, and casing consistency of operationIds for AI inference.
Coverage of summaries across operations/tags/info.
Functional utility, complexity comfort, and AI orchestration readiness.
Agent comfort level based on API operational and structural complexity.
Trust, risk posture, and security compliance.
Average quality of security schemes based on authentication method strength (weakest link for OAuth2).
Findability, semantic richness, and reasoning readiness.
Clarity and depth of descriptions across API elements.
Score it yourself
Every API in the directory is allowlisted, so you can re-score it with no key required.
npx @jentic/api-scorecard-cli score <openapi-url>