{"openapi":"3.1.0","info":{"title":"Sertifier (BYOK) API","version":"0.1.0","description":"Sertifier (BYOK) lets an AI assistant read your own Sertifier data through the Sertifier API with a key you supply (Sertifier organization secret key). Read-only: 8 tools (test_authentication, search_credential_details, get_credential_detail, search_campaigns, get_campaign, get_design, search_email_templates, search_attributes). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-sertifier.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-sertifier/docs"},"termsOfService":"https://connectorbay.com/byok-sertifier/terms"},"servers":[{"url":"https://byok-sertifier.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-sertifier/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/test_authentication":{"post":{"operationId":"test_authentication","summary":"Check that the secret key is accepted by Sertifier; returns a short welcome message when it is. Use for \"Is my Sertifier","description":"Check that the secret key is accepted by Sertifier; returns a short welcome message when it is. Use for \"Is my Sertifier API key working\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"test_authenticationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_credential_details":{"post":{"operationId":"search_credential_details","summary":"List the certificate and badge programs (Details) of the organization with title, description, duration, level, skills, ","description":"List the certificate and badge programs (Details) of the organization with title, description, duration, level, skills, attendee count and rating. Page with start_index and length. Use for \"Which certificate programs do we have in Sertifier\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to look for in the titles.","title":"Search Term"},"start_index":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based index of the first result, for paging.","title":"Start Index"},"length":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Length"}},"title":"search_credential_detailsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_credential_detail":{"post":{"operationId":"get_credential_detail","summary":"Get one certificate or badge program (Detail): title, description, duration, cost, level, skills, expiry rule and earnin","description":"Get one certificate or badge program (Detail): title, description, duration, cost, level, skills, expiry rule and earning criteria. Use for \"Show the details of Sertifier program d-1001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"detail_id":{"description":"Id of the Detail (from search_credential_details).","maxLength":200,"title":"Detail Id","type":"string"}},"required":["detail_id"],"title":"get_credential_detailArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_campaigns":{"post":{"operationId":"search_campaigns","summary":"List credential campaigns (the batches in which credentials are issued) with status, linked program, design and email te","description":"List credential campaigns (the batches in which credentials are issued) with status, linked program, design and email template. Page with start_index and length. Use for \"What Sertifier campaigns are there and which are drafts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to look for in the titles.","title":"Search Term"},"start_index":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based index of the first result, for paging.","title":"Start Index"},"length":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Length"}},"title":"search_campaignsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_campaign":{"post":{"operationId":"get_campaign","summary":"Get one campaign by id: status (0 none, 1 draft, 2 scheduled, 3 sent), linked program, design, badge and email template,","description":"Get one campaign by id: status (0 none, 1 draft, 2 scheduled, 3 sent), linked program, design, badge and email template, sender name and subject. Use for \"What are the settings of Sertifier campaign c-2001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign_id":{"description":"Id of the campaign (from search_campaigns).","maxLength":200,"title":"Campaign Id","type":"string"}},"required":["campaign_id"],"title":"get_campaignArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_design":{"post":{"operationId":"get_design","summary":"Get one certificate or badge design by id: title, type (1 certificate, 2 badge) and creation date. The HTML preview is n","description":"Get one certificate or badge design by id: title, type (1 certificate, 2 badge) and creation date. The HTML preview is not returned. Use for \"What kind of design is Sertifier design g-3001\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"design_id":{"description":"Id of the design (a Design id is shown in a campaign).","maxLength":200,"title":"Design Id","type":"string"}},"required":["design_id"],"title":"get_designArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_email_templates":{"post":{"operationId":"search_email_templates","summary":"List the email templates used to deliver credentials: id, title and creation date. Page with start_index and length. Use","description":"List the email templates used to deliver credentials: id, title and creation date. Page with start_index and length. Use for \"Which email templates do we use for Sertifier credentials\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to look for in the titles.","title":"Search Term"},"start_index":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based index of the first result, for paging.","title":"Start Index"},"length":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Length"}},"title":"search_email_templatesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_attributes":{"post":{"operationId":"search_attributes","summary":"List the custom attributes (extra fields printed on credentials) with id, title, display format and type (1 text, 2 date","description":"List the custom attributes (extra fields printed on credentials) with id, title, display format and type (1 text, 2 date, 3 number). Page with start_index and length. Use for \"What custom attributes can appear on our Sertifier certificates\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search_term":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to look for in the titles.","title":"Search Term"},"start_index":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Zero-based index of the first result, for paging.","title":"Start Index"},"length":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Length"}},"title":"search_attributesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}