{"openapi":"3.0.3","info":{"title":"OpenFile API","version":"1.0.0","description":"Form companies and file trademarks: check names, prepare the filing and follow it. The owner signs every filing themselves."},"servers":[{"url":"https://api.joinopenfile.com/v1"}],"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","description":"What went wrong.","required":["code","message"],"properties":{"code":{"type":"string","enum":["invalid_request","not_found","conflict","rate_limited","upstream_unavailable","offline","internal_error"],"description":"Stable, safe to branch on."},"message":{"type":"string","description":"Plain English. Safe to show the person."},"param":{"type":"string","description":"The input that caused it, when there is one."},"retry_after":{"type":"integer","description":"Seconds to wait. Present on `rate_limited`."}}}}},"Mark":{"type":"object","properties":{"wordmark":{"type":"string","description":"The mark as recorded."},"owner":{"type":"string","description":"The current owner, as the USPTO lists it.","nullable":true},"classes":{"type":"array","items":{"type":"string"},"description":"Nice classes, like `009`."},"registered":{"type":"boolean","description":"True once registered. False while pending."},"serial":{"type":"string","description":"USPTO serial number.","nullable":true},"registration":{"type":"string","description":"USPTO registration number.","nullable":true},"status":{"type":"string","description":"The USPTO's status text.","nullable":true},"url":{"type":"string","description":"The USPTO's record page."}}},"ClassEntry":{"type":"object","properties":{"number":{"type":"integer","description":"Nice class number, 1 to 45."},"title":{"type":"string","description":"Short name for the class."},"wording":{"type":"string","description":"Goods and services wording. Any `[blank]` must be filled in before filing."},"blanks":{"type":"array","items":{"type":"string"},"description":"The blanks in `wording`."}}},"ClassSuggestion":{"allOf":[{"$ref":"#/components/schemas/ClassEntry"},{"type":"object","properties":{"why":{"type":"string","description":"Why this class fits.","nullable":true}}}]},"Quote":{"type":"object","properties":{"object":{"type":"string","enum":["quote"],"description":"Always `quote`."},"currency":{"type":"string","description":"Always `usd`."},"classes":{"type":"integer","description":"Classes priced."},"lines":{"type":"array","description":"Every fee, one line each.","items":{"type":"object","properties":{"label":{"type":"string","description":"What the fee is."},"amount":{"type":"integer","description":"In dollars."},"government":{"type":"boolean","description":"True when it goes to the USPTO."}}}},"total":{"type":"integer","description":"Sum of `lines`, in dollars."}}},"ApplicationInput":{"type":"object","description":"Every field is optional, so an application can be built up as the person answers. Send only what the person told you or confirmed.","properties":{"mark":{"type":"string","description":"The name, slogan or wording to protect, exactly as the person wants it.","maxLength":120},"kind":{"type":"string","enum":["name","slogan","logo"],"description":"What the mark is. A logo is filed as words first."},"description":{"type":"string","description":"What's sold under the mark, in the person's words.","maxLength":2000},"website":{"type":"string","description":"The brand's website.","maxLength":300},"classes":{"type":"array","description":"The classes to file in, 1 to 10.","items":{"type":"object","required":["number","wording"],"properties":{"number":{"type":"integer","description":"Nice class number, 1 to 45.","minimum":1,"maximum":45},"wording":{"type":"string","description":"Goods and services wording, with every `[blank]` filled in.","maxLength":2000}}}},"owner":{"type":"object","description":"Who will own the mark. On an update, only the fields you send change.","properties":{"type":{"type":"string","enum":["individual","llc","corporation","partnership"],"description":"The owner's legal form."},"name":{"type":"string","description":"The owner's exact legal name.","maxLength":200},"citizenship":{"type":"string","description":"Individual owners: citizenship.","maxLength":100},"state_of_organization":{"type":"string","description":"Company owners: the state it was formed in.","maxLength":100},"street":{"type":"string","description":"Street address where the owner lives or is based. Not a PO box.","maxLength":200},"city":{"type":"string","description":"City.","maxLength":100},"state":{"type":"string","description":"State.","maxLength":100},"zip":{"type":"string","description":"5-digit ZIP code.","maxLength":10},"email":{"type":"string","description":"Where we reach the owner about this application.","maxLength":200}}},"basis":{"type":"string","enum":["use","itu"],"description":"`use`: already selling under the mark. `itu`: planning to, with a real intent."},"first_use":{"type":"string","description":"With `use`: first used anywhere, as `YYYY-MM` or `YYYY-MM-DD`."},"first_use_in_commerce":{"type":"string","description":"With `use`: first sold across state lines, as `YYYY-MM` or `YYYY-MM-DD`."}}},"Filing":{"type":"object","properties":{"id":{"type":"string","description":"Filing id."},"object":{"type":"string","enum":["filing"],"description":"Always `filing`."},"status":{"type":"string","enum":["received","changes","approved","filed","declined"],"description":"Where the filing is."},"status_label":{"type":"string","description":"The status in plain words."},"note":{"type":"string","description":"From the attorney, when the status is `changes` or `declined`."},"mark":{"type":"string","description":"The mark."},"owner":{"type":"string","description":"The owner."},"basis":{"type":"string","enum":["use","itu"],"description":"Filing basis."},"classes":{"type":"array","items":{"type":"object"},"description":"The classes filed."},"has_specimen":{"type":"boolean","description":"True once a specimen is attached."},"signed_by":{"type":"string","description":"Who signed."},"paid":{"type":"boolean","description":"True once payment is recorded."},"serial":{"type":"string","description":"USPTO serial number, once filed.","nullable":true},"filed_at":{"type":"string","description":"When it was filed.","nullable":true},"uspto_url":{"type":"string","description":"The USPTO's record, once filed.","nullable":true},"status_url":{"type":"string","description":"The customer's status link. It contains the token."},"created_at":{"type":"string","description":"When it was signed."}}},"Application":{"type":"object","properties":{"id":{"type":"string","description":"Application id."},"object":{"type":"string","enum":["application"],"description":"Always `application`."},"status":{"type":"string","enum":["draft","signed","expired"],"description":"`draft`: waiting for the owner. `signed`: the owner signed and it went to the attorney. `expired`: 30 days passed unsigned."},"ready":{"type":"boolean","description":"True when nothing is missing and the owner can sign."},"issues":{"type":"array","description":"What's missing, each with the field and what to ask.","items":{"type":"object","properties":{"field":{"type":"string","description":"The input."},"message":{"type":"string","description":"What to ask or fix."}}}},"review_url":{"type":"string","description":"Send this to the owner: it opens the application for them to check and sign. Contains the token.","nullable":true},"token":{"type":"string","description":"Only on create. Keep it: reads and updates need it."},"application":{"$ref":"#/components/schemas/ApplicationInput"},"quote":{"$ref":"#/components/schemas/Quote"},"checks":{"type":"array","description":"Refusal grounds this mark may run into. Empty when none came up.","items":{"type":"object","properties":{"title":{"type":"string","description":"The ground."},"status":{"type":"string","enum":["warn","fail"],"description":"How serious."},"detail":{"type":"string","description":"Why.","nullable":true}}}},"filing":{"allOf":[{"$ref":"#/components/schemas/Filing"}],"nullable":true,"description":"Once signed: the filing, with its own `token`."},"created_at":{"type":"string","description":"When it was created."},"updated_at":{"type":"string","description":"When it last changed."},"expires_at":{"type":"string","description":"When an unsigned draft expires.","nullable":true}}}},"securitySchemes":{"bearerToken":{"type":"http","scheme":"bearer","description":"The token for one formation, order, application or filing."}}},"paths":{"/plan":{"get":{"operationId":"planTask","tags":["Plan"],"summary":"Plan a task","description":"The questions behind anything a person does here, the rules that apply and what only the person can do. Call it with no `task` for the list. Changes nothing.","parameters":[{"name":"task","in":"query","description":"A task key, or the person's own words, like `renew my trademark`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/pricing":{"get":{"operationId":"getPricing","tags":["Pricing"],"summary":"Get pricing","description":"Formation packages, the trademark package and USPTO fees.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/quotes":{"post":{"operationId":"createQuote","tags":["Pricing"],"summary":"Quote an application","description":"Every fee for a set of choices, with the government's marked. Saves nothing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["classes"],"properties":{"classes":{"type":"integer","description":"How many classes.","minimum":1,"maximum":10},"free_form_classes":{"type":"integer","description":"How many of them use wording outside the class list, which costs a USPTO surcharge.","minimum":0,"maximum":10}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Quote"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/classes":{"get":{"operationId":"listClasses","tags":["Classes"],"summary":"List classes","description":"The classes small businesses file in most, with wording modelled on the USPTO ID Manual.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"],"description":"Always `list`."},"data":{"type":"array","items":{"$ref":"#/components/schemas/ClassEntry"},"description":"The results."}}}}}}}}},"/classes/suggest":{"post":{"operationId":"suggestClasses","tags":["Classes"],"summary":"Suggest classes","description":"Classes and goods and services wording from a plain description of the business. Confirm them with the person.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["description"],"properties":{"description":{"type":"string","description":"What's sold under the brand.","maxLength":1200},"mark":{"type":"string","description":"The mark, if known.","maxLength":200}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string","enum":["list"],"description":"Always `list`."},"data":{"type":"array","items":{"$ref":"#/components/schemas/ClassSuggestion"},"description":"The results."}}}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/marks/screen":{"post":{"operationId":"screenMark","tags":["Marks"],"summary":"Screen a mark","description":"Checks a mark against the refusal grounds examiners raise most often: descriptive, generic, surname, place names, famous brands. Doesn't see other people's marks.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["mark"],"properties":{"mark":{"type":"string","description":"The mark.","maxLength":120},"description":{"type":"string","description":"What's sold under it.","maxLength":2000}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/marks/search":{"post":{"operationId":"searchMarks","tags":["Marks"],"summary":"Search USPTO records","description":"Live federal marks with the same name, split into the person's classes and elsewhere, or every mark an owner holds. `checked: true` means the USPTO answered. A failed search returns an error, never an empty result.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mark":{"type":"string","description":"The name to search. Leave it out to list an owner's marks.","maxLength":80},"classes":{"type":"array","items":{"type":"integer"},"description":"Nice classes to sort results by."},"owner":{"type":"string","description":"The applicant, to set their own marks apart. On its own, lists their marks.","maxLength":120}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The USPTO or a website didn't answer. Nothing was checked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/marks/alternatives":{"post":{"operationId":"suggestAlternatives","tags":["Marks"],"summary":"Suggest alternative marks","description":"Names that keep the idea of a risky mark. Each one has passed the refusal screen and a USPTO search.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["mark"],"properties":{"mark":{"type":"string","description":"The mark that's likely to be refused.","maxLength":120},"description":{"type":"string","description":"What's sold under it.","maxLength":2000},"classes":{"type":"array","items":{"type":"integer"},"description":"Nice classes to search."},"reasons":{"type":"array","items":{"type":"string"},"description":"Why it's likely to be refused."}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The USPTO or a website didn't answer. Nothing was checked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/check":{"post":{"operationId":"checkSite","tags":["Sites"],"summary":"Check a company's trademarks","description":"From a website or app store link: the brand, its legal owner, and which USPTO marks are theirs or someone else's.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["site"],"properties":{"site":{"type":"string","description":"A website, or an App Store or Google Play link.","maxLength":300},"brand":{"type":"string","description":"Use this brand instead of the one read from the site.","maxLength":200},"owner":{"type":"string","description":"Use this owner instead of the one read from the site.","maxLength":200}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The USPTO or a website didn't answer. Nothing was checked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sites/read":{"post":{"operationId":"readSite","tags":["Sites"],"summary":"Read a website","description":"What a site says about the owner, address and what's sold, each with the quote it came from. Treat every value as a suggestion for the person to confirm.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["site"],"properties":{"site":{"type":"string","description":"A website, or an App Store or Google Play link.","maxLength":300}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/docs/search":{"get":{"operationId":"searchDocs","tags":["Docs"],"summary":"Search the docs","description":"The best sections for a question, with a link to each. Read a whole page with `GET /docs/read`.","parameters":[{"name":"q","in":"query","required":true,"description":"What to look for, like `registered agent` or `how do I change an application`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/docs/read":{"get":{"operationId":"readDoc","tags":["Docs"],"summary":"Read a docs page","description":"One docs page as Markdown.","parameters":[{"name":"slug","in":"query","description":"The page, like `quickstart` or `api/create-formation`. Leave it out for the overview.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/filing-types":{"get":{"operationId":"listFilingTypes","tags":["Filing types"],"summary":"List filing types","description":"Everything that can be filed for a mark: when it's due, what it costs and whether it can be started here. Fees are for one class.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/filing-types/{slug}":{"get":{"operationId":"getFilingType","tags":["Filing types"],"summary":"Get a filing type","description":"One filing, with its fees for a number of classes. `availability: not_open` means nothing can be placed for it yet.","parameters":[{"name":"slug","in":"path","required":true,"description":"The filing, like `statement-of-use`.","schema":{"type":"string"}},{"name":"classes","in":"query","description":"Classes to price, 1 to 10.","schema":{"type":"integer"}},{"name":"package","in":"query","description":"Send `standard` if we filed the mark, which includes office-action replies.","schema":{"type":"string","enum":["standard"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/applications":{"post":{"operationId":"createApplication","tags":["Applications"],"summary":"Create an application","description":"Saves a draft and returns `review_url` for the owner, who checks it and signs. Nothing goes to the attorney or the USPTO until they do. A draft can be partial: `issues` lists what's left. Drafts expire after 30 days.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationInput"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/applications/{id}":{"get":{"operationId":"getApplication","tags":["Applications"],"summary":"Get an application","description":"The draft, what's missing, and the filing once the owner has signed.","security":[{"bearerToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Application id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateApplication","tags":["Applications"],"summary":"Update an application","description":"Changes the fields you send. Fails once the owner has signed.","security":[{"bearerToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Application id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplicationInput"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Application"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Not allowed in this state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/filings/{id}":{"get":{"operationId":"getFiling","tags":["Filings"],"summary":"Get a filing","description":"A signed application's status. The id and token are in the customer's status link, and on the application once signed.","security":[{"bearerToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Filing id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Filing"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/states":{"get":{"operationId":"listStates","tags":["Formation"],"summary":"List states","description":"Every state with its LLC and corporation filing fees. `fee_verified` false means an estimate.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/states/{code}":{"get":{"operationId":"getState","tags":["Formation"],"summary":"Get a state","description":"A state's filing fees, annual report, accepted company name endings and publication rules.","parameters":[{"name":"code","in":"path","required":true,"description":"Two-letter state code, like `WY`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/services":{"get":{"operationId":"listServices","tags":["Formation"],"summary":"List add-ons","description":"Everything sold besides the formation packages, with prices, which can go on a formation, and which the owner orders from their dashboard.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/formations/quote":{"post":{"operationId":"quoteFormation","tags":["Formation"],"summary":"Quote a formation","description":"Every fee for a formation, with the state's marked. Needs `entity`, `state` and `package`. Saves nothing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"type":"string","enum":["llc","corp","scorp","nonprofit"],"description":"The kind of company."},"state":{"type":"string","description":"The state to form in, two letters."},"name":{"type":"string","description":"The company name, without LLC or Inc.","maxLength":150},"designator":{"type":"string","description":"The ending, like `LLC`. `get_state` lists what the state accepts."},"backup_name":{"type":"string","description":"A second choice, used if the state won't take the first.","maxLength":150},"purpose":{"type":"string","description":"The business purpose. A nonprofit must state a specific one."},"management":{"type":"string","enum":["member","manager"],"description":"LLCs only: run by its members or by managers."},"shares":{"type":"string","description":"Corporations only: authorized shares, digits only."},"par_value":{"type":"string","description":"Corporations only: par value in dollars. Empty for no par."},"package":{"type":"string","enum":["basic","pro","premium"],"description":"The package."},"ein":{"type":"boolean","description":"Basic only: add the EIN. Pro and Premium include it."},"agreement":{"type":"boolean","description":"Basic only: add the operating agreement or bylaws. Pro and Premium include them."},"expedite":{"type":"boolean","description":"Pay the state for faster processing, where it offers that."},"members":{"type":"integer","description":"LLC members, in states that charge per member.","minimum":1,"maximum":100},"county":{"type":"string","description":"County, where publication depends on it."},"add_ons":{"type":"array","items":{"type":"string"},"description":"Add-on ids to include. `list_services` shows which can be added. Recurring ones can't: only the owner can start those."},"contact":{"type":"object","description":"Who to reach about the order.","properties":{"name":{"type":"string","description":"Full name."},"email":{"type":"string","description":"Email address."},"phone":{"type":"string","description":"Phone number."}}},"principal":{"type":"object","description":"The company's principal address. The owner can also add it when they review the order.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}},"owners":{"type":"array","description":"An LLC's members or a corporation's directors. The owner can also add these when they review the order.","items":{"type":"object","properties":{"name":{"type":"string","description":"Legal name."},"ownership":{"type":"string","description":"Percent owned, digits only."},"address":{"type":"object","description":"A street address.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}}}}},"registered_agent":{"type":"object","description":"The registered agent the owner named.","properties":{"name":{"type":"string","description":"The agent's name."},"address":{"type":"object","description":"A street address.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}}}}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/formations":{"post":{"operationId":"createFormation","tags":["Formation"],"summary":"Create a formation","description":"Saves a draft company formation and returns `review_url` for the owner, who checks it and signs the authorization. Nothing is filed or charged until they do. Every field is optional; `issues` lists what's left.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"type":"string","enum":["llc","corp","scorp","nonprofit"],"description":"The kind of company."},"state":{"type":"string","description":"The state to form in, two letters."},"name":{"type":"string","description":"The company name, without LLC or Inc.","maxLength":150},"designator":{"type":"string","description":"The ending, like `LLC`. `get_state` lists what the state accepts."},"backup_name":{"type":"string","description":"A second choice, used if the state won't take the first.","maxLength":150},"purpose":{"type":"string","description":"The business purpose. A nonprofit must state a specific one."},"management":{"type":"string","enum":["member","manager"],"description":"LLCs only: run by its members or by managers."},"shares":{"type":"string","description":"Corporations only: authorized shares, digits only."},"par_value":{"type":"string","description":"Corporations only: par value in dollars. Empty for no par."},"package":{"type":"string","enum":["basic","pro","premium"],"description":"The package."},"ein":{"type":"boolean","description":"Basic only: add the EIN. Pro and Premium include it."},"agreement":{"type":"boolean","description":"Basic only: add the operating agreement or bylaws. Pro and Premium include them."},"expedite":{"type":"boolean","description":"Pay the state for faster processing, where it offers that."},"members":{"type":"integer","description":"LLC members, in states that charge per member.","minimum":1,"maximum":100},"county":{"type":"string","description":"County, where publication depends on it."},"add_ons":{"type":"array","items":{"type":"string"},"description":"Add-on ids to include. `list_services` shows which can be added. Recurring ones can't: only the owner can start those."},"contact":{"type":"object","description":"Who to reach about the order.","properties":{"name":{"type":"string","description":"Full name."},"email":{"type":"string","description":"Email address."},"phone":{"type":"string","description":"Phone number."}}},"principal":{"type":"object","description":"The company's principal address. The owner can also add it when they review the order.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}},"owners":{"type":"array","description":"An LLC's members or a corporation's directors. The owner can also add these when they review the order.","items":{"type":"object","properties":{"name":{"type":"string","description":"Legal name."},"ownership":{"type":"string","description":"Percent owned, digits only."},"address":{"type":"object","description":"A street address.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}}}}},"registered_agent":{"type":"object","description":"The registered agent the owner named.","properties":{"name":{"type":"string","description":"The agent's name."},"address":{"type":"object","description":"A street address.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}}}}}}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/formations/{id}":{"get":{"operationId":"getFormation","tags":["Formation"],"summary":"Get a formation","description":"A draft, what's still missing, and the order once the owner has signed.","security":[{"bearerToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Formation id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"updateFormation","tags":["Formation"],"summary":"Update a formation","description":"Changes the fields you send on a draft. Fails once the owner has signed.","security":[{"bearerToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Formation id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"type":"string","enum":["llc","corp","scorp","nonprofit"],"description":"The kind of company."},"state":{"type":"string","description":"The state to form in, two letters."},"name":{"type":"string","description":"The company name, without LLC or Inc.","maxLength":150},"designator":{"type":"string","description":"The ending, like `LLC`. `get_state` lists what the state accepts."},"backup_name":{"type":"string","description":"A second choice, used if the state won't take the first.","maxLength":150},"purpose":{"type":"string","description":"The business purpose. A nonprofit must state a specific one."},"management":{"type":"string","enum":["member","manager"],"description":"LLCs only: run by its members or by managers."},"shares":{"type":"string","description":"Corporations only: authorized shares, digits only."},"par_value":{"type":"string","description":"Corporations only: par value in dollars. Empty for no par."},"package":{"type":"string","enum":["basic","pro","premium"],"description":"The package."},"ein":{"type":"boolean","description":"Basic only: add the EIN. Pro and Premium include it."},"agreement":{"type":"boolean","description":"Basic only: add the operating agreement or bylaws. Pro and Premium include them."},"expedite":{"type":"boolean","description":"Pay the state for faster processing, where it offers that."},"members":{"type":"integer","description":"LLC members, in states that charge per member.","minimum":1,"maximum":100},"county":{"type":"string","description":"County, where publication depends on it."},"add_ons":{"type":"array","items":{"type":"string"},"description":"Add-on ids to include. `list_services` shows which can be added. Recurring ones can't: only the owner can start those."},"contact":{"type":"object","description":"Who to reach about the order.","properties":{"name":{"type":"string","description":"Full name."},"email":{"type":"string","description":"Email address."},"phone":{"type":"string","description":"Phone number."}}},"principal":{"type":"object","description":"The company's principal address. The owner can also add it when they review the order.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}},"owners":{"type":"array","description":"An LLC's members or a corporation's directors. The owner can also add these when they review the order.","items":{"type":"object","properties":{"name":{"type":"string","description":"Legal name."},"ownership":{"type":"string","description":"Percent owned, digits only."},"address":{"type":"object","description":"A street address.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}}}}},"registered_agent":{"type":"object","description":"The registered agent the owner named.","properties":{"name":{"type":"string","description":"The agent's name."},"address":{"type":"object","description":"A street address.","properties":{"street":{"type":"string","description":"Street."},"city":{"type":"string","description":"City."},"state":{"type":"string","description":"Two-letter state."},"zip":{"type":"string","description":"ZIP code."}}}}}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Not allowed in this state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/orders/{id}":{"get":{"operationId":"getOrder","tags":["Formation"],"summary":"Get an order","description":"A signed formation's status, what the owner still has to do, and the state file number once formed.","security":[{"bearerToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Order id.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/filings/{id}/specimen":{"post":{"operationId":"addSpecimen","tags":["Filings"],"summary":"Add a specimen","description":"Adds or replaces the photo or screenshot showing the mark in use, until the attorney has filed. If the attorney asked for a change, this sends the filing back for review.","security":[{"bearerToken":[]}],"parameters":[{"name":"id","in":"path","required":true,"description":"Filing id.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["content_base64","content_type"],"properties":{"content_base64":{"type":"string","description":"The image, base64 encoded. 3 MB at most."},"content_type":{"type":"string","enum":["image/png","image/jpeg","image/webp"],"description":"The image type."},"name":{"type":"string","description":"The file name.","maxLength":200}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Filing"}}}},"400":{"description":"Invalid input.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found, or the token is wrong.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Not allowed in this state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}